audio звуковой - Воспроизведение звука с помощью Python




сигнал проиграть (9)

На этот вопрос уже есть ответ:

Какой самый простой способ воспроизведения звукового файла (.wav) в Python? Проще всего я имею в виду как большинство независимых от платформы, так и требующих наименьших зависимостей. pygame - это, конечно, вариант, но кажется, что он просто затмевает звук.


Answers

Звуковой пример 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 )

Для 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: Билл Дандрета http://mail.python.org/pipermail/python-list/2004-October/288905.html )


После того, как команда play () добавит задержку в 10 секунд или около того, она будет работать

import pygame

import time

pygame.init()

pygame.mixer.music.load("test.wav")

pygame.mixer.music.play()

time.sleep(10)

Это также воспроизводит файлы .mp3.


Я только что выпустил простую оболочку 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)    

Snack Sound Toolkit может воспроизводить файлы wav, au и mp3.

s = Sound() 
s.read('sound.wav') 
s.play()

Мне нравится 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() который блокирует все остальное ...


Это кажется смешным и надуманным, но вы всегда можете использовать Windows (или любую другую ОС, которую вы предпочитаете), чтобы управлять звуком для вас!

import os
os.system("start C:/thepathyouwant/file")

Простые, никаких расширений, несколько медленные и сумасшедшие, но работающие.


wxPython поддерживает воспроизведение wav-файлов в Windows и Unix - я не уверен, включает ли это Mac. Однако он поддерживает только файлы wav, насколько я могу судить, - он не поддерживает другие распространенные форматы, такие как mp3 или ogg.


Я вижу, что уже есть ответы, но я хочу добавить свои два цента.

В Python есть функции для этого, но самым простым (и наиболее предпочтительным) методом является использование ключевого слова in :

"test" in "testtext"
True

"abc" in "abcdefg"
True

"abc" in "Abc"
False

"ABC" in "abc"
False

"abc" in "def"
False

"abc" in ["abc", "def", "ghi"]
True

Существуют также строковые методы:

"xxabcxx".find("abc")
2 #returns the index of the first match

"xxabcxx".find("cde")
-1 #returns -1 if the substring 
#could not be found in the string

# and:

"xxabcxx".index("abc")
2

"xxabcxx".index("cde")
ValueError: substring not found
#raises ValueError...

О производительности:

В общем, in постом метод найти подстроку ...

find немного быстрее, чем index

Надеюсь, я помогу!





python audio platform-independent