我想事先记录一个单词,当在python脚本中说出相同的密码时,如果口头密码与先前记录的文件匹配,程序应该运行。我不想使用语音识别工具包,因为密码可能不是任何正确的单词,但可能是完全的胡言乱语。我开始将先前录制的文件和新说出的声音保存为numpy数组。现在我需要一种方法来确定两个数组是否“关闭”。对彼此。有人能指出我正确的方向吗?
答案 0 :(得分:1)
无法与样本级别(或时域)上的语音样本进行比较。口语单词的每个部分的长度可能不同,因此它们不会匹配,每个部分的级别也会变化,等等。另一个问题是声音信号所包含的各个分量的相位也可以改变,因此听起来相同的两个信号在时域中看起来可能非常不同。因此,最好的解决方案是将信号移入频域。一种常见的方法是使用快速傅里叶变换(FFT)。你可以查阅一下,网上有很多关于这方面的资料,并且在Python中对它有很好的支持。
然后可以这样继续:
将声音样本分成几毫秒的小段。
求出段的FFT的主系数。
比较一些选定主系数的序列。