什么';用python播放声音文件的跨平台方式是什么?

什么';用python播放声音文件的跨平台方式是什么?,python,cross-platform,audio,Python,Cross Platform,Audio,我尝试使用pyaudio播放.wav文件。它在windows上工作得很好,但在Ubuntu中,当其他设备使用声音时,它就不工作了 错误是“IOError:[Errorno 无效的输出设备(无默认值 输出装置)]-9996 有没有其他库我可以尝试使用?另一种方法?您看过pymedia吗?播放WAV文件看起来很简单: import time, wave, pymedia.audio.sound as sound f= wave.open('YOUR FILE NAME', 'rb') sampleR

我尝试使用pyaudio播放.wav文件。它在windows上工作得很好,但在Ubuntu中,当其他设备使用声音时,它就不工作了

错误是“IOError:[Errorno 无效的输出设备(无默认值 输出装置)]-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)
参考:

当然,您可以在音频()下查看Python wiki中的其他库,例如在游戏库()下的Python wiki中,这将指向具有声音模块的OpenAL或Pygame的绑定

最后,虽然我不知道pyaudio的局限性,但您的错误消息听起来更像是库无法找到默认的输出设备,而不是另一个进程正在使用的设备。也许可以看看pyaudio的
get\u default\u output\u device\u info
返回的输出设备,并将其与whatev进行比较er是Ubuntu中的默认设置。

您可以使用


是wxPython演示中的一个示例。

我不确定这是否满足您的要求,但我立即想到了PyGame

您可以尝试:

然后:

我发现这是最简单的

from playsound import playsound

is_synchronus = False
playsound(r"C:\Windows\Media\chimes.wav", is_synchronus)
sound.Play(wx.SOUND_ASYNC)
from pygame import mixer

mixer.init()
s = mixer.Sound('sound.wav')
s.play()
> 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()
from playsound import playsound

is_synchronus = False
playsound(r"C:\Windows\Media\chimes.wav", is_synchronus)