Какой самый простой способ воспроизведения звукового файла (.wav) в Python? Проще всего я имею в виду как большинство независимых от платформы, так и требующих наименьших зависимостей. pygame - это, конечно, вариант, но кажется, что он просто затмевает звук.
Воспроизведение звука с помощью Python
Ответ 1
Инструмент Snack Sound Toolkit может воспроизводить файлы wav, au и mp3.
s = Sound()
s.read('sound.wav')
s.play()
Ответ 2
В 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)
Ответ 3
Это кажется смешным и далеким, но вы всегда можете использовать Windows (или любую другую ОС, которая вам нравится) для управления звуком для вас!
import os
os.system("start C:/thepathyouwant/file")
Простые, никаких расширений, несколько медленные и сумасшедшие, но работающие.
Ответ 4
Определенно используйте Pyglet. Это своего рода большой пакет, но это чистый питон без модулей расширения. Это, безусловно, будет проще всего для развертывания. Он также получил отличный формат и поддержку кодеков.
import pyglet
music = pyglet.resource.media('music.mp3')
music.play()
pyglet.app.run()
Ответ 5
После того, как команда play() добавит задержку в 10 секунд или около того, она будет работать
import pygame
import time
pygame.init()
pygame.mixer.music.load("test.wav")
pygame.mixer.music.play()
time.sleep(10)
Это также воспроизводит файлы .mp3.
Ответ 6
Пример звука 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 )
Ответ 7
Мне нравится 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()
, который блокирует все остальное...
Ответ 8
wxPython поддерживает воспроизведение wav файлов в Windows и Unix - я не уверен, включает ли это Mac. Однако он поддерживает только файлы wav, насколько я могу судить, - он не поддерживает другие распространенные форматы, такие как mp3 или ogg.
Ответ 9
Я только что выпустил простую оболочку 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)
Ответ 10
Для пользователя Linux, если требуется обработка данных с низким уровнем pcm, попробуйте alsaaudio модуль. Внутри пакета также есть пример playwav.py.