tkinter+火山引擎+python实现语音识别聊天机器人

想要做一款能通过语音识别来聊天的智能机器人,首先需要能通过麦克风录制语音进行识别转换成文字,将文字发送给机器人得到聊天结果,并能将返回的文字转换成语音进行合成,之后再通过本地播放语音实现语音交互。

架构:

 实现步骤

 一、本地录音

本地录音可以通过pyAudio库实现语音录制。

音频采样率

音频采样率是指在一秒钟内对声音进行采样的次数。采样率越高,音频质量就越好。常见的音频采样率是44.1kHz和48kHz。

音频位深度

音频位深度是指存储每个采样的精度。位深度越高,音频质量就越好。常见的位深度是16位和24位。

音频通道数

音频通道数是指记录音频信号的通道数。单通道(单声道)音频只有一个通道,双通道(立体声)音频有两个通道,多通道音频有超过两个通道。

PyAudio API

PyAudio的API定义了一组函数和常量,可用于录制、播放和处理音频数据。以下是一些重要的函数和常量:

pyaudio.PyAudio()

这是一个构造函数,用于创建一个PyAudio实例。可以使用这个实例来访问其他PyAudio函数。

pyaudio.paInt16

这是一个常量,代表16位音频数据类型。您可以使用其他常量来指定不同的音频数据类型。

pyaudio.paFloat32

这是一个常量,代表32位浮点数音频数据类型。这种数据类型通常用于音频信号处理。

PyAudio.open()

这个函数用于打开音频流。它返回一个PyAudio的流对象。

stream.read()

这个函数用于从音频流中读取数据。

stream.write()

这个函数用于将数据写入音频流。

import requests
import pyaudio
import wavedef record_human_voice():chunk = 1024FORMAT = pyaudio.paInt16CHANNELS = 2RATE = 44100RECORD_SECONDS = 5WAVE_OUTPUT_FILENAME = "output.wav"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()p.terminate()wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')wf.setnchannels(CHANNELS)wf.setsampwidth(p.get_sample_size(FORMAT))wf.setframerate(RATE)wf.writeframes(b''.join(frames))wf.close()if __name__ == '__main__':record_human_voice()

本地录音结束后,可以在本地项目目录下生成一个output.wav语音文件,可以通过本地播放器尝试打开播放,是否为本人录制视频。另外,需要注意,需要打开windows声音模块的麦克风录制开关,否则不能成功执行。

二、语音播放

可以使用wav

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

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

相关文章

2024-06-05-记一次cnvd渗透

前言:挖src挖郁闷了,闲来无事选择挖一个cnvd来练练手,本次的漏洞都没啥难度,企查查资产过了5000万 说一下cnvd证书的下放标准 对于中危及中危以上通用型漏洞(CVSS2.0基准评分超过4.0分),以及涉…

Scaling vision Transformer 论文理解

Scaling vision Transformer 论文理解 1. 摘要2. 一些主要结论小结2.1 few shot transfer learning2.2 Pareto-front3. 讨论3.1 Limitations3.2 社会作用4. 文章结论参考资料1. 摘要 Attention-based neural networks such as the Vision Transformer (ViT) have recently att…

valgrind-内存泄漏定位工具

1、前言 valgirnd 是一套开放源代码的动态调试工具集合。能够检测内存管理错误,线程BUG等。valgirnd是由内核以及基于内核的其他调试工具组成。内核类似于一个框架,它模拟了一个cpu的环境,并提供服务给其他工具使用。而其他工具则类似于插件…

红酒:红酒保存中的光照与避免阳光直射

在红酒保存中,光照是一个常常被忽视的因素。光照对红酒的影响是不可小觑的,因为阳光中的紫外线会加速红酒的氧化,导致其口感和品质的下降。因此,在保存云仓酒庄雷盛红酒时,应特别注意避免阳光直射。 阳光直射对红酒的影…

企业代码签名证书1300元

随着手机和电脑等设备的普及,越来越多的开发者进入软件行业,为了软件的安全性、完整性和可信度,开发者往往会使用由正规CA认证机构颁发的代码签名证书对软件代码进行数字签名,来标识软件的来源和软件开发者的真实身份。今天就随SS…

AGI时代下,计算机专业出身的程序员该何去何从?

Easy:单独开个贴说一下吧。 如果你计算机、软件工程、通信、电子、网络等相关专业本科毕业,也考虑前后端/测试岗,戳 技术大厂,6险1金,待遇不错。 提前说明,一切以古代思维对AGI时代的推演,都是可…

