对来自超声波麦克风的实时音频流进行分频

对来自超声波麦克风的实时音频流进行分频

我想用麦克风录制超声波,分频并听转置的声音。我从普通麦克风开始进行测试。

到目前为止,我已经尝试过 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/工具知识在这里无法帮助你。

问题实际上是您试图以输出采样率进行较大的音调变化;由于出于奈奎斯特的原因,您的超声波记录仪必须已经以更高的采样率工作,因此在您的实际应用中也许不会以这种形式出现此问题。

相关内容