2014-11-21 106 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的源代碼,但沒有成功。所以硬件路線是目前的解決方案。