📅  最后修改于: 2023-12-03 15:06:53.269000             🧑  作者: Mango
本篇介绍如何使用Python语言创建一个简单的录音机。录音机可以录制声音并保存为WAV格式文件。
在开始之前,需要安装以下Python库:
若未安装以上库,请使用pip在命令行中进行安装:
pip install pyaudio wave
以下是一个简单的录音代码示例,它在Windows平台上经过测试并工作正常。请注意,“FORMAT”和“CHANNELS”参数应根据您的系统和麦克风设置进行更改。
import pyaudio
import wave
# 配置录音参数
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
# 初始化录音机
audio = pyaudio.PyAudio()
# 打开音频流
stream = audio.open(format=FORMAT, channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
print("开始录音...")
# 开始录音
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("录音结束!")
# 停止录音
stream.stop_stream()
stream.close()
audio.terminate()
# 保存录音为WAV格式文件
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()
这段代码将录制5秒钟的声音并将其保存为“output.wav”文件。
在代码中,我们首先导入了“pyaudio”和“wave”库:
import pyaudio
import wave
然后,我们定义了录音机的参数,包括每次读取的数据块大小(CHUNK)、格式(FORMAT)、通道数(CHANNELS)、采样率(RATE)、录制时间(RECORD_SECONDS)和输出WAV文件的文件名(WAVE_OUTPUT_FILENAME):
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
接下来我们初始化录音机:
audio = pyaudio.PyAudio()
通过调用pyaudio.PyAudio()
来创建一个PyAudio对象。然后,我们打开音频流:
stream = audio.open(format=FORMAT, channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
这将为我们提供一个音频流对象,可以通过这个对象读取麦克风输入。
现在我们准备开始录音。我们创建了一个空的frames
列表, 并开始读取来自麦克风的音频数据, 将其添加到frames
中:
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
我们通过调用stream.read(CHUNK)
来读取数据, 其中CHUNK是我们预定义的数据块大小。我们将得到一个包含二进制数据的“data”变量;我们将其添加到“frames”列表中。
录制完成后,我们停止音频流并关闭它:
stream.stop_stream()
stream.close()
audio.terminate()
最后,我们将 frames
中的音频数据写入到WAV格式文件中:
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()
在这里我们通过wave库将数据写入了WAV格式的文件.
本文介绍了如何使用Python创建一个简单的录音机。我们使用了“pyaudio”库来读取声音数据,以及“wave”库来将数据保存为WAV格式文件。使用本文中提供的代码作为起点, 您可以创建更复杂的录音机或音频处理库。