2010-09-17 47 views
1

是否可以比较两个声音? 例如应用程序已经声音文件的MP3或任何格式,是可以比较的应用程序内部的任何静态的声音文件,录制的声音?比较声音在App

任何意见都欢迎。

问候

+0

你是指_compare_?你的意思是他们是相同还是你的意思是他们是相似的,即相同的长度,相同的音量? – deanWombourne 2010-09-17 12:11:29

+0

其实我想检查一下相似度,比如一个声音文件包含“hello”声音,我想比较一下男人或女人录制的录制的“hello”。 – fyasar 2010-09-17 12:26:06

+0

嗨fyasa,最后你是否解决了关于如何比较iOS中的两种声音的问题?你有什么关于这方面的提示吗? – doxsi 2012-11-16 11:34:03

回答

2

这个论坛线程有一个很好的答案(约三下) - http://www.dsprelated.com/showmessage/103820/1.php

诀窍是从mp3获取解码音频 - 如果它们只是短'你好'的声音,我会将它们作为wav存储在应用程序中,而不是解码它们(尽管我从未使用CoreAudio或任何其他的框架之前,如此MP3解码到内存可能很容易)。

当你有你的参考WAV和录制的WAV,按照上述在后的步骤:

1做任何必要将文件转换.WAV他们离散时间 信号:

http://www.sonicspot.com/guide/wavefiles.html

2时间扭曲或可能取决于两个采样率之间的差异 可能没有必要:

http://en.wikipedia.org/wiki/Dynamic_time_warping

3时间扭曲后,截断两个信号,使其持续时间为 等效。

4计算归一化的能量谱从DFT的两个信号密度(ESD):

http://en.wikipedia.org/wiki/Power_spectrum

6计算两个 信号的归一化的ESD的之间的平均平方误差(MSE):

http://en.wikipedia.org/wiki/Mean_squared_error

归一化的ESD的两个 信号之间的MSE是 亲近良好度量。如果你说有10个文件,其中2个近似是 相同,但其他的不是,这两个近距离的 应该有一个相对较低的MSE 。两个完美 相同的信号显然具有零 MSE。理想情况下,两个“当量” 信号以不同的时间尺度, (20秒的人交谈与 5秒金花鼠),不同能量 (软说话人VERUS叫喊 金花鼠),以及不同的相位 (取样开始在 即时连续时间 输入);应该还是有一个零, MSE但 固有的量化误差DSP将产生MSE稍大 大于零。

http://en.wikipedia.org/wiki/Minimum_mean-square_error

你应该得到两个不同的MSE值,一个你阳 - >录制的音轨之间以及雌性 - >录制的音轨之间的一个。与最低差异的比较可能是正确的性别。

我承认,我从来没有试过这样做,它看起来很难 - 祝你好运!

+0

Dean非常感谢你为这些钥匙。至少我会尝试,如果我创造了一些东西,我会在这里举例。 – fyasar 2010-09-18 11:17:44