如何用ModelScope训练出一个语音降噪模型?

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: 如何用ModelScope训练出一个语音降噪模型?

什么是语音降噪模型?我们日常可能会碰到一些录音质量不佳的场景。比如,想录制一段干净的语音却发现周围都很吵,录制的语音里往往混杂着噪声。当我们在噪杂的地铁或者巴士上通电话,为了让对方听清楚,不得不提高嗓门和音量。这都是因为环境噪声的影响,使我们在使用语音应用时出现障碍。这是语音通讯中一个普遍存在且又非常棘手的问题。语音质量(quality)和可懂度(intelligibility)容易受到环境噪声、拾音设备、混响及回声的干扰,使通话质量和交流效率大幅降低,如何在嘈杂的环境中保持较高的语音质量和可懂度一直以来是众多企业和学者追求的目标。语音降噪问题通过多年研发积累,已经取得一定的突破,尤其针对复杂环境中的语音降噪问题,通过融入复数域深度学习算法,在性能上获得大幅度的提升,在保障更小语音失真度的情况下,最大限度地消除背景噪声,还原目标语音的清晰度,因而语音降噪模型也通常被叫做语音增强模型。

语音降噪模型能做什么?

语音降噪模型的作用是从污染的语音中提取目标语音,还原目标语音质量和可懂度,同时提升语音识别的效果和性能。我们的语音降噪模型只需要输入单麦克风的录音音频,便能够输出降噪后的干净语音音频,即保持音频的格式不变,仅消除音频中的噪声和混响部分,最大限度地保留原始语音。语音降噪模型是如何工作的?

近期,我们在ModelScope上开放的FRCRN语音降噪-16K模型,是基于频率循环 CRN (FRCRN) 新框架开发出来的。该框架是在卷积编-解码(Convolutional Encoder-Decoder)架构的基础上,通过进一步增加循环层获得的卷积循环编-解码(Convolutional Recurrent Encoder-Decoder)新型架构,可以明显改善卷积核的视野局限性,提升降噪模型对频率维度的特征表达,尤其是在频率长距离相关性表达上获得提升,可以在消除噪声的同时,对语音进行更针对性的辨识和保护。

另外,我们引入前馈序列记忆网络(Feedforward Sequential Memory Network: FSMN)来降低循环网络的复杂性,以及结合复数域网络运算,实现全复数深度网络模型算法,不仅更有效地对长序列语音进行建模,同时对语音的幅度和相位进行同时增强。相关模型在IEEE/INTERSpeech DNS Challenge上有较好的表现。该模型神经网络结构如下图所示。

如何快速体验模型效果?

1.在线体验

