使用 sox 和 multimon-ng 实时检测麦克风中的 DTMF 代码

问题描述

我想从实时音频流中检测 DTMF 音调。 我能够录制现场音频并使用 sox 将其存储到波形文件中:

sox -b 16 -e signed-integer -c 1 -d -t wavpcm tt.wav

我还可以使用 multimon-ng 检测音调:

multimon-ng -t wav -a DTMF tt.wav 

但是当我连接两者时它不起作用:

sox -b 16 -e signed-integer -c 1 -d -t wavpcm - | multimon-ng -t wav -a DTMF -

请帮助我完成此流程 - 现场录制音频 + 检测 DTMF 音 + 打印字符代码

解决方法

我还没有尝试过,但我想到的是使用命名管道

mkfifo ~/fifo

sox -b 16 -e signed-integer -c 1 -d -t wavpcm ~/fifo &

multimon-ng -t wav -a DTMF ~/fifo

貌似之前也有类似的解决方法:

Stream audio from named pipe