我们有来自我们服务器端进程之一的实时非受控录制的各种wave文件,其中大部分都有清晰的语音。但是,有时它们会出现乱码,有静电,或者语音音量不够大。是否有一种有效的方法可以确定使用C#确定录音质量是否“良好”?
我考虑拍摄已知良好录音的光谱并与不良录音的光谱进行比较,但录音每次都会有不同的语音,所以这可能不起作用。我看过像Bass.Net和NAudio这样的图书馆,但音频处理不是我的专业领域。
我可以尝试比较audio fingerprints,但我不完全确定这是如何工作的。我看到有人试图使用他们的音频指纹哈希和Levenshtein距离算法比较两个音频文件,以找出两个音频文件之间的相似程度。除非类似音频文件之间的音频指纹识别产生的哈希值相似,否则此方法将无效。
我的另一个想法是使用某种语音识别API来尝试处理语音并将音频的抄本写入文本文件。问题是语音识别并不是非常准确,像微软的Speech API这样的API可能仍然会尝试识别语音,即使是在乱码的录音中,也可能是一堆静态的。我看到Nuance有一个SDK版本的语音识别软件,但我还没有机会查看SDK,因为他们似乎没有在他们的网站上提供SDK的试用版。
答案 0 :(得分:0)
您可以使用现有的开源工具来测量嘈杂语音的SNR。有关详细信息,请参阅http://labrosa.ee.columbia.edu/projects/snreval/
我建议你试试WADA SNR
http://www.cs.cmu.edu/~robust/archive/algorithms/WADA_SNR_IS_2008/
这是非常简单的算法,但自己设计它并不容易。
指纹识别和ASR无法确定,因为它们试图消除噪音而不能检测到它。