您可以在ModelScope官网,降噪模型页面上(复制该链接在浏览器中打开:https://modelscope.cn/models/damo/speech_frcrn_ans_cirm_16k/summary)在线体验模型效果。体验界面在页面右侧,可以在“测试内容”栏内看到我们预先准备的一段很短的音频,点击播放按钮可以试听。也可以直接点击“执行测试”按钮执行降噪处理,生成的新音频会显示在下面“测试结果”栏中,供试听效果。示例音频的处理前后频谱对比如下图。

降噪前语音:ans_input音频:00:0000:04

降噪后语音:

ans_output音频:00:0000:04

您也可以点击“更换音频”按钮,选择上传或录制一段音频来测试。

在ModelScope网站上轻松找到降噪模型和在线体验的过程请看视频:

,时长00:37

2.在Notebook中开发

对于有开发需求的使用者,特别推荐您使用Notebook进行离线处理,具体使用方式请参考视频演示。

,时长01:29

请注意以上操作需要的前提条件:

①注册一个阿里云账号

②注册一个ModelScope网站账号

先登录ModelScope账号,点击模型页面右上角的“在Notebook中打开”按钮出现对话框。首次使用会提示您关联阿里云账号,按提示操作即可。

如果您有多个音频文件要处理,只要循环调用ans对象即可:













from modelscope.pipelines import pipelinefrom modelscope.utils.constant import Tasks
ans = pipeline(    Tasks.acoustic_noise_suppression,    model='damo/speech_frcrn_ans_cirm_16k')
wav_dict = {'/data/input/a1.wav': '/data/output/a1.wav',           '/data/input/a2.wav': '/data/output/a2.wav'} for f1, f2 in wav_dict.items():  result = ans(f1, output_path=f2)

如何训练自有的智能降噪模型?

1.进行模型训练

  • 环境准备

目前降噪模型仅支持Linux系统。如果您想在自己的程序里使用模型推理功能,可以使用ModelScope网站官方提供的Notebook环境,直接使用下面“运行模型”中给出的代码。环境准备完毕后,可以运行以下示例代码进行官方模型的推理验证。











from modelscope.pipelines import pipelinefrom modelscope.utils.constant import Tasks
ans = pipeline(    Tasks.acoustic_noise_suppression,    model='damo/speech_frcrn_ans_cirm_16k')result = ans(    'https://modelscope.oss-cn-beijing.aliyuncs.com/test/audios/speech_with_noise.wav',    output_path='output.wav')
  • 数据准备

魔搭社区默认模型训练音频总时长约1200小时,全部是由程序生成的,大致过程是准备原始的纯净语音和纯噪声音频,由程序混合两种音频模拟出带噪声的语音作为输入数据,而对应的纯净语音作为期望结果,分别保存为16000Hz单通道wav文件。原始音频和数据生成脚本全部来自Deep Noise Suppression (DNS) Challenge 2021。为便于用户使用,相关脚本已经整合进 ModelScope Dataset。用户可以按照数据集页面上的说明,下载数据集脚本,运行donwnload脚本把原始音频下载到本地,再运行生成脚本生成训练所需的数据。数据准备完毕后的目录格式如下图。

  • 模型训练

开始训练之前,请先参照「在Notebook中开发」章节,验证官方模型运行成功,可生成降噪后的音频文件。

①复制官方模型

要训练您自己的降噪模型,首先需要一份官方模型的副本。ModelScope 框架默认把官方模型保存在本地缓存中,可以把本地缓存的模型目录copy一份到您的工作目录。

检查目录./speech_frcrn_ans_cirm_16k,其中的 pytorch_model.bin 就是模型文件。如果想从头开始训练一个全新的模型,请删除掉这里的 pytorch_model.bin,避免程序运行时加载;如果想基于官方模型继续训练则不要删除。




cp -r ~/.cache/modelscope/hub/damo/speech_frcrn_ans_cirm_16k ./cd ./speech_frcrn_ans_cirm_16krm pytorch_model.bin

目录中的configuration.json文件中是模型和训练的配置项,建议用户对代码逻辑非常熟悉以后再尝试修改。

②运行训练代码

以下列出的为训练示例代码,其中有两个地方需要替换成您的本地路径:

a)用您前面下载的本地数据集路径替换

'/your_local_path/ICASSP_2021_DNS_Challenge'

b)用您复制的官方模型路径替换模型路径model='/your_local_path/speech_frcrn_ans_cirm_16k'




































import os
from datasets import load_dataset
from modelscope.metainfo import Trainersfrom modelscope.msdatasets import MsDatasetfrom modelscope.trainers import build_trainerfrom modelscope.utils.audio.audio_utils import to_segment
tmp_dir = './checkpoint'if not os.path.exists(tmp_dir):    os.makedirs(tmp_dir)
hf_ds = load_dataset(    '/your_local_path/ICASSP_2021_DNS_Challenge',    'train',    split='train')mapped_ds = hf_ds.map(    to_segment,    remove_columns=['duration'],    num_proc=8,    batched=True,    batch_size=36)mapped_ds = mapped_ds.train_test_split(test_size=3000)mapped_ds = mapped_ds.shuffle()dataset = MsDataset.from_hf_dataset(mapped_ds)
kwargs = dict(    model='your_local_path/speech_frcrn_ans_cirm_16k',    train_dataset=dataset['train'],    eval_dataset=dataset['test'],    work_dir=tmp_dir)trainer = build_trainer(    Trainers.speech_frcrn_ans_cirm_16k, default_args=kwargs)trainer.train()

