Audio

用於查看音頻輸入電平的文本模式工具

  • May 22, 2020

使用 Audacity 監控音頻輸入(麥克風或線路輸入)時,我可以看到目前的輸入電平。

如何監控輸入並在文本控制台中查看級別?

使用arecordandsox命令,您可以記錄 1 的樣本並測量其電平:

arecord -qd 1 file && sox file -n stat 

這是一個輸出範例:

Samples read:              8000
Length (seconds):      1.000000
Scaled by:         2147483647.0
Maximum amplitude:     0.992188
Minimum amplitude:    -0.992188
Midline amplitude:     0.000000
Mean    norm:          0.093221
Mean    amplitude:    -0.015338
RMS     amplitude:     0.232947
Maximum delta:         0.617188
Minimum delta:         0.000000
Mean    delta:         0.001067
RMS     delta:         0.009643
Rough   frequency:           52
Volume adjustment:        1.008

如果您只對電平/最大振幅感興趣,您可以將結果通過管道傳輸awk 到僅輸出第四行的第二個欄位:

arecord -qd 1 /tmp/rec.waw && sox /tmp/rec.waw -n stat 2>&1 | awk 'BEGIN{FS=":"} NR==4 {print $2}'

如果你想監控它的演變,你可以把這個命令放在一個while循環中:

while :; do
   arecord -qd 1 /tmp/rec.waw && sox /tmp/rec.waw -n stat 2>&1 | awk 'BEGIN{FS=":"} NR==4 {print $2}'
   sleep 1 # repeat every one second
done

輸出:

0.992188
0.023438
0.046875
0.375000
0.523438
0.109375
0.242188

如果您希望輸出以 dB 為單位,您可以使用以下公式計算awk

while :; do
   arecord -qd 1 /tmp/rec.waw && sox /tmp/rec.waw -n stat 2>&1 | awk 'BEGIN{FS=":"} NR==4 {db=20*log($2)/log(10); printf("%0.4f\n",db}'
   sleep 1 # repeat every one second
done

以 dB 為單位的輸出:

-12.6467
-13.4366
-13.2010
-14.4959

引用自:https://unix.stackexchange.com/questions/588261