【发布时间】:2018-06-05 21:59:26
【问题描述】:
我正在研究一种通过比较信号和频谱来识别音频单词的解决方案。
为了解码音频,我使用 libavcodec 和 libavformat,并使用 1 个参考词并与其他词进行比较。
示例:
# Must return true
./vrecog --file_ref chocolat.wav --file_cmp chocolat_2.wav
# Must return false
./vrecog --file_ref chocolat.wav --file_cmp banana.wav
我的步骤:
- 我将信号放在 std::vector 中
- 我用Fast Fourier Transform将信号转换成频谱
- 我计算光谱的 [min, max, average, std_deviation, variance]
- 我使用步骤 3 中的值来计算 correlation coefficient
推理是否正确?系数总是接近 1,我不知道我可以用什么来有效地比较数据来表示单词是否相同。
这些是我的情节:
信号(chocolat、chocolat_2 和香蕉):
光谱(巧克力、chocolat_2 和香蕉):
我们可以很容易地看到两个“巧克力”词的信号和频谱似乎很接近,但我无法获得相似度的百分比。
【问题讨论】:
标签: c++ signal-processing fft voice-recognition libav