2008-11-09 29 views
18

Tôi đã thử phát tệp .wav bằng pyaudio. Nó hoạt động tốt trên các cửa sổ, nhưng không hoạt động trong Ubuntu khi một thiết bị khác đang sử dụng âm thanh.Cách nền tảng chéo để phát tệp âm thanh trong python là gì?

The error is "IOError: [Errorno Invalid output device (no default output device)] -9996

Có thư viện nào khác mà tôi có thể thử sử dụng không? Một phương pháp khác?

Trả lời

4

Bạn đã xem pymedia chưa? Có vẻ như dễ dàng như thế này để chơi một file 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) 

Ref: http://pymedia.org/tut/play_wav.html

Tất nhiên, bạn có thể có một cái nhìn tại các wiki Python dưới Audio (http://wiki.python.org/moin/Audio/) cho các thư viện khác như https://docs.python.org/library/wave.html hoặc một lần nữa trong wiki của Python dưới Thư viện trò chơi (http://wiki.python.org/moin/PythonGameLibraries) sẽ chỉ cho bạn các ràng buộc với OpenAL hoặc Pygame có các mô-đun âm thanh. Và cuối cùng, mặc dù tôi không biết những hạn chế của pyaudio, thông báo lỗi của bạn có vẻ giống như thư viện không thể tìm thấy thiết bị đầu ra mặc định nhiều hơn thiết bị đang được sử dụng bởi một quá trình khác. Có thể có một cái nhìn vào những gì thiết bị đầu ra được trả lại bởi get_default_output_device_info của pyaudio và so sánh nó với bất kỳ thiết lập mặc định của bạn trong Ubuntu.

12

Bạn có thể sử dụng wxPython

sound = wx.Sound('sound.wav') 
sound.Play(wx.SOUND_SYNC) 

hoặc

sound.Play(wx.SOUND_ASYNC) 

Here là một ví dụ từ bản demo wxPython.

2

Bạn có thể thử Simpleaudio:

> pip install simpleaudio 

Sau đó:

import simpleaudio as sa 

wave_obj = sa.WaveObject.from_wave_file("path/to/file.wav") 
play_obj = wave_obj.play() 
play_obj.wait_done() 
0

Tôi thấy playsound là đơn giản nhất.

from playsound import playsound 

is_synchronus = False 
playsound(r"C:\Windows\Media\chimes.wav", is_synchronus) 
Các vấn đề liên quan