Ответ 1
Вы можете использовать wxPython
sound = wx.Sound('sound.wav')
sound.Play(wx.SOUND_SYNC)
или
sound.Play(wx.SOUND_ASYNC)
Здесь приведен пример из демонстрации wxPython.
Я пробовал играть в WAV файл, используя pyaudio. Он отлично работает на окнах, но не работает в 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
Конечно, вы можете взглянуть на вики Python под Audio (http://wiki.python.org/moin/Audio/) для других библиотек, таких как https://docs.python.org/library/wave.html или снова в вики Python в библиотеках игр (http://wiki.python.org/moin/PythonGameLibraries), который укажет на привязку к OpenAL или Pygame с звуковыми модулями.
И, наконец, хотя я не знаю ограничений pyaudio, ваше сообщение об ошибке больше похоже на то, что библиотека не может найти устройство вывода по умолчанию больше, чем устройство используется другим процессом. Возможно, посмотрите, какое устройство вывода возвращается get_default_output_device_info
pyaudio и сравнивает его с тем, что вы задали по умолчанию в 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
synchronus = False
playsound(r"C:\Windows\Media\chimes.wav", synchronus)