python pyaudio实时读取音频数据并展示波形图

python pyaudio实时读取音频数据并展示波形图

下面代码可以驱动电脑接受声音数据,并实时展示音波图:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import pyaudio
import wave
import os
import operator
from functools import reduceclass SubplotAnimation(animation.TimedAnimation):def __init__(self, static=False, path=None):"""音频波形动态显示,实时显示波形:param static: 是否为静态模式:param path:   wav 文件路径"""self.static = staticif static and os.path.isfile(path):self.stream = wave.open(path)# 采样频率self.rate = self.stream.getparams()[2]self.chunk = self.rate / 2self.read = self.stream.readframeselse:self.rate = 8000  # 采样率self.chunk = 200  # 语音块大小self.deviceindex = 0  # 录音设备编号p = pyaudio.PyAudio()# frames_per_buffer=self.chunk 设置音频流的缓冲区大小,即每次从音频设备读取的数据块的大小self.stream = p.open(format=pyaudio.paInt16, channels=1, rate=self.rate,input_device_index=self.deviceindex,input=True, frames_per_buffer=self.chunk)self.read = self.stream.readself.chunknum = 40  # 同屏显示语音块的数量self.voicedatas = []self.zero = [0 for i in range(self.chunk)]for index in range(self.chunknum):self.voicedatas.insert(0, self.zero)# 定义波形显示图的横纵坐标大小及类别并选用读取实时音频数据方式显示,设定更新间隔def start(self):fig = plt.figure()ax1 = fig.add_subplot(1, 1, 1)ax1.set_xlabel("t")ax1.set_ylabel("x")ax1.set_xlim(0, 1.0 * (self.chunknum * self.chunk - 1) / self.rate)ax1.set_ylim(-16000, 16000)self.line1, = ax1.plot([], [], lw=2)# 更新间隔/msinterval = int(1000 * self.chunk / self.rate)animation.TimedAnimation.__init__(self, fig, interval=interval, blit=True)# 初始化绘图,l.set_data([], []) 将绘图数据清空,使得动画开始时图像为空白状态def _init_draw(self):lines = [self.line1]for l in lines:l.set_data([], [])def new_frame_seq(self):return iter(range(self.chunk))def _draw_frame(self, framedata):if self.static:# 读取静态wav文件波形y = np.fromstring(self.read(self.chunk / 2 + 1), dtype=np.int16)[:-1]else:# 实时读取声频data = np.fromstring(self.read(self.chunk, exception_on_overflow=False), dtype=np.int16)data = data.tolist()self.voicedatas.append(data)self.voicedatas.pop(0)y = reduce(operator.add, self.voicedatas)  # 将 self.voicedatas 中的 40 个列表数据全部放在 1 个列表中x = np.linspace(0, 1.0 * (self.chunknum * self.chunk - 1) / self.rate, self.chunknum * self.chunk)# 画波形图self.line1.set_data(x, y)ani = SubplotAnimation()
ani.start()
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/247182.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据的力量:Web3 游戏运营指南

在充满活力的 Web3 游戏行业中,市场的起伏不定为开发者带来了挑战和机遇。利用数据的能力对于游戏开发者来说至关重要,能够实时监控游戏内的经济状况并分析玩家行为。这些功能可以帮助项目方获得宝贵的智慧洞察,优化游戏设计,提高…

网页文章采集工具-人工智能AI功能

简数采集器是一款支持人工智能AI功能的网页文章采集工具,它可以调用百度的文心一言AI对采集的数据进行分析,处理,内容创作等等,根据你的需求进行更加灵活的数据采集和处理。 文心一言人工智能AI功能使用方法: 1. 填写…

什么是美颜sdk?美颜sdk对比评测、技术评估

为了满足用户对于更美好画面的需求,各种美颜sdk应运而生。本文将深入探讨美颜sdk的概念,进行对比评测,并对其技术进行综合评估。 一、什么是美颜sdk? 美颜sdk使开发者们可以方便地在自己的应用中集成美颜功能,从而提…

软著项目推荐 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景🚩 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率(Accuracy)3.2 精确率(Precision)和召回率(Recall)3.3 平均精…

线上超市小程序可以做什么活动_提升用户参与度与购物体验

标题:线上超市小程序:精心策划活动,提升用户参与度与购物体验 一、引言 随着移动互联网的普及,线上购物已经成为人们日常生活的一部分。线上超市作为线上购物的重要组成部分,以其便捷、快速、丰富的商品种类和个性化…

pbootcms建站

pbootcms建站 一、下载pbootcms二、安装1、进入宝塔面在网站栏,新建站点,将该址里面文件全部清再将下载的pbootcms上传至该地址。 三、修改关联数据库1、在根目录下/config打开database.php照如下修改这里我使用mysqli数据库。修改并使用自已创建的数据库…

深入浅出理解kafka

1.Kafka简介 Kafka 本质上是一个 MQ(Message Queue),使用消息队列的优点: 解耦:允许独立的扩展或修改队列两边的处理过程。可恢复性:即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系…

2023经典软件测试面试题

1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? 首先,将问题提交到缺陷管理库里面进行备案。 然后,要获取判断的依据和标准: 根据需求说明书、产品说明、设计…

使用Java语言判断一个数据类型是奇数还是偶数

判断一个数字类型是奇数,还是偶数,只需要引入Scanner类,然后按照数据类型的定义方式进行定义,比较是按照与2进行整除后的结果;如果余数为零,则代表为偶数,否则为奇数。 import java.util.Scann…

RK3588+MCU机器人控制器解决方案

1 产品简介 XMP04A 是一款信迈科技基于 RK3588 设计的高性能、低功耗的边缘计算设备, 内置 NPU 算力可达 6.0TOPSINT8,以及具备强大的视频编解码能力,最高可支持 32 路 1080P30fps 解码和 16 路 1080P30fps 编码 ,支持 4K12…

客户服务系统的优势:提升客户满意度与工作效率

在如今竞争激烈的商业环境中,优质的客户服务是企业取得成功的重要关键。而企业适用客服系统作为一种高效的工具,为企业提供了许多优势,助力其在客户服务方面取得突出表现。随着消费者对客户服务的要求不断提高,企业需要更好地满足…

01 高等数学.武忠祥.0基础

第一章 函数与极限 01映射与函数 02 函数概念 对应法则 定义域 常见函数 函数的几种特性 周期函数不一定有最小周期。 涉及额外与复习 存在与任意的关系