我試着用pyaudio播放.wav文件。它在Windows上運行良好,但在另一臺設備使用聲音時不起作用。什麼是在python中播放聲音文件的跨平臺方式?
The error is "IOError: [Errorno Invalid output device (no default output device)] -9996
是否有另一個我可以嘗試使用的庫?另一種方法?
我試着用pyaudio播放.wav文件。它在Windows上運行良好,但在另一臺設備使用聲音時不起作用。什麼是在python中播放聲音文件的跨平臺方式?
The error is "IOError: [Errorno Invalid output device (no default output device)] -9996
是否有另一個我可以嘗試使用的庫?另一種方法?
你看過pymedia了嗎?它看起來那麼容易,因爲這是播放一個WAV文件:
import time, wave, pymedia.audio.sound as sound
f= wave.open('YOUR FILE NAME', 'rb')
sampleRate= f.getframerate()
channels= f.getnchannels()
format= sound.AFMT_S16_LE
snd= sound.Output(sampleRate, channels, format)
s= f.readframes(300000)
snd.play(s)
while snd.isPlaying(): time.sleep(0.05)
編號:http://pymedia.org/tut/play_wav.html
當然,你可以看看音頻下的Python的維基(http://wiki.python.org/moin/Audio/)爲其他庫,如https://docs.python.org/library/wave.html或再次在Python遊戲庫下的wiki中(http://wiki.python.org/moin/PythonGameLibraries),這將指向您綁定到具有聲音模塊的OpenAL或Pygame。
最後,儘管我不知道pyaudio的侷限性,但您的錯誤信息聽起來更像是庫無法找到默認輸出設備,而不是設備正在被另一個進程使用。也許看看pyaudio的get_default_output_device_info
返回什麼輸出設備,並將它與Ubuntu中默認設置進行比較。
我絕對不知道是否滿足你的要求,但我馬上想到pygame的
http://www.pygame.org/docs/ref/mixer.html#pygame.mixer.Sound
from pygame import mixer
mixer.init()
s = mixer.Sound('sound.wav')
s.play()
您可以嘗試Simpleaudio:
> pip install simpleaudio
然後:
import simpleaudio as sa
wave_obj = sa.WaveObject.from_wave_file("path/to/file.wav")
play_obj = wave_obj.play()
play_obj.wait_done()
我發現playsound
是最簡單的。
from playsound import playsound
is_synchronus = False
playsound(r"C:\Windows\Media\chimes.wav", is_synchronus)