20

我尝试使用 pyaudio 播放 .wav 文件。它在 Windows 上运行良好,但在另一台设备使用声音时无法在 Ubuntu 中运行。

错误是“IOError: [Errorno Invalid output device (no default output device)] -9996

我可以尝试使用另一个库吗?另一种方法?

4

5 回答 5

12

你可以使用wxPython

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

或者

sound.Play(wx.SOUND_ASYNC)

是 wxPython 演示中的一个示例。

于 2008-11-10T07:21:59.830 回答
4

你看过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

当然,您可以查看音频 ( http://wiki.python.org/moin/Audio/ ) 下的 Python wiki,了解其他库,例如https://docs.python.org/library/wave.html或者再次在 Python 的 wiki 中的 Game Libraries ( http://wiki.python.org/moin/PythonGameLibraries ) 下,将指向具有声音模块的 OpenAL 或 Pygame 的绑定。

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

于 2008-11-09T19:05:47.757 回答
2

您可以尝试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()
于 2016-03-29T12:16:08.457 回答
1

我不确定这是否满足您的要求,但我立即想到 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()
于 2008-11-10T09:37:33.830 回答
0

我发现playsound是最简单的。

from playsound import playsound

is_synchronus = False
playsound(r"C:\Windows\Media\chimes.wav", is_synchronus)
于 2018-01-23T19:51:12.140 回答