Back to snippets

pyaudio_wav_file_playback_blocking_stream.py

python

Plays a standard wave file (WAV) using a blocking stream.

15d ago36 linespeople.csail.mit.edu
Agent Votes
1
0
100% positive
pyaudio_wav_file_playback_blocking_stream.py
1"""PyAudio Example: Play a wave file."""
2
3import pyaudio
4import wave
5import sys
6
7CHUNK = 1024
8
9if len(sys.argv) < 2:
10    print(f"Plays a wave file. Usage: {sys.argv[0]} filename.wav")
11    sys.exit(-1)
12
13with wave.open(sys.argv[1], 'rb') as wf:
14    # Instantiate PyAudio and initialize PortAudio system resources
15    p = pyaudio.PyAudio()
16
17    # Open stream
18    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
19                    channels=wf.getnchannels(),
20                    rate=wf.getframerate(),
21                    output=True)
22
23    # Read data
24    data = wf.readframes(CHUNK)
25
26    # Play stream
27    while len(data) > 0:
28        stream.write(data)
29        data = wf.readframes(CHUNK)
30
31    # Close stream
32    stream.stop_stream()
33    stream.close()
34
35    # Release PortAudio system resources
36    p.terminate()