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音频文件
在这里插入图片描述

原文地址:https://blog.csdn.net/weixin_43327597/article/details/134795373

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_41128.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注