最想研究音频对比的实现 一直也找不到资料 例如比较两段录音的相似程度 现在是雾水一头 向有这方的经验的朋友请教了 最好能说得详细一些 或者留下MSN/QQ 万分感谢 全分送上

解决方案 »

  1.   

    这个可以用FFT(Fast Fourier Transform)将time domain的音频转换到Frequency domain,即得到音频的频谱,在比较两者的频谱即可。比如一个人讲话的声音都是有固定的频率范围,不同的人讲话的频率是不同的,FFT就专门可以得到这样的频谱(不同的频率集合),就相当于得到了一个声音的特征值,然后再比较特征值的相似程度。FFT的算法,有现成的,到网上搜搜。
      

  2.   

    貌似要进行傅里叶转换 找到了些资料 看不太懂 研究ING...
      

  3.   

    思路是这样的:
    1. 每个人的发音的频谱不同,和标准发音(老师的发音)有一个相对固定的频率偏移量,如果学生的发音经过FFT变换以后的频谱和老师标准发音的频谱的偏移,大部分重合的话,那么两者相似度就很高,你就可以认为学生的发音对了。2. 在这个基础上,还要考虑到,每个人的语速是不一样的,比如老师的标准发音是5秒中,学生的6秒钟,那么你可以将信号分成比如5等份,即老师的1秒钟对应学生的1.2秒,这样分别做FFT变换,在按照上述方式进行对照即可。3. 在2的基础上,还可以加入ANN(artificial neural network)的内容,主要用在两个频谱对比上。matlab可以帮助你建立神经网络。这个项目,如果没有积分变换和神经网络的基础,还是蛮有难度的,如果有这些基础则不是特别难。楼主身边如果有这样人可以和他多加沟通。希望你的项目顺利!做完这个项目,你会觉得自己大大地进了一步!
      

  4.   

    感谢pathuang68 你的思路的确是一个很好的入手点 我试试看 
    方便的话加我MSN吧 [email protected] 很想跟你聊聊 : )
      

  5.   

    兄弟,Sorry,我很少用MSN。
    我给你找了一个FFT和逆FFT的Java代码:
    1. http://www.cs.princeton.edu/introcs/97data/FFT.java.html2. 另外还给你找了一个FFT在声音处理方面的例子:
    Sound Spectrum JAVA Demo
    该链接中有相关的Java代码下载。Hope these 2 resources would be some help to you. Best wishes!