116 Stimmen

Einen Ton mit Python abspielen

Was ist der einfachste Weg, um eine Sounddatei (.wav) in Python abzuspielen? Mit einfachsten meine ich sowohl die meisten Plattform unabhängig und erfordern die wenigsten Abhängigkeiten. pygame ist sicherlich eine Option, aber es scheint Overkill für nur Sound.

6voto

Rizwan Kassim Punkte 7619

PyMedia's Klangbeispiel macht genau das . Das sollte alles sein, was Sie brauchen.

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 )

3voto

suki Punkte 39

Ich mag pygame, und der folgende Befehl sollte funktionieren:

pygame.init()
pygame.mixer.Sound('sound.wav').play()

aber es tut nicht auf beiden meiner Computer, und es gibt begrenzte Hilfe zu diesem Thema da draußen. edit: Ich habe herausgefunden, warum der Pygame-Sound bei mir nicht funktioniert, es lädt die meisten Sounds nicht richtig, das Attribut 'Länge' ist ~0.0002, wenn ich sie lade. vielleicht lädt man sie mit etwas anderem als mygame, damit es allgemeiner funktioniert.

mit pyglet erhalte ich eine Ressource nicht gefunden Fehler Verwenden Sie das obige Beispiel, wigh sowohl relative und vollständige Pfade zu den Dateien.

mit pyglet.media.load() anstelle von pyglet.resource.media() lässt mich die Dateien laden.

sondern sound.play() spielt nur den ersten Bruchteil einer Sekunde der Datei ab, es sei denn, ich führe pyglet.app.run() was alles andere blockiert...

2voto

Dave Kirby Punkte 24272

WxPython unterstützt die Wiedergabe von wav-Dateien unter Windows und Unix - ich bin nicht sicher, ob dies auch für Macs gilt. Allerdings unterstützt es nur wav-Dateien, soweit ich das beurteilen kann - andere gängige Formate wie mp3 oder ogg werden nicht unterstützt.

2voto

Dave C Punkte 1134

Ich habe gerade einen einfachen Python-Wrapper um sox herum veröffentlicht, der einen Sound mit Python abspielt. Es ist sehr einfach zu installieren, da man Python 2.6 oder höher, sox (einfach zu erhaltende Binaries für die meisten Architekturen) und den Wrapper ( https://github.com/standarddeviant/sound4python ). Wenn Sie keine Socken haben, gehen Sie hier: http://sourceforge.net/projects/sox/files/sox/

Sie würden damit Audio abspielen:

from sound4python import sound
import random
a = []
for idx in xrange(1*16000):
    a.append(random.randint(-16384,16384))
sound(a)

Denken Sie daran, dass die einzigen Teile, die tatsächlich an der Audiowiedergabe beteiligt sind, genau diese sind:

from sound4python import sound
...
sound(a)

1voto

GBY Punkte 1030

Für Linux-Benutzer, die eine einfache Manipulation von pcm-Daten benötigen, empfiehlt sich alsaaudio Modul. Es gibt auch ein playwav.py-Beispiel im Paket.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X