我想写一个能够存储声音模式的程序,例如火车口哨,号角(哔哔声)......通过麦克风听声音......然后在听到了声音。我知道一个小蟒蛇,很久以前在VB编程。主要是我是Oracle,PLSQL的人。该程序将需要一个适度的用户界面。
解决此问题的最佳解决方案组合(语言,第三方附加组件等)是什么?
答案 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项目,尽管有许多其他免费的光谱图包。