我正在尝试在运行PulseAudio的Linux设备上获取Python中的音频数据。
以前pyaudio工作的环境只是ALSA。 现在环境运行PulseAudio。我通过将默认的ALSA设备设置为脉冲,将ALSA连接到PulseAudio。
arecord -f dat test.wav
然后aplay test.wav
现在正常适合我。
然而,似乎pyaudio在这些设置下不起作用。
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
stream.read(CHUNK)
stream.read()
挂起。 strace
显示它停留在以下循环中:
poll([{fd=3, events=POLLIN|POLLERR|POLLNVAL}], 1, 3) = 1 ([{fd=3, revents=POLLIN}])
我想这里的元问题是,是否有一堆pyaudio - >端口音频 - > alsa - > PulseAudio工作?如果没有,是否有一种从PulseAudio获取Python音频的规范方法?很多python / PulseAudio库的顶部在过去的几年中没有任何活动。
我的asound.conf看起来像这样
pcm.!default{
type plug
route_policy "average"
slave.pcm "asymed"
}
pcm.asymed{
type asym
playback.pcm "pulse_playback"
capture.pcm "pulse_capture"
}
pcm.pulse_playback {
type pulse
device "alsa_output.platform-sound_0.analog-stereo"
}
pcm.pulse_capture {
type pulse
device "alsa_input.platform-sound_1.analog-stereo"
}