【发布时间】:2013-12-10 10:55:23
【问题描述】:
所以我有这个 Mono 音频文件,其中包含人们说话、说话暂停然后他们再次说话。在他们说话和不说话的时候,背景中不时有孩子在哭泣,汽车刹车的尖叫声,你在外面时听到的声音。
我的目标是在他们说话时保留这些部分,并在他们不说话时剪掉这些部分。不需要过滤背景噪音。
基本上我的最终目标是有一个这样的切割清单
Start in seconds, End in seconds
我尝试了什么?
- 我通过将所有包含语音的部分组合在一起手动创建了一个纯语音文件。(10 秒)
- 我通过将所有不包含语音的部分组合在一起手动创建了一个纯噪声文件。(50 秒)
- 我通过应用快速傅里叶变换得到了频率 + 幅度
- 我每 100 毫秒浏览一次音频文件并拍摄 FFT 快照
- 我将一个快照的所有值(在我的情况下为 512)放入一个列表中,并将其提供给机器学习算法(numl)和一个标签(在第一种情况下 voice = true,在第二种情况下 voice = false )
- 然后我使用我的主音频文件,基本相同,但这次使用我的机器学习模型的结果来确定它是否是语音,并以秒为单位输出它实现这一点的时间。
我的问题是我得到了很多误报和误报。它似乎在没有声音时识别声音,反之亦然。
这可能是一个训练有素的模型(我使用决策树)还是我需要采取其他措施以获得更好的结果?
【问题讨论】:
-
使用 PCA 分离主扬声器,背景噪音应该可以为您提供更好的数据。
标签: c# c#-4.0 machine-learning c#-3.0 voice-recognition