用于查看音频输入级别的文本模式工具

用于查看音频输入级别的文本模式工具

当使用 Audacity 监控音频输入(麦克风或线路输入)时,我可以看到当前的输入级别。

如何监控输入并在文本控制台中查看级别?

答案1

使用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

答案2

您可以使用sox。以 Pulseaudio 和我的网络摄像头作为源的示例:

sox -S -t pulseaudio alsa_input.usb-046d_0809_23E942AD-02.analog-mono -n stats

也适用于 ALSA 设备,您可以指定默认设备等。man sox详细信息请参见。用于pactl list short sourcesPulseaudio 源列表。

相关内容