我使用以下脚本来监控我的麦克风:
while true; do
printf "$(AUDIODEV=hw:2,0 rec -n stat trim 0 1 2>&1 |
awk 'BEGIN { ORS="" } /^Maximum amplitude/ { print "Max. amplitude: "$3}
/^Rough\s+frequency/ { print " Frequency: "$3}
/^Maximum\s+delta/ { print " Max. delta: "$3}')\r";
done
它记录一个 1 秒长的段,从标准输出中提取值Maximum amplitude
并打印出来。Rough frequency
sox
如果片段的数量或频率大于特定阈值,我可以将片段保存到文件吗?我知道我可以保存每个段然后分析它,但是写操作会太多,我想避免。
与此同时,我找到了解决方案。它基于管道输出
rec
tobase64
以便可以将其编码为 ASCII 并存储在 bash 变量中。如果是时候分析片段的音量和频率,我会base --decode
在可变内容上运行。在下面的脚本中,仅分析卷。如果超过阈值(0.6)handleExcess
,则调用该段并保存该段。我还将片段长度增加到 5 秒。