如何在Wav文件中跟踪无声区?

时间:2009-11-27 11:11:50

标签: java mfc audio wav wave

如何在wav文件中跟踪没有声音的部分? 我想开发的一个小软件是一个wav文件,它认为没有卷区域作为一个重点。 程序怎么知道wav文件的音量很低? 我将使用Java或MFC。

3 个答案:

答案 0 :(得分:8)

通过计算信号的RMS,我在静音检测方面取得了成功。这是通过以下方式完成的(假设您有一个音频样本数组):

    long sumOfSquares = 0;
    for (int i = startindex; i <= endindex; i++) {
        sumOfSquares = sumOfSquares + samples[i] * samples[i];
    }
    int numberOfSamples = endindex - startindex + 1;
    long rms = Math.sqrt(sumOfSquares / (numberOfSamples));

如果rms低于某个阈值,您可以认为它是静默的。

答案 1 :(得分:3)

嗯,波形文件基本上是一个值列表,它代表一个声波,它以一定的速率(通常为44100 Hz)谨慎划分。当值接近0时,沉默基本上是。只需设置一些阈值并查找值低于该阈值的连续(比如说100ms长度)区域。

答案 2 :(得分:0)

通过比较声音块与某些值(根据记录质量选择)来进行简单的静音检测。

类似的东西:

abs(track[position]) < 0.1

(track[position]) < 0.1) && (track[position]) > -0.1)

如果我们假设chunk是[-1,1] float。

如果声音正常化,效果会更好。