训练按照默认配置共200轮,每轮2000个batch,训练出的模型文件会保存在代码中tmp_dir = './checkpoint'指定的目录。目录下还有一个log文件,记录了每个模型的训练和测试loss数据。

2.使用您的模型

从您训练出的模型中选择效果最好的,把模型文件copy到

/your_local_path/speech_frcrn_ans_cirm_16k,重命名为pytorch_model.bin。把以下代码中模型路径 '/your_local_path/speech_frcrn_ans_cirm_16k' 替换为您复制的模型目录,就可以测试您的模型效果了。











from modelscope.pipelines import pipelinefrom modelscope.utils.constant import Tasks
ans = pipeline(    Tasks.acoustic_noise_suppression,    model='/your_local_path/speech_frcrn_ans_cirm_16k')result = ans(    'https://modelscope.oss-cn-beijing.aliyuncs.com/test/audios/speech_with_noise.wav',    output_path='output.wav')

代码中的http地址也可以换成您的本地音频文件路径,注意模型支持的音频格式是采样率16000,16bit的单通道wav文件。也可参考「在Notebook中开发」章节进行批量的音频文件处理。

语音降噪模型的典型应用场景

首先是语音识别 (ASR) 场景。用户不管在办公室里 (电脑风扇、通风设备和空调噪声、同事的谈话背景声等),百货商场(人流和脚步声、笑声和交谈声等),还是在车内(汽车引擎噪声、音乐声、风噪等),大街上(车辆噪声、施工噪声等),噪声都以不同的形式存在着,目标语音经常受到附加背景噪声的严重污染,另外,在封闭的环境中,声音的反射也会造成混响污染,如果不预先进行净化处理,会严重损坏语音的感知质量和可理解性,以及降低自动语音识别 (ASR) 性能。

其次是实时语音通信(RTC)场景。会议场景中语音增强的目标是抑制目标说话人语音以外的其他各类环境噪声(比如啸叫,手机铃声,键盘声,背景人声,吃零食声,关门声等)。具体挑战包括音视频会议模型参数量、计算量、和实时性要求高;由于音视频会议的交流性质,对语音的质量和可懂度要求高;语音的噪声环境复杂,噪声类型多样,对模型的泛化能力要求高;说话人和麦克风距离不固定,语音存在大小音量的变化,对模型的辨识能力要求高;根据接入设备不同,存在语音采样率的变化(包含8kHz, 16kHz, 48kHz等),对模型可处理不同频率段的要求高。开发者可以在魔搭社区官方模型的基础上调整模型参数来训练自己的模型应对这些挑战。  

开发者也可以探索智能降噪模型在诸如录音美声、歌曲分离等其他场景中的应用,比如以下示例中的歌曲人声提取。

原始歌曲:

样例3_原始音频:00:0000:15

提取人声:

样例3_提取后音频:00:0000:15



相关链接

ModelScope 降噪模型页面:

https://modelscope.cn/models/damo/speech_frcrn_ans_cirm_16k/summary

智能降噪挑战数据集页面:

https://modelscope.cn/datasets/modelscope/ICASSP_2021_DNS_Challenge/summary

DNS Challenge 官方数据:

https://github.com/microsoft/DNS-Challenge

Anaconda 安装官方文档:

https://docs.anaconda.com/anaconda/install


References:

[1]  T. Gao, J. Du, L. R. Dai, and C. H. Lee, “SNR-based progres- sive learning of deep neural network for speech enhancement,” in Interspeech, 2016.

