使用Python创建录音机
Python可用于执行各种任务。其中之一是创建录音机。我们可以使用 python 的sounddevice模块来录制和播放音频。该模块与wavio或scipy模块一起提供了保存录制音频的方法。
安装
- sounddevice:该模块提供播放和录制包含音频信号的 NumPy 数组的功能。让我们 通过运行以下命令安装它:
$ pip3 install sounddevice
- 我们可以使用wavio和scipy将录制的音频保存为文件格式。我们将在这里看到他们两个。
- 要安装wavio:
$ pip3 install wavio
- 要安装scipy :
$ pip3 install scipy
现在,我们完成了所需模块的安装。所以,让我们编写代码。
入门
首先,导入所需的库。
# import required libraries
import sounddevice as sd
from scipy.io.wavfile import write
import wavio as wv
现在,在启动记录器之前,我们必须声明一些变量。第一个是音频的采样频率(在大多数情况下,这将是每秒 44100 或 48000 帧),第二个是录制持续时间。我们必须以秒为单位指定持续时间,以便在该持续时间之后停止录制。
所以,让我们也宣布它们。
# Sampling frequency
freq = 44100
# Recording duration
duration = 5
现在,我们准备启动记录器。它将创建一个记录音频的 NumPy 数组。
# Start recorder with the given values of
# duration and sample frequency
recording = sd.rec(int(duration * freq),
samplerate=freq, channels=2)
# Record audio for the given number of seconds
sd.wait()
现在,我们完成了录制音频。所以,让我们保存它。要保存音频文件,我们可以使用scipy模块或wavio模块。让我们一一介绍。
使用 Scipy:
我们将使用 scipy.io.wavfile 中的 write函数将 NumPy 数组转换为音频文件。
# This will convert the NumPy array to an audio
# file with the given sampling frequency
write("recording0.wav", freq, recording)
使用 wavio:
我们还可以使用wavio库中的 write函数。
# Convert the NumPy array to audio file
wv.write("recording1.wav", recording, freq, sampwidth=2)
完整代码:
Python3
# import required libraries
import sounddevice as sd
from scipy.io.wavfile import write
import wavio as wv
# Sampling frequency
freq = 44100
# Recording duration
duration = 5
# Start recorder with the given values
# of duration and sample frequency
recording = sd.rec(int(duration * freq),
samplerate=freq, channels=2)
# Record audio for the given number of seconds
sd.wait()
# This will convert the NumPy array to an audio
# file with the given sampling frequency
write("recording0.wav", freq, recording)
# Convert the NumPy array to audio file
wv.write("recording1.wav", recording, freq, sampwidth=2)