python 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()
原文地址:https://blog.csdn.net/weixin_43327597/article/details/134795373
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_41128.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。