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.

120voto

orestis Punkte 14909

Für Windows können Sie Winsound verwenden. Es ist eingebaut in

import winsound

winsound.PlaySound('sound.wav', winsound.SND_FILENAME)

Sie sollten in der Lage sein, ossaudiodev für Linux zu verwenden:

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()

(Kredit für ossaudiodev: Bill Dandreta http://mail.python.org/pipermail/python-list/2004-October/288905.html )

30voto

csexton Punkte 22829

Das Snack Sound Toolkit kann wav-, au- und mp3-Dateien abspielen.

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

30voto

Fillip Punkte 389

Das scheint lächerlich und weit hergeholt, aber Sie können Windows (oder ein anderes Betriebssystem) verwenden, um den Sound für Sie zu verwalten!

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

Einfach, keine Erweiterungen, etwas langsam und unhandlich, aber es funktioniert.

19voto

Peter Shinners Punkte 3586

Unbedingt verwenden Pyglet für diese. Es ist ein ziemlich großes Paket, aber es ist reines Python ohne Erweiterungsmodule. Das wird definitiv die einfachste für die Bereitstellung sein. Es hat auch große Format- und Codec-Unterstützung.

import pyglet

music = pyglet.resource.media('music.mp3')
music.play()

pyglet.app.run()

9voto

ramkumar Punkte 89

Fügen Sie nach dem Play()-Befehl eine Verzögerung von z.B. 10 Sekunden ein, dann wird es funktionieren.

import pygame

import time

pygame.init()

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

pygame.mixer.music.play()

time.sleep(10)

Damit lassen sich auch .mp3-Dateien abspielen.

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