摘要:音频流: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 列表中,直到录制完成。
来源:软件架构
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!