VB实现在一个简得语音比较的算法!
如题!求大哥们帮帮忙!
[解决办法]
........如果你也是"如题",那你的语音比较是比较难做了......
[解决办法]
频率、波形比较。
[解决办法]
“简得语音识别”是什么东东?
[解决办法]
你要比较的是什么,样本是什么,模板是什么?
情况不同,有不同的算法。
一般来说,实时采样的样本,与预存模板比较时难度较大。因为语速、声调、噪音带来很多不定因素。这种情况下,要利用声纹技术提取特征,实行模糊算法。简单不了的。
如果你有预存的几首 MP3 歌曲,要确定是哪一首,会相对简单。
如果仅仅“简单语音比较”,怕是要引用大量文献和研究成果。或者到国外小型的研究机构可以买到技术使用权,如果凑巧,几十万欧元说不定可以拿下。
[解决办法]
那你还不如直接拿二进制文件来比较文件内容更方便了
[解决办法]
我觉得数学基础不好还是不要深究这个东西,好像是用傅立叶积数做。比较波形的相似度首先要将振幅范围处理成一致(对应声音大小),降噪(杂音),通过选取N个取样峰值点协调波速(语速),最后设定一个容差。就可以进行比对了。
最简单的方法是满足:
1,设两段声波S1,S2,分别在S1,S2上选取N1,N2,N3,N4 ……M个峰值点
2,设这两个波的取样点的振幅分别为 S1:L1,L2,L3,L4,L……
S2:l1,l2,l3,l4,L……
设这两个波的取样点的T 轴坐标为 S1:T1,T2,T3,T4,T……
S2: t1,t2,t3,t4,t……
D(X)1表示L1/l1,L2/l2,L3/l3,L4/l4,……的方差
D(X)2表示T1/t1,T2/t2,T3/t3,T4/t4,……的方差
3,如果D(X)1,D(X)2均小于某个阈值,就说明两个声波相似。
这种方法漏洞很多,只是简单举例说明,希望能抛砖引玉,集思广益!
[解决办法]
各种格式的音频文件当然是统一转化为WAV好处理一点。
[解决办法]
应该是对于波形的调整,取样
相关函数可以调用matlab的一些库函数。我记得我做信号强度预测的时候用matlab一些函数挺有用,而且显示的曲线也简单
[解决办法]
应该做特征比对。即使采样的频率、音量和时长比例即使不同,但其比例特征应该差不多。
如采用比例作为特征参数,如波形和波形时长都分析成百分比的特征。
然后即使应用采样的时候采用的频率不一样或速度或音量大小不一样,
但按比例特征进行对比的话,还是可以很容易的识别出来的。
这样存储要对比的就不是实际的什么几个声道或多少波特率的音频数据,
而是数据量不大的特征码。每次需要识别的时候就分析一下采样的数据,
然后和特征码进行比对,然后才产生相应的处理过程。