Python Language Mode de blocage Audio I / O


Exemple

"" "PyAudio Exemple: Lire un fichier wave." ""

import pyaudio
import wave
import sys

CHUNK = 1024

if len(sys.argv) < 2:
    print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
    sys.exit(-1)

wf = wave.open(sys.argv[1], 'rb')

# instantiate PyAudio (1)
p = pyaudio.PyAudio()

# open stream (2)
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True)

# read data
data = wf.readframes(CHUNK)

# play stream (3)
while len(data) > 0:
    stream.write(data)
    data = wf.readframes(CHUNK)

# stop stream (4)
stream.stop_stream()
stream.close()

# close PyAudio (5)
p.terminate()

Pour utiliser PyAudio, instanciez d'abord PyAudio en utilisant pyaudio.PyAudio () (1), qui configure le système portaudio.

Pour enregistrer ou lire de l'audio, ouvrez un flux sur le périphérique souhaité avec les paramètres audio souhaités à l'aide de pyaudio.PyAudio.open () (2). Cela configure un pyaudio.Stream pour lire ou enregistrer de l'audio.

Jouez l'audio en écrivant des données audio dans le flux à l'aide de pyaudio.Stream.write () ou lisez les données audio du flux à l'aide de pyaudio.Stream.read () . (3)

Notez qu'en mode " blocage ", chaque pyaudio.Stream.write () ou pyaudio.Stream.read () se bloque jusqu'à ce que toutes les images données / demandées aient été lues / enregistrées. Sinon, pour générer des données audio à la volée ou traiter immédiatement les données audio enregistrées, utilisez le «mode rappel» ( reportez-vous à l'exemple du mode rappel).

Utilisez pyaudio.Stream.stop_stream () pour suspendre la lecture / l'enregistrement et pyaudio.Stream.close () pour terminer le flux. (4)

Enfin, terminez la session portaudio en utilisant pyaudio.PyAudio.terminate () (5)