python pyaudio 录取语音数据

python pyaudio 录取语音数据

pyaudio安装方法:

pip install pyaudio

如果这个不行,可以尝试:

pip install pipwin
pipwin install pyaudio

代码如下:

import pyaudio
import wave

RESPEAKER_RATE = 44100  # 采样率,每秒钟对声音信号的采样次数
RESPEAKER_CHANNELS = 1  # 通道数,一般单声道、双声道
RESPEAKER_WIDTH = 2  # 带宽 (量化位数),单个采样点的位数,2 表示每个采样点使用 16 位表示
CHUNK = 1024  # 数据块大小,每次从音频流中读取的数据量大小
RECORD_SECONDS = 10  # 录制时长
RESPEAKER_INDEX = 0  # 输入设备索引
WAVE_OUTPUT_FILENAME = "output.wav"  # 输出文件名

# 调用 pyaudio,打开语音流
p = pyaudio.PyAudio()
stream = p.open(
    rate=RESPEAKER_RATE,
    format=p.get_format_from_width(RESPEAKER_WIDTH),
    channels=RESPEAKER_CHANNELS,
    input=True,
    input_device_index=RESPEAKER_INDEX
)

print("* recording")

frames = []

# 将获取的数据写入语音流,并计算时间
# RESPEAKER_RATE / CHUNK * RECORD_SECONDS 计算了录制音频所需的数据块个数
# int 对于浮点数 会向下取整
# 向上取整:math.ceil()
# 向下取整:math.floor()
for i in range(0, int(RESPEAKER_RATE / CHUNK * RECORD_SECONDS)):
    # exception_on_overflow=False 当输入缓冲区没有足够的数据,避免引发异常,返回空字符串
    data = stream.read(CHUNK, exception_on_overflow=False)
    frames.append(data)

print("* done recording")

# 停止语音流,数据写入文件,释放资源
stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, "wb")
wf.setnchannels(RESPEAKER_CHANNELS)
wf.setsampwidth(p.get_sample_size(p.get_format_from_width(RESPEAKER_WIDTH)))
wf.setframerate(RESPEAKER_RATE)
wf.writeframes(b"".join(frames))
wf.close()

之后就会生成一个output.wav音频文件
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyaudioPython用于音频输入输出的库。它是对PortAudio库的封装,提供了简单而强大的API,用于处理音频流。你可以使用Pyaudio库来录制和播放声音,处理音频数据,进行音频特征提取,并将声音数据与其他Python库集成。 以下是使用Pyaudio库进行音频录制和播放的示例代码: 1. 音频录制: ```python import pyaudio import wave # 设置参数 chunk = 1024 # 每次读取的音频数据大小 format = pyaudio.paInt16 # 音频数据的格式 channels = 1 # 声道数 rate = 44100 # 采样率 record_seconds = 5 # 录制时长 # 创建PyAudio对象 p = pyaudio.PyAudio() # 打开音频流 stream = p.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() # 关闭PyAudio对象 p.terminate() # 保存录制的音频数据为WAV文件 wf = wave.open("recorded_audio.wav", "wb") wf.setnchannels(channels) wf.setsampwidth(p.get_sample_size(format)) wf.setframerate(rate) wf.writeframes(b"".join(frames)) wf.close() ``` 2. 音频播放: ```python import pyaudio import wave # 打开WAV文件 wf = wave.open("recorded_audio.wav", "rb") # 创建PyAudio对象 p = pyaudio.PyAudio() # 打开音频流 stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True) print("开始播放音频...") # 播放音频数据 data = wf.readframes(chunk) while data: stream.write(data) data = wf.readframes(chunk) print("播放完成!") # 停止音频流 stream.stop_stream() stream.close() # 关闭PyAudio对象 p.terminate() ``` 请注意,上述代码的"recorded_audio.wav"是录制音频的保存路径,你可以根据需要修改为你想要保存的文件名和路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值