-
Notifications
You must be signed in to change notification settings - Fork 0
/
read_record_play.py
46 lines (34 loc) · 1.18 KB
/
read_record_play.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""This module contains functions for recording, saving and playing the .wav files."""
import sounddevice as sd
from scipy.io.wavfile import read, write
import numpy as np
def read_wav(path: str):
"""
This function takes a path to the .wav file, reads it, and returns an audio piece and its sample rate.
"""
sr, array = read(path)
return sr, array
def play_wav(recording: np.array, sr: int) -> None:
"""
This function takes in a recording as a NumPy array, its sampling rate, and plays it.
"""
print("Playing...")
sd.play(recording, sr)
sd.wait()
def save_wav(recording: np.array, filename: str) -> None:
"""
This function takes in the recording and saves it with a given filename.
"""
scaled_recording = np.int16(recording/np.max(np.abs(recording)) * 32767)
write(filename + ".wav", 8000, scaled_recording)
def record():
"""
This function records an audio at an 8000 sampling rate and returns the recording as a NumPy array.
"""
duration = 20
sr = 8000
print("Recording...")
recording = sd.rec(int(duration * sr), samplerate=sr, channels=2)
sd.wait()
print("Recording finished.")
return recording