Die Programmiersprache Python besticht durch eine niedrige Lernschwelle und ihre vielseitigen Anwendungsmöglichkeiten. Besonders in Bereichen wie Akustik, Sounddesign oder Webentwicklung kann es von großem Vorteil sein, wenn Python in der Lage ist, Audiodateien abzuspielen. In diesem Artikel erfahren Sie, welche Methoden Ihnen dafür zur Verfügung stehen und wie Sie diese effektiv nutzen können.
Die Python-Bibliotheken
Für Python gibt es eine Vielzahl an Bibliotheken, die das Sound-Abspielen ermöglichen. Alle davon haben ihre Vor- und Nachteile, da kann die Auswahl schwierig sein. Hier sind einige der beliebtesten Möglichkeiten erklärt:

So sieht das Logo der Programmiersprache aus. Mit Python Sound abspielen ist jetzt womöglich einfacher denn je. Quelle: Pixabay
Pyaudio
Pyaudio kann mit einfachen Mitteln einen Output-Stream erzeugen. Dieser greift dann auf Audio-Möglichkeiten am Computer zu. Pyaudio basiert auf der Bibliothek Portaudio, die ursprünglich für die Programmiersprachen C und C++ gedacht war. Mit Pyaudio können Sie sowohl ein Array, als auch eine Datei als Audio abspielen.
import wave
import pyaudio
CHUNK = 1024
filename = input("WAV-Datei: ")
with wave.open(filename, 'rb') as wf:
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
while len(data := wf.readframes(CHUNK)):
stream.write(data)
stream.close()
p.terminate()
- Pyaudio kann Audio abspielen, aber keine Audio-Dateien lesen. Importieren Sie hierfür zunächst das in Python integrierte
waveModul. Mit diesem Modul kann Python WAV-Dateien einlesen und erstellen. Importieren Sie dann Pyaudio. - Legen Sie die Größe der
CHUNKVariable fest. Die Chunk-Größe ist dafür verantwortlich, wie viele Daten von der Datei in den Speicher gelesen werden. Ist sie höher, kann das die Prozessorleistung verringern, aber die Verzögerung erhöhen. Ist sie niedriger, wird der Prozessor mehr belastet, aber die Verzögerung kann verringert werden. Das ist vor allem wichtig, falls Sie die Audio-Quelle in Echtzeit bearbeiten wollen. Wenn, wie in diesem Fall, nur eine WAV-Datei abgespielt werden soll, ist die Verzögerung nicht so wichtig. - Schreiben Sie nun ins Programm, wo Pyaudio die Datei finden kann. Die Variable
filenamesoll den Dateipfad enthalten. In diesem Fall öffnet sich ein Fenster in das, bei Start des Programms, der Dateipfad eingegeben werden kann.
Das wave Modul
- Nutzen Sie nun das
waveModul, welches die Datei als Binärdatei öffnet und ihr die Variablewfzuschreibt. Instantiieren Sie danach die Pyaudio Bibliothek und schreiben Sie ihr die Variablepzu. Pyaudio kann sich im Folgenden mit der Audio-Hardware verbinden. - Öffnen Sie im Anschluss den Audio-Datenstrom. Die Funktionen in diesem Abschnitt lesen die Spezifikationen der Datei. Die Bit-Tiefe, Anzahl der Kanäle (also zum Beispiel der Unterschied zwischen Mono und Stereo) und die Samplerate sind wichtige Parameter, um die Datei möglichst originalgetreu wiederzugeben. Mit der Anweisung
output=Truespezifizieren Sie, dass der Datenstrom zum Abspielen gedacht ist. - Im nächsten Abschnitt kommt die
CHUNKVariable wieder ins Spiel. Starten Sie einenwhileloop, der so lange Stücke der Audio-Datei in den Datenstrom schreibt, bis das Ende der Datei erreicht ist. Schließen Sie im Anschluss mitstream.close()den Datenstrom und beenden Sie mitp.terminate()das Programm.
IPython
Wenn Sie Jupyter benutzen, ist IPython womöglich der schnellste Weg, um Audio abspielen zu können. Aber Vorsicht: IPython ist kein reines Python-Modul. Es verwendet die Möglichkeiten von Jupyter, Inhalte über HTML zu rendern und regelt den Audio-Datenfluss über den Browser. Das ist ideal für Musik- und andere Wissenschaflter’innen, erlaubt aber auch nicht die Genauigkeit und Anpassungsfähigkeit von Pyaudio oder anderen Bibliotheken.
from IPython.display import Audio
filename = input("WAV-Datei: ")
display(Audio(filename))
Importieren Sie zunächst die Audio-Klasse des Ipython.display Moduls. Ordnen Sie dann der Variable für den Dateipfad filename eine Benutzereingabe zu. Nutzen Sie im Anschluss display(Audio(filename)), um dem Display die Datei und das Medium (also in diesem Fall Audio) zuzuweisen. Starten Sie dann das Programm und geben Sie in das Textfeld den Dateinamen ein. Sie erhalten nun eine Oberfläche, mit der die Datei abgespielt werden kann.
Python Sound abspielen — Sounddevice
Die Sounddevice Bibliothek basiert, wie Pyaudio, auf der PortAudio Bibliothek für C und C++. Mit Sounddevice können Sie mit sehr wenigen Eingaben eine Datei als Audio abspielen. Für mehr Kontrolle bietet die Bibliothek aber auch die Möglichkeit, den Audio-Datenstrom direkt zu bestimmen, ähnlich wie Pyaudio.
import sounddevice as sd
from scipy.io import wavfile
filename = input("WAV-Datei: ")
sd.play(*wavfile.read(filename))
sd.wait()
- Der einfachste Weg um mit Sounddevice eine WAV-Datei abzuspielen ist mithilfe des Scipy-Moduls
wavfile. Dieses ermöglicht es die nötigen Informationen über die Datei direkt an Sounddevice weiterzugeben. - Importieren Sie dafür zunächst Sounddevice und das
wavfileModul von Scipy. Fragen Sie im Anschluss nach der Benutzereingabe des Dateinamen mitfilename = input("WAV-Datei: "). - Mit der Funktion
sd.play(*wavfile.read(filename))können Sie dann Sounddevice den Auftrag zum Abspielen geben. Innerhalb der Klammer passiert folgendes:wavfile.read()liest die Dateifilenameein. Die Funktion liefert ein Tupel mit der Samplerate und den Audiodaten. Durch den Operator*werden diese Daten direkt dersd.play()Funktion zugespielt. - Mit
sd.wait()können Sie sichergehen, dass sich das Programm erst schließt, wenn die Datei fertig abgespielt ist.
Pygame
Wie der Name schon sagt, ist die Pygame Bibliothek eigentlich zum Spiele-Programmieren gedacht. Mit dem pygame.mixer Modul ist sie auch geeignet, um Audio abzuspielen.
import time
import pygame
pygame.mixer.init()
filename = input("WAV-Datei: ")
pygame.mixer.music.load(filename)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
time.sleep(1)
Importieren Sie zunächst Pygame und das (bereits in Python enthaltene) time Modul. Initialisieren Sie Pygame im Anschluss mit pygame.mixer.init(). Das Argument filename = input("WAV-Datei: ") ist für den Dateinamen gedacht. Laden Sie dann mittels pygame.mixer.music.load(filename) die WAV-Datei und spielen sie mit pygame.mixer.music.play() ab. In einem Jupyter Notebook schaltet sich das Programm ab, wenn der Code einmal durchgelaufen ist. Wenn im Hintergrund dann noch ein Audio-Datenstrom offen ist, wird dieser mit beendet. Fügen Sie um das zu verhindern eine while Schleife ein, die überprüft ob die Datei noch abgespielt wird und das Schließen des Programms in der Zeit verhindert.
Python Sound abspielen — Playsound
Das playsound Modul enthält eine gleichnamige Funktion, die Audio abspielen kann. Vieles, was bei den anderen Bibliotheken explizit eingegeben werden muss, macht playsoundautomatisch. Allerdings fehlt Genauigkeit. Es gibt keine eingebaute Funktion um das Abspielen zu pausieren oder andere Dinge mit dem Datenstrom zu machen. Genau so kann playsound nicht mehrere Kanäle zur gleichen Zeit offen haben. Das ist praktisch, wenn Sie einen kurzen Audio-Clip abspielen und nicht direkt einen ganzen Codeblock schreiben wollen. Um mit playsound eine WAV-Datei abzuspielen, braucht es drei Dinge:
from playsound import playsound
filename = input("WAV-Datei: ")
playsound(filename)
- Importieren Sie zunächst
playsound. - Geben Sie im Anschluss mit
filename = input("WAV-Datei: ")die Möglichkeit den Dateinamen einzugeben. - Rufen Sie dann die
playsoundFunktion auf. Setzen Sie als Argument diefilenameVariable.
Wie Sie sehen gibt es viele verschiedene Wege eine WAV-Datei mit Python abzuspielen. Je nach Anwendungsbereich können manche davon praktischer sein als andere. Wenn Sie mit dem abgespielten Sound Daten transportieren, wird das „Audifikation“ genannt. Mehr über Audifikation und Sonifikation erfahren Sie in einem weiteren Artikel.