如何通过MATLAB提取mp3(音频)文件中单词之间的间隔时间?

时间:2014-01-20 05:05:17

标签: matlab signal-processing audio-processing

我试图在几个mp3(音频文件)中找到单词之间的间隔时间 在进一步讨论之前,让我解释一下我的音频文件如下:

我让我的受试者在60秒内产生尽可能多的动物名字。我录了他们的演讲。 因此,所有mp3文件都是动物名称的序列。 (单词,不是连续判刑)

首先,我只需输入以下内容即可阅读其中一个文件并制作图表:

plot(data);

图表如下: enter image description here

我认为一些当地的最大值是动物命名的候选者。但是,我无法弄清楚并获得动物名称之间的(可能确切的)间隔时间。 只是峰值到峰值还可以吗?或计算单词间隔的任何其他选择? 谢谢:)

2 个答案:

答案 0 :(得分:1)

峰值到峰值是对人声段之间的静音段的非常粗略的估计。 @vsoch建议的阈值方法也不总是合适的,因为声音片段也包含低值和零值。

提取静音段的传统方法是比较不同段上的能量。您需要将信号分成大约30 ms的段(确切的样本数取决于采样率)。您最好在段之间重叠大约10 ms。

对于每个细分,评估能量。这可以通过sum(segment.^2)(psaudocode ...)来完成。然后绘制你已经获得的能量,看看并选择将声音和静音片段分开的阈值。

答案 1 :(得分:0)

您想使用findpeaks

[pks,locs] = findpeaks(data)

你可以找到那个方向的局部最大值,左右移动直到它下降到某个阈值或某个百分比(因为峰有一些周长),然后对它们进行排序,然后计算它们之间的距离作为减法值之间。