📜  使用Python创建录音机(1)

📅  最后修改于: 2023-12-03 15:06:53.269000             🧑  作者: Mango

使用Python创建录音机

本篇介绍如何使用Python语言创建一个简单的录音机。录音机可以录制声音并保存为WAV格式文件。

所需库

在开始之前,需要安装以下Python库:

  • pyaudio:用于录制声音。
  • wave:用于保存录音为WAV格式文件。

若未安装以上库,请使用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格式文件。使用本文中提供的代码作为起点, 您可以创建更复杂的录音机或音频处理库。