我找到了一个对我不起作用的解决方案:
音频 - 在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
,过滤掉除初始跳转之外的大部分内容。
如果滤除直流分量太费力,也可以忽略最初的部分,直接使用剩余的部分。