GNU Radio:使用声音输出作为输入源

GNU Radio: Use sound output as input source

gnuradio-companion 中,我使用音频源块作为下一个块的输入信号。一切正常。唯一的小问题是我从我的麦克风接收信号(这当然是正常行为)。我宁愿直接播放音频信号,而不必通过我的扬声器、房间的空气和麦克风。

所有这些都会产生信号损失并增加噪声。

我知道有文件源块,但这对我来说不是真正的解决方案。

我也知道我可以将一条迷你插孔电缆从声卡的输出端插入到输入端。这也不是解决方案,因为它可能会损坏声卡,并且仍然会增加失真。

目前我正在使用 Ubuntu 和 alsa 作为音频驱动程序。

我知道有像 jaaa 和 xoscope 这样的程序可以做到这一点,所以我认为我要求的并不奇怪。

您将需要构建一个 "monitor" ALSA 设备。

我发现 this ArchLinux wiki page 推荐了以下程序,它也应该适用于 Ubuntu,因为它也使用 PulseAudio:

pactl list|grep monitor

选择正确的监视器字符串,例如alsa_output.pci-0000_00_1b.0.analog-stereo.monitor。然后在您的主目录中创建(如果它不存在)并编辑 .asoundrc

gedit ~/.asoundrc

添加

pcm.pulse_monitor {
  type pulse
  device <device name from above>
}

ctl.pulse_monitor {
  type pulse
  device <device name from above>
}

到那个文件。

现在,使用 pulse_monitor 作为音频源中的设备字符串。对我来说效果很好(在 Fedora 22 上):

编辑:

添加了关于此的 GNU Radio wiki page