我想用麦克风录制超声波,分频并听转置的声音。我从普通麦克风开始进行测试。
到目前为止,我已经尝试过 sox 和 rec 以及 play 了。它可以工作,但延迟为 2 秒。
rec -r 48000 -c 1 -t wav - pitch -1000 | play -t wav -
我该如何改进这条线路并减少延迟?
我的音频设置是
# API: ALSA v: k6.1.27-gentoo status: kernel-api
# Server-1: PulseAudio v: 16.1 status: active
答案1
对于您选择的参数化,在数学上不可能在大量输入经过之前为您提供输出。
由于音调变换(==分频)需要重采样滤波器和时间拉伸滤波器,因此很直观地认为这些滤波器具有群延迟,因此,由于因果关系,输入信号和输出信号之间会产生显着的延迟。这不是sox
问题——只是数学的计算结果而已。
解决方案包括:
- 使用不太剧烈的转变
- 使用明显更高的输入采样率
- 不要进行音调变换(==分频),而是进行其他操作,例如频率转换
Linux/Unix/工具知识在这里无法帮助你。
问题实际上是您试图以输出采样率进行较大的音调变化;由于出于奈奎斯特的原因,您的超声波记录仪必须已经以更高的采样率工作,因此在您的实际应用中也许不会以这种形式出现此问题。