我试图在几个mp3(音频文件)中找到单词之间的间隔时间 在进一步讨论之前,让我解释一下我的音频文件如下:
我让我的受试者在60秒内产生尽可能多的动物名字。我录了他们的演讲。 因此,所有mp3文件都是动物名称的序列。 (单词,不是连续判刑)
首先,我只需输入以下内容即可阅读其中一个文件并制作图表:
plot(data);
图表如下:
我认为一些当地的最大值是动物命名的候选者。但是,我无法弄清楚并获得动物名称之间的(可能确切的)间隔时间。 只是峰值到峰值还可以吗?或计算单词间隔的任何其他选择? 谢谢:)
答案 0 :(得分:1)
峰值到峰值是对人声段之间的静音段的非常粗略的估计。 @vsoch建议的阈值方法也不总是合适的,因为声音片段也包含低值和零值。
提取静音段的传统方法是比较不同段上的能量。您需要将信号分成大约30 ms的段(确切的样本数取决于采样率)。您最好在段之间重叠大约10 ms。
对于每个细分,评估能量。这可以通过sum(segment.^2)
(psaudocode ...)来完成。然后绘制你已经获得的能量,看看并选择将声音和静音片段分开的阈值。
答案 1 :(得分:0)
您想使用findpeaks
[pks,locs] = findpeaks(data)
你可以找到那个方向的局部最大值,左右移动直到它下降到某个阈值或某个百分比(因为峰有一些周长),然后对它们进行排序,然后计算它们之间的距离作为减法值之间。