24

在“音频分析”领域是否有先前的开源工作来检测人声(比如尽管有一些背景噪音),确定说话者的性别,可能确定否。说话者的年龄、说话者的年龄和说话者的情绪?

我的预感是,像 CMU Sphinx 这样的语音识别软件可能是一个很好的起点,但如果有更好的东西,那就太好了。

4

3 回答 3

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 Scholar 会发现很多人使用 Sphinx 撰写过硕士或博士论文,因此这可能是一个不错的起点。

最后,如果您对信号处理有所了解,您可以尝试实现一个非常粗略的性别识别算法,而无需进入语音识别器本身。基本上,男性和女性声音的基本频率不同 - 根据维基百科(http://en.wikipedia.org/wiki/Voice_frequency),男性声音在 85-180Hz 之间,而女性声音在 165Hz-255Hz 之间。您可以使用诸如sox确定话语的频谱(使用称为快速傅立叶变换的方法)之类的方法,并根据诸如平均频率之类的一些汇总统计数据将语音分类为“男性”或“女性”(请参阅​​ http://classicalconvert. com/tag/sox/)。为了使这项工作更加稳健(即使用许多扬声器、麦克风或录音环境),您可以做很多事情。我不确定我是否可以预测要获得 70% 的准确率需要多少时间和精力,因为这取决于您的任务性质;我的感觉是 90%+ 肯定会非常困难。

祝你好运!

于 2011-03-08T00:57:16.297 回答
3

使用 CMU Sphinx 4 提取低级信息(例如音高和功率)可能有点困难(尽管旧版本可能具有此功能)。我建议你使用Praat。您可以编写脚本来提取演讲者声音中的音高等级和每个共振峰。老实说,Praat 脚本语言很可怕,但它可以快速完成许多原本需要很长时间的事情。许多 Praat 脚本也在网上发布。见http://www.fon.hum.uva.nl/praat/

于 2011-05-06T03:27:13.533 回答
3

对于您的语音/非语音分类和分类问题(确定说话者的数量和说话时间):有一个开源工具包可以做到这一点(自动执行,因此输出中当然会有错误)。看看这个帖子:

关于分类的stackoverflow问题

于 2011-12-02T08:58:11.040 回答