半小时验证语音降噪—贾扬清邀你体验快捷云上开发 | 《阿里云机器学习PAI-DSW入门指南》

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: 本文将实战讲解贾扬清在回答内部同学提出的业务问题时,给自己设的一个挑战:半小时内架构一个有体感的demo,达到语音降噪的效果。

点击即可参与机器学习PAI-DSW动手实验室

点击可下载完整电子书《阿里云机器学习PAI-DSW入门指南》

语音降噪,在开源领域通过科学计算肯定有现有的解决方案。从业务需求上讲,最有价值的一件事情是,怎么让大家能迅速地做POC,架起解决方案?
本文将实战讲解贾扬清在回答内部同学提出的业务问题时,给自己设的一个挑战:半小时内架构一个有体感的demo,达到语音降噪的效果。

半小时实验达到的语音降噪的效果

首先给大家看一下最终的效果。我录了一个关着吸尘器的时候的语音:

In [2]:

import IPython
IPython.display.Audio('https://notebook-dataset.oss-cn-beijing.aliyuncs.com/noises/normal.wav')

Out[2]:
https://developer.aliyun.com/topic/download?id=826

以及开着吸尘器的时候讲话的语音:
In [3]:

IPython.display.Audio('https://notebook-dataset.oss-cn-beijing.aliyuncs.com/noises/voice_with_noise.wav')

Out[3]:
https://developer.aliyun.com/topic/download?id=827

以及,通过降噪以后,带着吸尘器的那一段音频的降噪效果:
In [4]:

IPython.display.Audio('https://notebook-dataset.oss-cn-beijing.aliyuncs.com/noises/voice_reduced_noise.wav')

Out[4]:
https://developer.aliyun.com/topic/download?id=828

效果怎么样?
在实际业务当中,我们的思路往往不是上来就开始钻研算法,而是按照这样的一个思路:

  • 怎么将业务问题翻译成技术问题?
  • 有没有现有解决方案来测试一下效果?
  • 效果好的话,怎么落地?
  • 效果不好的话,怎么做算法迭代?

今天想展示的就是通过DSW快速解决前两个问题,即如何迅速安装开源的算法包、做数据的可视化、到最后算法效果的测试这整个流程。用现有的平台迅速地验证这些业务问题的效果,是不是一件很有意思的事情呢?

通过DSW快速验证

首先,通过搜索,我们发现有一个github的项目,noisereduce,和我们需要解决的场景很相似。基本上,可以通过两段语音,一段是噪音(做建模),一段是带噪音的语音,来实现降噪的效果。

对于标准的Python算法包,在DSW里面拉起很容易。因为DSW预装了底层的一些科学计算框架,比如说TensorFlow,因此只需要安装新增的这些包的需求:
In [5]:

!pip install noisereduce > /dev/null

我拿iPhone和家里的吸尘器录了几段视频,上传到DSW上面,然后就是大家常见的码代码了:

In [6]:

from matplotlib import pyplot
import io
import noisereduce as nr
import numpy as np
import soundfile as sf
from urllib.request import urlopen
/Users/huanghong/opt/anaconda3/lib/python3.7/site-packages/tqdm/autonotebook.py:17: TqdmExperimentalWarning: Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console) " (e.g. in jupyter console)", TqdmExperimentalWarning)

In [7]:

# 先把音频文件导入进来:
normal_data, normal_rate = sf.read(io.BytesIO(urlopen('https://notebook-dataset.oss-cn-beijing.aliyuncs.com/noises/normal.wav').read()))
noise_data, noise_rate = sf.read(io.BytesIO(urlopen('https://notebook-dataset.oss-cn-beijing.aliyuncs.com/noises/noise.wav').read()))
mixed_data, mixed_rate = sf.read(io.BytesIO(urlopen('https://notebook-dataset.oss-cn-beijing.aliyuncs.com/noises/voice_with_noise.wav').read()))
# iPhone的音频是立体声的,我们只处理一个声道,所以我们先选单声道。
normal_data = np.ascontiguousarray(normal_data[:,0])
noise_data = np.ascontiguousarray(noise_data[:,0])
mixed_data = np.ascontiguousarray(mixed_data[:,0])
rate = normal_rate

我们可以用Notebook的功能来播放这些音频。在开头大家已经听过样例了,这里我们听一下噪声:
In [8]:

IPython.display.Audio(data=noise_data,rate=rate)

Out[8]:
https://developer.aliyun.com/topic/download?id=829

对于噪声文件,我们来截取中间一段作为噪声的建模。先看看,哪段比较合适。

In [9]:

pyplot.plot(noise_data)

Out[9]:
[]
image.png
看来,截取40000到200000的这一段最合适,我们剪一下。

In [10]:

noise_data = noise_data[40000:200000]
pyplot.plot(noise_data)

Out[10]:
[]
image.png

然后,我们就可以直接调用一下noisereduce里面的功能看看结果怎么样。一行代码:

In [11]:

reduced_version = nr.reduce_noise(audio_clip=mixed_data, noise_clip=noise_data)

我们来听一下,降噪之后的语音效果怎么样。

In [12]:

IPython.display.Audio(data=reduced_version,rate=rate)

Out[12]:
https://developer.aliyun.com/topic/download?id=830

