编写一个识别声音并执行动作的程序

时间:2009-05-08 15:29:23

标签: audio

我想写一个能够存储声音模式的程序,例如火车口哨,号角(哔哔声)......通过麦克风听声音..​​....然后在听到了声音。我知道一个小蟒蛇,很久以前在VB编程。主要是我是Oracle,PLSQL的人。该程序将需要一个适度的用户界面。

解决此问题的最佳解决方案组合(语言,第三方附加组件等)是什么?

4 个答案:

答案 0 :(得分:3)

我的猜测是,在这种情况下,阻力最小的路径是将第三方音频识别库与高级语言(例如Java或其他.NET语言,如C#或VB)结合使用。 NET)。

您可以先从Digital Sound Processing和音频识别领域进行一些研究。

当您找到具有您感兴趣功能的库或框架,并使用您选择的语言进行绑定时,请开始使用它。

请参阅MARF(一个Java库),也许微软在这个领域的工作与System.Speech.Recognition命名空间(如果我没记错的话,已经与新的Windows操作系统集成)

编辑 - 桌面与网络游戏

在您收到的有关使用Flash或Silverlight的评论中,您的解决方案既可以在桌面上也可以在网络上使用。

首先,我想指出Flash和Silverlight实际上都在客户端计算机上运行。不同之处在于它们在Web浏览器的上下文中运行,并且用户不必安装应用程序。否则它们与桌面应用程序没什么不同,用户显然必须为其浏览器安装Flash of Silverlight插件。

如果这是您所追求的(即用户无需安装您的应用程序),那么您可以查看Flash,Silverlight或Java Web Start。实际上JAVA Web Start可能是一个很好的候选者,因为你可以利用MARF framework

但是,如果您决定使用Flash,Silverlight或Java Web Start,则可能需要处理一些安全问题,因为访问客户端系统资源必然需要一些特权,即大多数“基于Web的应用程序”通常不需要。

答案 1 :(得分:2)

Sphinx是一种语音识别系统。它可能会被修改甚至训练成以您期望的方式工作。

答案 2 :(得分:1)

如果您正在聆听特定的喇叭或火车哨声录音,程序事先知道,那么如果声音充分独特,您将能够可靠地检测并区分它们

对节目之前没有听过的新声音进行分类(听起来像喇叭,或者像火车哨声等)是一个更难的问题。

在任何一种情况下,声音识别算法通常会查看录制声音的频谱(参见Miky D关于数字声音处理的链接),并对此数据执行一些pattern recognition,而不是录制的波形本身

对于语言和第三方库,请选择能够让您轻松获取录制的音频数据的内容。 Java在这方面似乎很好(另请参阅Java机器学习算法WEKA)。虽然有语音和音乐分析的程序/库,我不知道为任意声音设计的,所以你可能最终必须自己编写分析算法。

答案 3 :(得分:0)

我所知道的大多数算法使用spectrogram(即光谱与时间)来区分声音。根据光谱图的不同,可以估算出这个问题有多难。

声音的一个方面可能使它们更容易与语音区分开来,它们可能具有清晰的谐波结构(即看起来更像小提琴而不是维基百科链接中的声音)。这种谐波结构在区分声音方面非常有用,可能对您的问题有所帮助。这让人联想到另一个地方:有很多工作可以区分具有清晰谐波结构的鸟类歌曲,以及许多已发布的算法,但我不知道可以扩展到您需求的免费软件。尽管如此,使用鸟鸣分析软件来查看您的声音文件可能会很有用。例如,参见Raven项目,尽管有许多其他免费的光谱图包。