如何在matlab中用xcorr找到两个信号之间的相似性

时间:2014-04-12 14:38:15

标签: matlab speech

我正在编写语音识别代码。我有一个 n 数据库,每个数据库包含不同人员记录的相同数量的单词。

我想在xcorr之间进行,例如,参考词"你好"用#34;你好"中的所有单词db和" door"中的所有单词db然后代码必须告诉我它是哪个单词。我需要做一些数学模型才能做出决定。

现在,我知道同一个词之间的自相关具有对称图。但如果我比较一下这个词"你好"一位男性用同一个词说,一个女性说的是不对称的,如果我比较一下这个词,我就会得到同样的结果"你好"用#34;门"。

我的问题是:如何找到执行xcorr功能的两个单词之间的相似之处?我是否需要找到xcorr的滞后或最大值?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

我的问题是:如何找到执行xcorr功能的两个单词之间的相似之处?我是否需要找到xcorr的滞后或最大值?

要测量与单个单词录音的相似度,您需要取最大值,它是一个相似度量

  

但如果我比较一下这个词"你好"一位男性用同一个词说,一个女性说的是不对称的,如果我比较一下这个词,我就会得到同样的结果"你好"用"门"。

要对样本属于哪个类做出最佳决策,您需要比较两个集群的相似性度量:

max(xcorr(sample, hello)) < > max(xcorr(sample, door)

这背后的理论称为贝叶斯最优分类&#34;。

如果你有更多的单词样本,你可以做出更好的决定:

 max_sample(max_lag(xcorr(sample, hello_sample_i)) < > max_sample(max_lag(xcorr(sample, door_sample_i))
  

我正在编写语音识别代码。

语音样本是随时间变化的,xcorr对时间变化不是不变的。更好的衡量标准是语音频谱的DTW距离。您可以在此处找到DTW距离实施:

http://www.ee.columbia.edu/ln/rosa/matlab/dtw/

DTW对时移是不变的,因此您可以做出更可靠的决定。