当使用 Audacity 监控音频输入(麦克风或线路输入)时,我可以看到当前的输入级别。
如何监控输入并在文本控制台中查看级别?
答案1
使用arecord
andsox
命令,您可以记录 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
答案2
您可以使用sox
。以 Pulseaudio 和我的网络摄像头作为源的示例:
sox -S -t pulseaudio alsa_input.usb-046d_0809_23E942AD-02.analog-mono -n stats
也适用于 ALSA 设备,您可以指定默认设备等。man sox
详细信息请参见。用于pactl list short sources
Pulseaudio 源列表。