我已经计算了两个音频文件的 MFCC,并将 DTW 应用于这两个文件的两组系数。现在,这两个文件中的每一对都由一个值描述(由 DTW 计算)。我们称这个值为 Diff。
如果音频文件差异更大,则 Diff 更大,这很好。(所以 Diff 与音频信号之间的差异成正比 - 太棒了!)。
我的问题是 Diff 似乎也与文件的长度成正比(?)。因此,对于两个相似的长音频信号,Diff 可能大于对于两个不同的短信号。
首先我认为,当 DTW 计算两个数组的最短路径时,最终值应该与两个数组的长度成正比(即每个信号的帧数)。所以我尝试将它除以产品和两个长度的平均值,但结果令人沮丧(对于一些差异不大的文件来说太大了,对于其他文件来说太小了)。
然后我认为,如果它与文件的长度成正比,那么将其除以平均帧数(在其中我将两个信号分开以计算 MFCC)就可以解决问题……但事实并非如此。 ..
最后,我认为,由于 MFCC 是从 FFT 的结果计算出来的,最终的 DTW 结果可能与 FFT 幅度的总和成正比,所以我尝试将它除以这个总和(频谱元素的总和,由FFT 算法)。再一次,结果不是我希望的那样......
现在我没有想法...... DTW结果取决于什么,它与什么成正比?
编辑:在 pichenettes 建议尝试文件长度的几何平均值之后,这里有一些值:
- 同样的声音。avgLengths = 106000. Diff = 409. Diff / avgLengths = 38
同样的声音。avgLengths = 191000. Diff = 609. Diff / avgLengths = 31
不同的声音。avgLengths = 80000. Diff = 437. Diff / avgLengths = 55
- 不同的声音。avgLengths = 193000. Diff = 692. Diff / avgLengths = 35
38 > 35 :(
(来自 2. 和 4. 的声音几乎相似,来自 1. 和 3. 的声音也是如此。在 1. 一个文件的尾随静音稍长)