如何在.wav文件中跟踪无声区域?

3

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

我想要开发一个小型软件,将wav文件划分为若干段,并且将没有声音的区域视为划分点。

程序如何判断wav文件的音量是否低? 我会使用Java或MFC进行开发。

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

3

一个波形文件基本上是一个值列表,这些值代表着一个被离散分割的声波,通常以一定速率(一般为44100 Hz)进行。当值接近0时,就表示静音。只需设置阈值并查找连续的区域(假设长度为100ms),其中值低于该阈值即可。


0

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

类似于:

abs(track[position]) < 0.1

或者

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

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

如果声音被归一化,它会更好地工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接