【2020华为云AI实战营】利用Librosa和noisereduce进行语音降噪
【摘要】 实战营第八章课程实践中,我们已经学习了语音识别领域的常见任务,并使用Librosa工具绘制音频的波形图、频谱图和MFCC特征图,作业里更是要求使用Librosa工具对音频文件进行变声处理。Librosa功能强大,这里我们来学习一下如何配合noisereduce工具进行语音降噪。首先我们准备一段清晰的音频文件,见附件a.wav或者b.wavdata, rate = librosa.load(t...
实战营第八章课程实践中,我们已经学习了语音识别领域的常见任务,并使用Librosa工具绘制音频的波形图、频谱图和MFCC特征图,作业里更是要求使用Librosa工具对音频文件进行变声处理。
Librosa功能强大,这里我们来学习一下如何配合noisereduce工具进行语音降噪。
首先我们准备一段清晰的音频文件,见附件a.wav或者b.wav
data, rate = librosa.load(test1, sr=None) IPython.display.Audio(data=data, rate=rate)
plot一下振幅是这样的
接下去我们加入一段噪音
# add noise from noisereduce.generate_noise import band_limited_noise noise_len = 2 # seconds noise = band_limited_noise(min_freq = 2000, max_freq = 12000, samples=len(data), samplerate=rate)*10 noise_clip = noise[:rate*noise_len] audio_clip_band_limited = data+noise
noise_clip噪音音频:
添加了噪音的音频:
我们再来尝试一下去掉噪音
# remove noise noise_reduced = nr.reduce_noise(audio_clip=audio_clip_band_limited, noise_clip=noise_clip, prop_decrease=1.0, verbose=True)
大家可以看到最后一张recovered spectrogram,降噪效果不错。
接下去我们来试试一段真实录制的咖啡馆的噪音
加入到刚才无噪的音频中
snr = 2 # signal to noise ratio noise_clip = noise_data/snr audio_clip_cafe = data + noise_clip
如果这里报错,只要简单处理一下data[:200542]就可以了
operands could not be broadcast together with shapes (221174,) (200542,)
可以明显看到讲话时候的振幅,降噪处理结果
处理后为
可以看到中间降噪效果明显,但一开始由于原音频没有振幅,噪音也被默认添加进去了,最好的处理办法就是在原音频上只剪辑振幅较大的片段。
以上均在cpu上完成,那如果gpu速度上是否会有提升呢?
noise_reduced = nr.reduce_noise(audio_clip=audio_clip_cafe.astype('float32'), noise_clip=noise_clip.astype('float32'), use_tensorflow=True, verbose=False)
# compare longer clips # make a longer clip by repeating the same clip a few times longer_clip = np.concatenate([audio_clip_cafe.astype('float32') for i in range(100)]) print("Clip is {} seconds long.".format(round(len(longer_clip)/rate)))
将100段Clip拼接进行比较
这里我们用%%timeit
non-tensorflow 15.7 s ± 12.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) tensorflow 9.29 s ± 27.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
可见gpu还是有明显提升的。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)