我的目的是使.wav音频中没有语音的所有部分静音。我目前正在使用webrtcvad,但我所实现的只是从音频中删除非语音部分(example.py代码:https://github.com/wiseman/py-webrtcvad/blob/master/example.py)。如果有人能指点我或告诉我一个如何实现我的目标,我将不胜感激!这听起来也像是一个背景噪声消除问题。
我的目的是使.wav音频中没有语音的所有部分静音。我目前正在使用webrtcvad,但我所实现的只是从音频中删除非语音部分(example.py代码:https://github.com/wiseman/py-webrtcvad/blob/master/example.py)。如果有人能指点我或告诉我一个如何实现我的目标,我将不胜感激!这听起来也像是一个背景噪声消除问题。
1条答案
按热度按时间sg2wtvxw1#
假设您希望WAV输出具有与输入相同的持续时间,只是非语音区域被替换为静音,而语音区域不变。
这样做的方法是将音频信号与检测器的输出相乘。检测器应输出1.0表示通过(语音信号),0.0表示静音(非语音)。
有时候,我们使用一个小值而不是0.0来表示阻塞部分,只是稍微降低音量,而不是使其完全静音。例如0.01(-20dB)。
有时候突然的转变会有点粗糙。在这种情况下,可以应用一点平滑或渐变。一个简单的替代方法是指数移动平均线。
下面是用Python实现的完整示例代码,使用SpeechBrain项目中预训练的vad-crdnn-libriparty模型。
代码也可以在这个Github repo中找到:https://github.com/jonnor/machinehearing/blob/master/handson/voice-activity-detection/supress.py
这里是一个示例图,显示了输入数据、VAD激活/分段和修改后的输出数据。