2

如何在 wav 文件中跟踪没有声音的部分?

我想开发的一个小软件是分割一个wav文件,它以一个没有体积的区域为分割点。

程序如何知道 wav 文件的体积很小?我将使用 Java 或 MFC。

4

3 回答 3

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 低于某个阈值,您可以认为它是静默的。

于 2009-11-27T11:30:19.077 回答
3

好吧,wave 文件基本上是一个值列表,它表示以某种速率(通常为 44100 Hz)离散划分的声波。沉默基本上是当值接近 0 时。只需设置一些阈值并寻找值低于该阈值的连续(比如说 100 毫秒长度)区域。

于 2009-11-27T11:20:12.857 回答
0

简单的静音检测是通过顺序将声音块与某个值(根据记录质量选择)进行比较来完成的。

就像是:

abs(track[position]) < 0.1

或者

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

如果我们假设块是 [-1, 1] 浮点数。

如果声音被标准化,效果会更好。

于 2009-11-27T11:20:28.537 回答