如何监控麦克风的音量?

ka3ak

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

音频-在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有几个过滤器可以尝试。

您可以使用soxshell脚本中过滤器,而不会出现问题。尝试使用例如highpass 100,它可以过滤掉除初始跳转以外的大部分内容。

如果要过滤掉直流分量太费力,您也可以忽略初始部分,而按原样使用其余部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章