[2]  T. Gao, J. Du, L. R. Dai, and C. H. Lee, “Densely connected progressive learning for lstm-based speech enhancement,” in IEEE ICASSP, 2018, pp. 5054–5058.

[3]  S. R. Park and J. W. Lee, “A fully convolutional neural network for speech enhancement,” in Interspeech, 2017.

[4]  K. Tan and D. Wang, “A convolutional recurrent neural net- work for real-time speech enhancement,” in Proc. Interspeech, 2018.

[5]  H. Zhao, S. Zarar, I. Tashev, and C.-H. Lee, “Convolutional- recurrent neural networks for speech enhancement,” in IEEE ICASSP, 2018, p. 2401–2405.

[6]  Y.Hu,Y.Liu,S.Lv,M.Xing,S.Zhang,Y.Fu,J.Wu,B.Zhang, and L. Xie, “DCCRN: Deep complex convolution recurrent network for phase-aware speech enhancement,” in Proc. Inter- speech, 2020.

[7]  S. Zhang, M. Lei, Z. Yan, and L. Dai, “Deep-fsmn for large vocabulary continuous speech recognition,” arXiv preprint arXiv:1803.05030, 2018.

相关文章
|
4月前
|
人工智能 开发框架 物联网
赢万元奖金 | 第七届CCF开源创新大赛ModelScope开源模型应用挑战赛开启报名!
第七届CCF开源创新大赛(后简称“大赛”) 由中国计算机学会(CCF)主办,长沙理工大学、CCF开源发展委员会联合承办。
|
6月前
|
人工智能 开发工具 Swift
ModelScope联手OpenDataLab:直接调用7000+开源数据集,赋能AI模型加速研发
魔搭社区和OpenDatalab浦数合作,共同开启一场模型与数据的深度融合,旨在为中国开发者打造更加高效、开放的AI体验。
|
7月前
|
开发框架 API 决策智能
ModelScope-Agent框架再升级!新增一键配置多人聊天,配套开源多智能体数据集和训练
ModelScope-Agent是魔搭社区推出的适配开源大语言模型(LLM)的AI Agent(智能体)开发框架,借助ModelScope-Agent,所有开发者都可基于开源 LLM 搭建属于自己的智能体应用。在最新升级完Assistant API和Tool APIs之后,我们又迎来了多智能体聊天室的升级,通过几分钟快速配置即可搭建一个全新的聊天室。
|
7月前
|
机器学习/深度学习 人工智能 Swift
PAI x ModelScope: 在PAI使用ModelScope模型
在当前的人工智能领域,特别是大语言模型、文生图等领域,基于预训练模型完成机器学习模型的开发部署已成为重要的应用范式,开发者们依赖于这些先进的开源预训练模型,以简化机器学习应用的开发并加速创新。
|
7月前
|
自然语言处理
在ModelScope中,你可以通过设置模型的参数来控制输出的阈值
在ModelScope中,你可以通过设置模型的参数来控制输出的阈值
170 1
|
7月前
|
API 语音技术
ModelScope-FunASR**有支持热词又支持时间戳的模型**。
【2月更文挑战第30天】ModelScope-FunASR**有支持热词又支持时间戳的模型**。
216 2
|
7月前
|
人工智能 API 决策智能
Modelscope结合α-UMi:基于Modelscope的多模型协作Agent
基于单个开源小模型的工具调用Agent,由于模型容量和预训练能力获取的限制,无法在推理和规划、工具调用、回复生成等任务上同时获得比肩大模型等性能。
|
7月前
|
文字识别 并行计算 语音技术
ModelScope问题之下载模型文件报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
848 3
|
7月前
|
数据采集 自然语言处理 搜索推荐
ModelScope问题之模型encoder配置报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
241 0
|
7月前
|
人工智能 达摩院 自然语言处理
超好用的开源模型平台,ModelScope阿里达摩院
超好用的开源模型平台,ModelScope阿里达摩院
486 1

热门文章

最新文章