wave和pyaudio读取wav语音文件并播放

本文介绍了如何利用Python的wave和pyaudio库读取并播放.wav格式的语音文件。通过示例代码,展示了这两个模块在音频处理中的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要模块:wave , pyAudio

程序如下:

import pyaudio
import wave


CHUNK = 1024
# 从目录中读取语音
wf = wave.open('./2.wav', 'rb')
# read data
data = wf.readframes(CHUNK)
# 创建播放器
p = pyaudio.PyAu
Python中,利用`pyaudio`库进行语音输入通常涉及以下几个步骤: 首先,导入必要的模块,如`time`、`wave``PyAudio`。`time`用于处理时间相关的暂停操作,`wave`用于处理音频文件,而`PyAudio`则是交互式录音的核心组件。 ```python import time from wave import Wave_write from pyaudio import PyAudio, paInt16 ``` 接下来,设置一些基本参数: - `channels`表示声道数,单声道是1; - `framerate`即采样率,这里是16000Hz,适合大多数语音应用; - `num_samples`代表录制的样本数量,可以根据需要调整; - `sampwidth`指每个样本占用的字节数,对于16位的单精度数据,是2。 然后创建`PyAudio`实例,初始化录音参数: ```python # 初始化 PyAudio p = PyAudio() # 设置录音参数 chunk_size = 1024 # 录音块大小 stream = p.open(format=paInt16, # 数据类型 channels=channels, rate=framerate, input=True, frames_per_buffer=chunk_size) ``` 开始录音之前,可以添加暂停(如果需要)让用户准备说话: ```python time.sleep(1) # 暂停1秒让用户准备 ``` 接着进入循环,持续读取音频数据直到达到指定的`num_samples`: ```python data = bytearray() while len(data) < num_samples * sampwidth: data.extend(stream.read(chunk_size)) ``` 录音结束后关闭流`PyAudio`实例: ```python stream.stop_stream() stream.close() p.terminate() ``` 最后,可以将这些数据写入到`.wav`文件中: ```python # 创建一个WAVE_write对象,指定文件参数 wave_file = Wave_write("output.wav", "wb") wave_file.setparams((channels, sampwidth, framerate, len(data), "NONE", "not compressed")) wave_file.writeframes(data) wave_file.close() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值