博物馆文物库房管理软件

博物馆作为文化遗产的守护者和传承者,承载着人类智慧与文明的结晶。在博物馆的背后,一个庞大而严密的管理系统支撑着文物的保护与展示。而其中,文物库房管理软件的使用,无疑是一项重要的管理工具。 文物库房管理软件的功能具有多样…

【CentOS 7】挑战探索:在CentOS 7上实现Python 3.9的完美部署指南

【CentOS 7】挑战探索:在CentOS 7上实现Python 3.9的完美部署指南 大家好 我是寸铁👊 总结了一篇【CentOS 7】挑战探索:在CentOS 7上实现Python 3.9的完美部署指南详细步骤✨ 喜欢的小伙伴可以点点关注 💝 前言 此篇教程只适用于p…

【java前端课堂】05_类的多态

类的多态是面向对象编程的三大特性之一,与封装和继承并列。多态性允许我们将父对象设置为与其子对象相等的技术,让我们可以把一个子对象当作父对象对待。在Java中,多态主要体现在以下三个方面: 方法的重载(Overloadin…

【Mybatis】源码分析-高级应用

1、Mybatis配置文件深入理解 1.2、动态SQL语句 Mybatis 的映射⽂件中,前⾯我们的 SQL 都是⽐较简单的,有些时候业务逻辑复杂时,我们的 SQL是动态变化的,此时在前⾯的学习中我们的 SQL 就不能满⾜要求了。 1.2.1、条件判断 我们根…

技巧:合并ZIP分卷压缩包

如果ZIP压缩文件文件体积过大,大家可能会选择“分卷压缩”来压缩ZIP文件,那么,如何合并zip分卷压缩包呢?今天我们分享两个ZIP分卷压缩包合并的方法给大家。 方法一: 我们可以将分卷压缩包,通过解压的方式…

E10:系统弹窗提示

效果– window.WeFormSDK.showMessage("这是一个E10的提示", 3, 2); const onClickCreate () > console.log("create"); const onClickSave () > console.log("save"); const onClickCancel () > dialogComponent?.destroy(); co…

Java四舍五入保留小数

这里介绍两种方法: package Book.jj.hh;import java.text.DecimalFormat; //使用DecimalFormat类 public class Demo1 {public static void main(String[] args) {double num 123.52631;DecimalFormat a new DecimalFormat("#.00"); //小数点后有几个0…

SpringCloud Gateway基础入门与使用实践总结

官网文档:点击查看官网文档 Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关。但在2.x版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关替代Zuul,那就是SpringCloud Gateway一句话…

抖音账号永久封号后强制注销释放实名!一分钟教程方法公开

目前方法是可行的,不知道能保持多久! 下载旧版本抖音:下载抖音6.8版本或5.8版本的老版本应用。 使用封禁手机号登录:使用已被永久封禁的手机号登录旧版本的抖音应用。 账号注销操作: 在设置中找到账号与安全的选项。…

从零开始发布你的第一个npm插件包并在多项目中使用

引言 在开源的世界里,每个人都有机会成为贡献者,甚至是创新的引领者。您是否有过这样的想法:开发一个解决特定问题的小工具,让她成为其他开发者手中的利器?今天,我们就来一场实战训练,学习如何将…

【ubuntu】增加samba服务和文件夹

发现ai -server的ubuntu机器无法git clone 下来github的文件所以 使用samba 连接到linux的文件夹proj然后在我的windows上git clone 即可。安装samba Creating config file /etc/samba/smb.conf with new version Setting up libcephfs2 (17.2.7-0ubuntu0.22.04.1) ... Setting…

漏洞挖掘 | 验证码绕过

还是老规矩,开局一个登录框,中途漏洞全靠舔,先来研究一下这个登录窗口 很好,发现有验证码登录,先测试测试能不能并发 看来没有,只成功发送了两条,再看看验证码是不是4位 很好,是4位。…

UE5-AI

AI角色 角色控制器 AI角色必须要一个角色控制器 角色控制器最基本只需要执行行为树,在EventOnPossess后runBehaviorTree 如果要的是一个角色,可以创建一个Character,在类默认设置中可以找到 Pawn->AIControllerClass,在这里…

Android 架构组件面试问答

1. 什么是 Android Architecture Components? 答: 组件是一组库,可帮助您设计健壮、可测试且可维护的应用程序。它们提供了一种清晰且惯用的方式来使用 REST API。这些组件包括 Room、ViewModel、LiveData 等。 2. 什么是LiveData&#xff…