2016-07-19 67 views
0

我複製並粘貼一些示例代碼發揮使用pyaudio wav文件,但我得到的錯誤:IOError: [Errno Invalid output device (no default output device)] -9996IO錯誤:[錯誤無效的輸出設備(沒有默認的輸出設備)-9996

下面的代碼:

import pyaudio 
import wave 
import sys 

CHUNK = 1024 

if len(sys.argv) < 2: 
    print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0]) 
    sys.exit(-1) 

wf = wave.open(sys.argv[1], 'rb') 

p = pyaudio.PyAudio() 

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), 
       channels=wf.getnchannels(), 
       rate=wf.getframerate(), 
       output=True) 

data = wf.readframes(CHUNK) 

while data != '': 
    stream.write(data) 
    data = wf.readframes(CHUNK) 

stream.stop_stream() 
stream.close() 

p.terminate() 

要運行我打開了終端只需鍵入python playwavexample mywavfile.wav程序。

我想這可能的是一個權限問題,所以我試圖在那裏扔sudo的,但它沒有做任何事情。我正在運行Ubuntu 16.04,並且音頻輸出似乎工作正常...

回答

-1

看來PyAudio找不到您的默認設備。一種解決方案是將參數output_device_index添加到stream變量的初始化中。

例如,具有0

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), 
       channels=wf.getnchannels(), 
       rate=wf.getframerate(), 
       output=True, 
       output_device_index=0) 

設備索引可以通過下面的代碼找到所有到PyAudio訪問的設備(輸入和輸出)的裝置的索引。

import pyaudio 

p = pyaudio.PyAudio() 
device_count = p.get_device_count() 
for i in range(0, device_count): 
    print("Name: " + p.get_device_info_by_index(i)["name"]) 
    print("Index: " + p.get_device_info_by_index(i)["index"]) 
    print("\n")