【发布时间】:2017-11-21 00:15:41
【问题描述】:
我已将 USB 连接到 RPi 并且知道它可以工作,因为我可以使用以下命令通过麦克风录制音频:
arecord test.wav -D sysdefault:CARD=1
现在我想编写一个可以从 USB 设备流式传输数据的 Python 程序。我编写了以下代码(在 .open() 中设置 input_device_index = 1):
import pyaudio
import numpy as np
RATE = 44100
CHUNK = 1024
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=RATE, input=True, input_device_index=1, frames_per_buffer=CHUNK)
while (True):
data = np.fromstring(stream.read(CHUNK),dtype=np.int16)
stream.stop_stream()
stream.close()
p.terminate()
当我运行代码时,我收到以下错误:
"ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.front.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM front
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.surround51.0:CARD=0'
.........
a failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2818
Traceback (most recent call last):
File "RealTimePlaybackTest.py", line 9, in <module>
stream = p.open(format=pyaudio.paInt16, channels=1, rate=RATE, input=True, input_device_index=1, frames_per_buffer=CHUNK)
File "build/bdist.linux-armv7l/egg/pyaudio.py", line 750, in open
File "build/bdist.linux-armv7l/egg/pyaudio.py", line 441, in __init__
IOError: [Errno -9998] Invalid number of channels
"整个错误在this gist
这让我感到困惑,因为即使我在代码中设置了索引 = 1,错误也表明 CARD=0。我怎样才能改变它,使 CARD=1?
【问题讨论】:
标签: python audio raspberry-pi audio-recording pyaudio