【问题标题】:How can I extract interval time between words in mp3 (audio) file by MATLAB?如何通过 MATLAB 提取 mp3(音频)文件中单词之间的间隔时间?
【发布时间】:2014-02-09 04:28:44
【问题描述】:

我正在尝试查找几个 mp3(音频文件)中单词之间的间隔时间 在继续之前,让我解释一下我的音频文件如下:

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

首先,我阅读其中一个文件并通过键入以下内容制作图表:

plot(data);

图表如下:

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

【问题讨论】:

    标签: matlab signal-processing audio-processing


    【解决方案1】:

    你想使用findpeaks

    [pks,locs] = findpeaks(data)
    

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

    【讨论】:

      【解决方案2】:

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

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

      为每个部分评估能量。这可以通过sum(segment.^2)(伪代码...)来完成。然后绘制你所拥有的能量,查看并选择将声乐段和无声段分开的阈值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多