再听一下降噪之前的版本。

In [13]:

IPython.display.Audio(data=mixed_data,rate=rate)

Out[13]:
https://developer.aliyun.com/topic/download?id=831

我们可以把降噪之后的版本存下来:

In [14]:

sf.write('voice_reduced_noise.wav', reduced_version, rate)

算法是AI的核心,但是要实现业务,功夫在算法之外。

大家可以看到,在上面的样例当中,其实核心算法很短:首先,有大量的开原算法可以让我们快速验证现有的技术在不同场景当中的价值;其次,很多应用并不一定在第一时间就需要特别高大上的算法。对于关注业务的工程师来说,如何快速做POC,验证可行性,然后从浅到深来把算法落地,做算法创新,实现业务落地,这是我们今天关注的重点。

今天,一切业务都会数据化,一切数据都会业务化。相应的,一切应用就会数据化和智能化。我们对AI的看法可以用英语来做一下类比:几十年前,英语是一种服务,我们雇佣专业的翻译来帮我们做业务;但是今天,英语是一种工具,我们绝大多数人用各种工具来学习英语,使用英语。

这就对平台提出了更高的要求。PAI一直向“最懂你的AI平台”不断努力。DSW(Data Science Workshop)这个产品,目标是给大家一个云上托管的,易用、开放的机器学习和深度学习开发平台,让大家很容易地能够拉起一个典型的开发环境,迅速投入到算法和应用的开发当中。

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
2月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5天前
|
机器学习/深度学习 Python
训练集、测试集与验证集:机器学习模型评估的基石
在机器学习中,数据集通常被划分为训练集、验证集和测试集,以评估模型性能并调整参数。训练集用于拟合模型,验证集用于调整超参数和防止过拟合,测试集则用于评估最终模型性能。本文详细介绍了这三个集合的作用,并通过代码示例展示了如何进行数据集的划分。合理的划分有助于提升模型的泛化能力。
|
5天前
|
机器学习/深度学习 Python
验证集的划分方法:确保机器学习模型泛化能力的关键
本文详细介绍了机器学习中验证集的作用及其划分方法。验证集主要用于评估模型性能和调整超参数,不同于仅用于最终评估的测试集。文中描述了几种常见的划分方法,包括简单划分、交叉验证、时间序列数据划分及分层抽样划分,并提供了Python示例代码。此外,还强调了在划分数据集时应注意随机性、数据分布和多次实验的重要性。合理划分验证集有助于更准确地评估模型性能并进行有效调优。
|
18天前
|
机器学习/深度学习 Kubernetes Docker
机器学习开发的灵药:Docker容器
机器学习开发的灵药:Docker容器
|
19天前
|
人工智能 编解码 算法
使用PAI-DSW x Free Prompt Editing开发个人AIGC绘图小助理
本文介绍如何借助阿里云PAI-DSW及Free Prompt Editing算法开发个性化AIGC绘图助手,实现图像智能编辑与生成。首先需领取PAI-DSW免费试用资源并创建实例;随后通过运行教程文件完成环境搭建。WebUI界面预设了多种参数供调整,如图像分辨率、编辑层数量等,支持更改图像背景与风格等功能演示。完成实验后应及时清理资源以避免额外费用。此外,参与阿里云开发者社区的“AIGC绘图小助手”活动,不仅可获得免费云资源试用,还有机会赢得桌面折叠风扇、小度智能屏X9等礼品。
|
1月前
|
机器学习/深度学习 存储 人工智能
【ACL2024】阿里云人工智能平台PAI多篇论文入选ACL2024
近期,阿里云人工智能平台PAI的多篇论文在ACL2024上入选。论文成果是阿里云与阿里集团安全部、华南理工大学金连文教授团队、华东师范大学何晓丰教授团队共同研发。ACL(国际计算语言学年会)是人工智能自然语言处理领域的顶级国际会议,聚焦于自然语言处理技术在各个应用场景的学术研究。该会议曾推动了预训练语言模型、文本挖掘、对话系统、机器翻译等自然语言处理领域的核心创新,在学术和工业界都有巨大的影响力。此次入选标志着阿里云人工智能平台PAI在自然语言处理和多模态算法、算法框架能力方面研究获得了学术界认可。
|
2月前
|
数据采集 人工智能 自然语言处理
阿里云百炼平台深度体验:智能问答与模型训练的创新之旅
在人工智能的浪潮中,阿里云百炼平台以其强大的大模型开发能力,为企业和个人开发者提供了一站式的解决方案。本文将从知识检索应用搭建、模型训练调优以及流程管理功能三个角度,全面评测阿里云百炼平台的实际使用体验。
207 3
|
2月前
|
JSON Shell API
阿里云PAI-Stable Diffusion开源代码浅析之所有api的入参如何看
阿里云PAI-Stable Diffusion开源代码浅析之所有api的入参如何看
|
25天前
|
机器学习/深度学习 存储 缓存
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
|
1月前
|
机器学习/深度学习 存储 缓存
模型遇见知识图谱问题之参与阿里云机器学习团队的开源社区的问题如何解决
模型遇见知识图谱问题之参与阿里云机器学习团队的开源社区的问题如何解决

相关产品

  • 人工智能平台 PAI