pyaudio 模块开发入门示例

360影视 2025-01-23 14:50 1

摘要:音频流:pyaudio 允许你打开和管理音频流,可以进行音频的录制和播放。多平台支持:pyaudio 支持在 Windows、macOS 和 Linux 上运行。低延迟音频:通过 pyaudio,你可以实现低延迟的音频处理,适用于实时音频应用。灵活的音频格式:

pyaudio 模块是一个用于在 Python 中处理音频输入和输出的库。它是基于 PortAudio 库的 Python 绑定,提供了跨平台的音频 I/O 接口。

音频流:pyaudio 允许你打开和管理音频流,可以进行音频的录制和播放。多平台支持:pyaudio 支持在 Windows、macOS 和 Linux 上运行。低延迟音频:通过 pyaudio,你可以实现低延迟的音频处理,适用于实时音频应用。灵活的音频格式:支持多种音频格式和采样率,可以根据需要进行配置。import pyaudioimport wave# 设置参数FORMAT = pyaudio.paInt16 # 音频格式CHANNELS = 1 # 通道数RATE = 16000 # 采样率CHUNK = 1024 # 每个缓冲区的帧数RECORD_SECONDS = 5 # 录音时长OUTPUT_FILENAME = "output.wav" # 输出文件名# 初始化 PyAudio 对象audio = pyaudio.PyAudio# 打开音频流stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)print("开始录音...")frames = # 录制音频数据# RATE 是采样率(每秒采样数),CHUNK 是每个缓冲区的帧数,RECORD_SECONDS 是录音时长(秒)。# RATE / CHUNK 计算每秒钟需要多少个缓冲区。# RATE / CHUNK * RECORD_SECONDS 计算在指定的录音时长内需要多少个缓冲区。for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): # 循环录制音频数据 data = stream.read(CHUNK) # 从音频流中读取数据 frames.append(data) # 将读取的数据添加到帧列表中print("录音结束")# 停止和关闭音频流stream.stop_streamstream.closeaudio.terminate# 保存录制的音频数据到文件wf = wave.open(OUTPUT_FILENAME, 'wb') # 打开一个新的音频文件,写入模式wf.setnchannels(CHANNELS) # 设置音频通道数wf.setsampwidth(audio.get_sample_size(FORMAT)) # 设置采样宽度wf.setframerate(RATE) # 设置采样率wf.writeframes(b''.join(frames)) # 将所有帧数据写入文件wf.close # 关闭文件

可以尝试播放输出的音频文件:

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS))

这是一个 for 循环,用于迭代一定次数。range(0, int(RATE / CHUNK * RECORD_SECONDS)) 生成一个从 0 到 int(RATE / CHUNK * RECORD_SECONDS) - 1 的整数序列。RATE 是采样率(每秒采样数),CHUNK 是每个缓冲区的帧数,RECORD_SECONDS 是录音时长(秒)。RATE / CHUNK 计算每秒钟需要多少个缓冲区。RATE / CHUNK * RECORD_SECONDS 计算在指定的录音时长内需要多少个缓冲区。

data = stream.read(CHUNK)

从音频流中读取 CHUNK 大小的音频数据。stream.read(CHUNK) 调用 pyaudio 库的 stream 对象的 read 方法,从音频输入流中读取数据。CHUNK 指定每次读取的帧数。

frames.append(data)

将读取的音频数据添加到 frames 列表中。frames 是一个列表,用于存储录制的音频数据。append(data) 方法将 data 添加到 frames 列表的末尾。

上述代码通过循环从音频输入流中读取数据,并将这些数据存储在 frames 列表中,直到录制完成。

来源:软件架构

相关推荐