python 中的语音激活密码实施
Voice activated password implementation in python
我想预先录制一个单词,当对 python 脚本说出相同的密码时,如果说出的密码与之前录制的文件相匹配,程序应该 运行。我不想使用语音识别工具包,因为密码可能不是任何正确的词,但可能完全是乱码。我开始将之前录制的文件和新说的声音保存为 numpy 数组。现在我需要一种方法来确定这两个数组是否彼此 'close'。有人可以为此指出正确的方向吗?
无法在样本级别(或时域)与语音样本进行比较。每个部分的口语长度可能会有所不同,因此它们不会匹配,每个部分的级别也会有所不同,等等。另一个问题是声音信号所包含的各个分量的相位也会发生变化,因此听起来相同的两个信号在时域中看起来可能非常不同。因此,最好的解决方案可能是将信号移至频域。一种常见的方法是使用快速傅立叶变换 (FFT)。你可以查一下,网上有很多material,在Python.
中有很好的支持
然后可以这样进行:
将声音样本分成几毫秒的小片段。
求段的FFT主系数
比较部分选定主系数的序列
我想预先录制一个单词,当对 python 脚本说出相同的密码时,如果说出的密码与之前录制的文件相匹配,程序应该 运行。我不想使用语音识别工具包,因为密码可能不是任何正确的词,但可能完全是乱码。我开始将之前录制的文件和新说的声音保存为 numpy 数组。现在我需要一种方法来确定这两个数组是否彼此 'close'。有人可以为此指出正确的方向吗?
无法在样本级别(或时域)与语音样本进行比较。每个部分的口语长度可能会有所不同,因此它们不会匹配,每个部分的级别也会有所不同,等等。另一个问题是声音信号所包含的各个分量的相位也会发生变化,因此听起来相同的两个信号在时域中看起来可能非常不同。因此,最好的解决方案可能是将信号移至频域。一种常见的方法是使用快速傅立叶变换 (FFT)。你可以查一下,网上有很多material,在Python.
中有很好的支持然后可以这样进行:
将声音样本分成几毫秒的小片段。
求段的FFT主系数
比较部分选定主系数的序列