如何在Java中实现语音活动检测?

3
我需要在Java中实现语音活动检测算法,以便我知道何时开始和/或停止记录音频。 我正在寻找一个可以将byte [],目标数据线或音频文件作为输入的算法。 另外,最好不要使用外部依赖项的解决方案。

语音活动检测与检测静默非常不同。最好不要检测到背景噪音。 - Skylion
虽然问题陈述了“检测静默”,但我展示的方法检测声音是否超过/低于任何设定的限制。如果背景噪音在“低”之外的任何地方,声音将很难听到。如果是低的,则我概述的技术将检测到它,并带有适当的限制。还注意到您提出了关于音高转换的问题。检测声音级别比音高转换容易一个数量级。如果您无法解决此问题,那么实现音高转换的可能性微乎其微。 - Andrew Thompson
我已经实现了那段代码。我想了解关于音高转换或其他算法的信息,以进一步改进我的代码。 - Skylion
1个回答

4
请看TarsosDSP,它是目前处理音频检测的最好的开源Java库。它完全用Java编写,并提供以下功能:
声音检测
音高检测
打击乐器检测
音频时间拉伸
音高变换
IIR滤波器

请查看官方论文手册以更好地掌握该主题。

实际上我自己使用TarosDSP作为指导来实现了这个,但我从未更新过答案,不过既然你挖出来了,你就应该得到采纳的答案。 - Skylion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接