当前位置: 首页 > article >正文

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


http://www.kler.cn/a/157179.html

相关文章:

  • 回归分析学习
  • 【贪心算法】——力扣763. 划分字母区间
  • 低功耗WTK6900P语音ic方案助力电子烟技术革新 打造个性化吸烟体验
  • 深入了解Git、GitHub、GitLab及其应用技巧
  • 《JavaEE进阶》----20.<基于Spring图书管理系统①(登录+添加图书)>
  • 如何使用 OpenSubtitles.com 下载字幕?以及如何用 SRT to TXT Converter 转换字幕格式!
  • 【从零开始学习Redis | 第六篇】爆改Setnx实现分布式锁
  • Java 设计模式——备忘录模式
  • docker compose 搭建reids集群 1主2从架构
  • 【C语言】递归详解
  • 【powerjob】定时任务调度器 xxl-job和powerjob对比
  • SQL Sever 基础知识 - 数据筛选(2)
  • PCB走线要“尽量”短_笔记
  • 【数据库设计和SQL基础语法】--SQL语言概述--数据类型和约束
  • 基础堆溢出原理与DWORD SHOOT实现
  • MySQL笔记-第04章_运算符
  • Gson 自动生成适配器插件
  • cocos creator-碰撞检测
  • STM32串口接收不定长数据(空闲中断+DMA)
  • 调试GMS应用,报错“此设备未获得play保护机制认证”问题解决
  • 马斯克极简5步工作法 —— 筑梦之路
  • 大数据技术学习笔记(四)—— HDFS
  • Java生成word[doc格式转docx]
  • 【开源】基于JAVA的天然气工程运维系统
  • ffmpeg学习日记619-指令-透明通道视频相关指令
  • Cpp之旅(学习笔记)第9章 标准库