是否在“音频分析”领域进行了先前的开源工作以检测人声(即尽管有一些背景噪音),确定说话人的性别,可能确定不。发言者,发言者的年龄和发言者的情绪?
我的预感是像CMU Sphinx这样的语音识别软件可能是一个很好的起点,但是如果有更好的东西,它会很棒。
答案 0 :(得分:31)
我是一名从事语音识别研究的研究生。这些是开放的研究问题,不幸的是,我不知道可以开箱即用的开源软件包。
如果您有实施信号处理或机器学习算法的背景知识,您可以尝试使用以下搜索术语查找学术论文:
根据http://cmusphinx.sourceforge.net/sphinx4/doc/Sphinx4-faq.html#speaker_identification,CMU Sphinx可能是领先的开源语音识别器,不支持说话人识别(http://cmusphinx.sourceforge.net/sphinx4/doc/Sphinx4-faq.html#speaker_identification);我怀疑它是否具有上述任何其他功能。
一些学术研究人员在线发布他们的代码,和/或可能愿意与您分享。对Google学术搜索的搜索揭示了许多使用Sphinx撰写硕士或博士论文的人,因此这可能是一个很好的起点。
最后,如果您了解一点信号处理,您可以尝试实现非常粗略的性别识别算法,而无需进入语音识别器本身。基本上,男性和女性的声音基本频率不同 - 根据维基百科(http://en.wikipedia.org/wiki/Voice_frequency),男性声音在85-180Hz之间,而女性声音在165Hz-255Hz之间。您可以使用类似sox
的内容来确定话语的频谱(使用称为快速傅立叶变换的东西),并将语音分类为“男性”或“女性”,具体取决于某些汇总统计信息(如平均频率)(请参阅{ {3}})。为了使其工作稳健(即使用许多扬声器,麦克风或录音环境),您可以做很多事情。我不确定我能否预测需要多少时间和精力来获得70%的准确度,因为这取决于你的任务的性质;我的感觉是,90%+肯定会很难。
答案 1 :(得分:3)
使用CMU Sphinx 4提取低音量信息(例如音高和功率)可能有点困难(尽管旧版本可能具备此功能)。我建议你使用Praat。您可以编写脚本以扬声器的声音提取音高层和每个共振峰。老实说,Praat脚本语言是可怕的,但它很快就会做很多事情,否则需要很长时间。许多Praat脚本也在线发布。请参阅http://www.fon.hum.uva.nl/praat/。
答案 2 :(得分:3)
对于您的语音/非语音分类和分类问题(确定发言人的数量和发言时间):有一个开源工具包可以做到这一点(自动,因此输出中会出现错误)。看看这篇文章: