录音
Python 实现录音功能
本文将介绍如何使用 Python 实现录音功能。我们将使用 PyAudio 库来捕获和保存音频数据。
1. 安装 PyAudio 库
首先需要安装 PyAudio 库。可以通过 pip 命令来安装:
pip install pyaudio
2. 录音
下面的代码实现了录音功能。它使用 PyAudio 库来捕获音频数据,并将其保存为 WAV 文件。录音时长由 RECORD_SECONDS
变量控制。
import pyaudio
import wave
# 录音时长
RECORD_SECONDS = 5
# 音频数据的采样率
RATE = 16000
# 采样大小(每次读取的音频数据块大小)
CHUNK = 1024
# 录音文件名
WAVE_OUTPUT_FILENAME = "output.wav"
# 创建 PyAudio 对象
audio = pyaudio.PyAudio()
# 打开音频流
stream = audio.open(format=pyaudio.paInt16,
channels=1,
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 文件
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(1)
wf.setsampwidth(audio.get_sample_size(pyaudio.paInt16))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
在上面的代码中,首先创建了一个 PyAudio
对象,并通过它打开了一个音频流。在循环中,我们读取了音频数据,并将其添加到 frames
列表中。循环结束后,我们将音频流关闭,并使用 wave
模块将 frames
列表中的数据保存为 WAV 文件。
3. 播放录音
下面的代码实现了播放录音功能。它使用 wave
模块打开录音文件,并使用 PyAudio 库播放音频数据。
import pyaudio
import wave
# 录音文件名
WAVE_FILENAME = "output.wav"
# 创建 PyAudio 对象
audio = pyaudio.PyAudio()
# 打开 WAV 文件
wf = wave.open(WAVE_FILENAME, 'rb')
# 打开音频流
stream = audio.open(format=audio.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
# 播放音频数据
data = wf.readframes(1024)
while data:
stream.write(data)
data = wf.readframes(1024)
# 关闭音频流
stream.stop_stream()
stream.close()
audio.terminate()
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 猗狛!