Ответ 1
Инструмент Snack Sound Toolkit может воспроизводить файлы wav, au и mp3.
s = Sound()
s.read('sound.wav')
s.play()
Какой самый простой способ воспроизведения звукового файла (.wav) в Python? Проще всего я имею в виду как большинство независимых от платформы, так и требующих наименьших зависимостей. pygame - это, конечно, вариант, но кажется, что он просто затмевает звук.
Инструмент Snack Sound Toolkit может воспроизводить файлы wav, au и mp3.
s = Sound()
s.read('sound.wav')
s.play()
В Windows вы можете использовать winsound. Он построен в
import winsound
winsound.PlaySound('sound.wav', winsound.SND_FILENAME)
Вы можете использовать ossaudiodev для linux:
from wave import open as waveOpen
from ossaudiodev import open as ossOpen
s = waveOpen('tada.wav','rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossOpen('/dev/dsp','w')
try:
from ossaudiodev import AFMT_S16_NE
except ImportError:
from sys import byteorder
if byteorder == "little":
AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
else:
AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()
(Кредит для ossaudiodev: Bill Dandreta http://mail.python.org/pipermail/python-list/2004-October/288905.html)
Это кажется смешным и далеким, но вы всегда можете использовать Windows (или любую другую ОС, которая вам нравится) для управления звуком для вас!
import os
os.system("start C:/thepathyouwant/file")
Простые, никаких расширений, несколько медленные и сумасшедшие, но работающие.
Определенно используйте Pyglet. Это своего рода большой пакет, но это чистый питон без модулей расширения. Это, безусловно, будет проще всего для развертывания. Он также получил отличный формат и поддержку кодеков.
import pyglet
music = pyglet.resource.media('music.mp3')
music.play()
pyglet.app.run()
После того, как команда play() добавит задержку в 10 секунд или около того, она будет работать
import pygame
import time
pygame.init()
pygame.mixer.music.load("test.wav")
pygame.mixer.music.play()
time.sleep(10)
Это также воспроизводит файлы .mp3.
Пример звука pyMedia делает только это. Это должно быть все, что вам нужно.
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 )
Мне нравится pygame, и команда ниже должна работать:
pygame.init()
pygame.mixer.Sound('sound.wav').play()
но он не работает ни на одном из моих компьютеров, и есть ограниченная помощь по этому вопросу. edit: Я понял, почему звук pygame не работает для меня, он не загружает большинство звуков правильно, атрибут "length" равен ~ 0,0002 при загрузке. возможно, погрузка их с использованием чего-то другого, кроме mygame, приведет к более уклонению.
с pyglet. Я получаю сообщение об ошибке, не найденной ресурсом. Используя вышеприведенный пример, смешайте как относительные, так и полные пути к файлам.
используя pyglet.media.load()
вместо pyglet.resource.media()
позволяет мне загружать файлы.
но sound.play()
воспроизводит только первую часть секунды файла, если я не запустил pyglet.app.run()
, который блокирует все остальное...
wxPython поддерживает воспроизведение wav файлов в Windows и Unix - я не уверен, включает ли это Mac. Однако он поддерживает только файлы wav, насколько я могу судить, - он не поддерживает другие распространенные форматы, такие как mp3 или ogg.
Я только что выпустил простую оболочку python вокруг sox, которая будет воспроизводить звук с Python. Он очень прост в установке, поскольку вам нужен Python 2.6 или выше, sox (легко получить двоичные файлы для большинства архитектур) и оболочку (https://github.com/standarddeviant/sound4python), Если у вас нет sox, перейдите сюда: http://sourceforge.net/projects/sox/files/sox/
Вы будете воспроизводить аудио с помощью:
from sound4python import sound
import random
a = []
for idx in xrange(1*16000):
a.append(random.randint(-16384,16384))
sound(a)
Имейте в виду, что единственными частями, фактически задействованными в воспроизведении звука, являются только следующие:
from sound4python import sound
...
sound(a)
Для пользователя Linux, если требуется обработка данных с низким уровнем pcm, попробуйте alsaaudio модуль. Внутри пакета также есть пример playwav.py.