我找到了对我不起作用的解决方案:
音频-在Linux中使用命令行工具监控麦克风的音量-超级用户 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
这可能表明另一台计算机上的麦克风存在问题吗?
(基于各种注释的答案,因为这种方法似乎可以接受,并且不能保证保留任何注释。)
在音频编辑器(例如)中查看第一个录音(“ 10秒钟的静音”)audacity
。当电平从0秒时的1到1秒时的-1到1.5秒时的0.5,然后在结束时下降到接近零时,您会看到一个DC(非常低频)分量。您在那段时间内插入了麦克风吗?如果是,则需要等待约。在振幅稳定之前10秒钟,然后进行测量。如果不是,则需要以某种方式滤除DC(直流电,即恒定电压偏移)分量。sox
有几个过滤器可以尝试。
您可以使用sox
shell脚本中的过滤器,而不会出现问题。尝试使用例如highpass 100
,它可以过滤掉除初始跳转以外的大部分内容。
如果要过滤掉直流分量太费力,您也可以忽略初始部分,而按原样使用其余部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句