使用sounddevice或pyaudio记录/处理和播放应用程序声音

时间:2018-11-17 20:25:46

标签: python audio alsa pyaudio python-sounddevice

我正在一个项目中,我想捕获内部播放(任何应用程序的声音输出),对其进行记录/处理,然后将其播放回扬声器。我以为实现此目的的理想方法是将输出音频路由到虚拟输入设备(麦克风),以便从sounddevice或pyaudio(我想用来处理和输出音频)中看到它。我看过几篇使用插孔,脉冲音频,alsa回送模块等的文章,以实现此目的(例如this onethis one),但是我看不到虚拟的从pyaudio或sounddevice列出的麦克风,无法从中录音。有人能在最后一步帮助我吗?我正在使用Ubuntu 16.04。

编辑:以下是更多详细信息-

按照here中的说明,我已经加载了alsa snd_loop模块,可以通过执行以下操作查看卡:

arecord -l

但是,编辑/etc/pulse/default.pa文件使其包含load-module module-alsa-sink device=hw:2,1(我的回送卡为#2)会在pavucontrol中产生以下内容:

pavucontrol output devices

pavucontrol input devices

在输入侧显示只有回送监视器正在主动捕获声音。例如,从sounddevice看设备列表,我看到

  python2 -m sounddevice
  0 HDA Intel PCH: ALC3234 Alt Analog (hw:0,2), ALSA (2 in, 0 out)
  1 HDA Intel PCH: HDMI 0 (hw:0,3), ALSA (0 in, 8 out)
  2 HDA Intel PCH: HDMI 1 (hw:0,7), ALSA (0 in, 8 out)
  3 HDA Intel PCH: HDMI 2 (hw:0,8), ALSA (0 in, 8 out)
  4 Loopback: PCM (hw:2,0), ALSA (2 in, 32 out)
  5 Loopback: PCM (hw:2,1), ALSA (32 in, 32 out)
  6 hdmi, ALSA (0 in, 8 out)
  7 pulse, ALSA (32 in, 32 out)
* 8 default, ALSA (32 in, 32 out)

在环回设备不允许我将其记录为输入的地方。如何使它显示为输入麦克风?

0 个答案:

没有答案