如何监控麦克风音量?

如何监控麦克风音量?

我找到了一个对我不起作用的解决方案:

音频 - 在Linux中使用命令行工具监控麦克风电平 - 智库101 - 一个基于CC版权的问答分享平台 https://superuser.com/questions/306701/monitoring-the-microphone-level-with-a-command-line-tool-in-linux

问题是他们正在使用最大幅度来检测声音。然而,无论录制的音频仅包含静音还是一些声音,它的价值对我来说始终是相同的。例如:

10秒静默(可以在这里下载:http://denis-aristov.ucoz.com/en/test-mic-silence.wav):

$ arecord -f S16_LE -D hw:2,0 -d 10 /tmp/test-mic-silence.wav

$ sox -t .wav /tmp/test-mic-silence.wav -n stat
Samples read:             80000
Length (seconds):     10.000000
Scaled by:         2147483647.0
Maximum amplitude:     0.999969
Minimum amplitude:    -1.000000
Midline amplitude:    -0.000015
Mean    norm:          0.202792
Mean    amplitude:     0.009146
RMS     amplitude:     0.349978
Maximum delta:         0.913849
Minimum delta:         0.000000
Mean    delta:         0.001061
RMS     delta:         0.005564
Rough   frequency:           20
Volume adjustment:        1.000

10 秒,有一些声音(可以在此处下载:http://denis-aristov.ucoz.com/en/test-mic-sounds.wav):

$ arecord -f S16_LE -D hw:2,0 -d 10 /tmp/test-mic-sounds.wav

$ sox -t .wav /tmp/test-mic-sounds.wav -n stat
Samples read:             80000
Length (seconds):     10.000000
Scaled by:         2147483647.0
Maximum amplitude:     0.999969
Minimum amplitude:    -1.000000
Midline amplitude:    -0.000015
Mean    norm:          0.185012
Mean    amplitude:     0.010225
RMS     amplitude:     0.334286
Maximum delta:         1.999969
Minimum delta:         0.000000
Mean    delta:         0.006213
RMS     delta:         0.057844
Rough   frequency:          220
Volume adjustment:        1.000

有什么不同?用于声音检测的值是什么?或者我是否因为出现问题而必须进行一些设置?

我刚刚使用了另一台计算机(带有内置麦克风的笔记本电脑)。我使用 Windows“录音机”录制了两个 WMA 文件(带声音和不带声音)。使用将它们转换为 WAV 文件audacity并得到以下输出。这次最大振幅不同:

有声音:

$ sox -t .wav /tmp/mic-sounds.wav -n stat
Samples read:            581632
Length (seconds):      6.594467
Scaled by:         2147483647.0
Maximum amplitude:     0.999969
Minimum amplitude:    -1.000000
Midline amplitude:    -0.000015
Mean    norm:          0.013987
Mean    amplitude:     0.000062
RMS     amplitude:     0.065573
Maximum delta:         1.999969
Minimum delta:         0.000000
Mean    delta:         0.011242
RMS     delta:         0.047009
Rough   frequency:         5031
Volume adjustment:        1.000

没有声音:

$ sox -t .wav /tmp/mic-silence.wav -n stat
Samples read:            372736
Length (seconds):      4.226032
Scaled by:         2147483647.0
Maximum amplitude:     0.029022
Minimum amplitude:    -0.029114
Midline amplitude:    -0.000046
Mean    norm:          0.005082
Mean    amplitude:    -0.000053
RMS     amplitude:     0.006480
Maximum delta:         0.030487
Minimum delta:         0.000000
Mean    delta:         0.005815
RMS     delta:         0.007285
Rough   frequency:         7891
Volume adjustment:       34.348

这是否表明另一台计算机上的麦克风存在一些问题?

答案1

(根据各种评论回答,因为这种方法似乎可以接受,并且评论不保证保留。)

在音频编辑器中查看第一个录音(“10 秒的沉默”),例如audacity。当电平从 0 秒时的 1 变为 1 秒时的 -1 到 1.5 秒时的 0.5,然后在接近结束时下降到接近零时,您会看到 DC(极低频)分量。那段时间你有没有插上麦克风?如果是,您需要等待大约。振幅稳定前 10 秒,然后测量。如果不是,则需要滤除直流(直流电,即恒定电压偏移)分量。sox有几个过滤器你可以尝试。

您可以sox毫无问题地使用 shell 脚本中的过滤器。尝试例如highpass 100,过滤掉除初始跳转之外的大部分内容。

如果滤除直流分量太费力,也可以忽略最初的部分,直接使用剩余的部分。

相关内容