如何監控麥克風音量?
我找到了一個對我不起作用的解決方案:
音頻 - 在 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 腳本中的過濾器。試試 eghighpass 100
,它會過濾掉除初始跳轉之外的大部分內容。如果過濾掉直流分量太費力,您也可以忽略初始部分,直接使用剩餘部分。