2014-11-21 103 views
2

我想设置一个设备进行播放,另一个用于捕获,我nano /etc/asound.conf有这样的:树莓ALSA声音输入/输出从

pcm.!default { 
     type asym 
     playback.pcm "plughw:1,1" 
     capture.pcm "plughw:1,0" 
} 

ctl.!default { 
     type hw 
     card 0 
} 

我可以完美播放声音,但我无法录制声音,我的Python代码引发此错误:

ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) 
unable to open slave 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side 

ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) 
Unknown PCM cards.pcm.hdmi 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline 

ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) 
The dmix plugin supports only playback stream 

ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) 
unable to open slave 

这是我运行代码的一部分:

import pyaudio 
class Microphone(AudioSource): 
    def __init__(self, device_index = None): 
     self.device_index = device_index 
     self.format = pyaudio.paInt16 # 16-bit int sampling 
     self.SAMPLE_WIDTH = pyaudio.get_sample_size(self.format) 
     self.RATE = 16000 # sampling rate in Hertz 
     self.CHANNELS = 1 # mono audio 
     self.CHUNK = 1024 # number of frames stored in each buffer 

     self.audio = None 
     self.stream = None 

    def __enter__(self): 
     self.audio = pyaudio.PyAudio() 
     self.stream = self.audio.open(
      input_device_index = self.device_index, 
      format = self.format, rate = self.RATE, channels = self.CHANNELS, frames_per_buffer = self.CHUNK, 
      input = True, # stream is an input stream 
     ) 
     return self 

    def __exit__(self, exc_type, exc_value, traceback): 
     self.stream.stop_stream() 
     self.stream.close() 
     self.stream = None 
     self.audio.terminate() 

我该如何解决这个错误?

预先感谢您。

+0

什么程序生成此输出? – 2014-11-21 08:12:19

+0

@CL。刚刚发布了一段代码,我是pyaudio。 – 2014-11-21 18:31:10

+1

什么是'device_index'? – 2014-11-21 20:20:35

回答

2

我唯一的答案是购买具有输入和输出功能的音频卡,并使其成为默认的“卡”。我正在尝试做同样的事情。我甚至尝试修改PyAudio的源代码,但没有成功。所以硬件路线是目前的解决方案。