簡體   English   中英

什么是在python中播放聲音文件的跨平台方式?

[英]What's a cross platform way to play a sound file in python?

我嘗試使用pyaudio播放.wav文件。 它在Windows上運行良好,但在其他設備使用聲音時在Ubuntu中不起作用。

錯誤是“IOError:[Errorno無效的輸出設備(無默認輸出設備)] -9996

我可以嘗試使用另一個庫嗎? 另一種方法?

你可以使用wxPython

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

要么

sound.Play(wx.SOUND_ASYNC)

以下是wxPython演示中的示例。

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

當然,您可以查看Audio( http://wiki.python.org/moin/Audio/ )下的Python wiki,了解其他庫,例如https://docs.python.org/library/wave.html或者再次在Python的游戲庫( http://wiki.python.org/moin/PythonGameLibraries )下的wiki中,它將指向綁定到具有聲音模塊的OpenAL或Pygame。

最后,雖然我不知道pyaudio的局限性,但是您的錯誤消息聽起來更像是庫無法找到默認輸出設備而不是另一個進程正在使用該設備。 也許看一下get_default_output_device_info的get_default_output_device_info返回的輸出設備,並將它與Ubuntu中的默認設置進行比較。

您可以嘗試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()

我不確定這是否符合你的要求,但我立刻想到了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()

我發現playsound是最簡單的。

from playsound import playsound

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM