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

news2024/11/16 1:17:20

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

架构:

 实现步骤

 一、本地录音

本地录音可以通过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 wave


def record_human_voice():
    chunk = 1024
    FORMAT = pyaudio.paInt16
    CHANNELS = 2
    RATE = 44100
    RECORD_SECONDS = 5
    WAVE_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.coloradmin.cn/o/1793123.html

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

相关文章

外企跨国大数据迁移的注意事项

跨国数据迁移,对汽车行业来说,是一桩大事。跨国公司在进行这一操作时,会遇到不少挑战,比如网络延迟、数据安全、成本控制等等。今天,咱们就聊聊跨国大数据迁移中,跨国车企需要留意的几个关键点。 跨国大数据…

vue3-调用API实操-调用开源头像接口

文档部分 这边使用是开源的API 请求地址: :https://api.uomg.com/api/rand.avatar 返回格式 : json/images 请求方式: get/post 请求实例: https://api.uomg.com/api/rand.avatar?sort男&formatjson 请求参数 请求参数说明 名称必填类型说明sort否strin…

Web3的应用场景分析

Web3,即基于区块链技术的去中心化互联网,正逐渐改变我们与数字世界的互动方式。以下是Web3的一些主要应用场景。Web3技术正在各个领域推动创新,创造更多透明、开放和去中心化的解决方案,为用户带来更高的自主权和安全性。北京木奇…

【QGIS】加载在线地图(天地图)

QGIS添加天地图 注册天地图用户 想使用天地图必须申请tk 天地图官方注册用户地址 https://uums.tianditu.gov.cn/register 申请key key管理页面 https://console.tianditu.gov.cn/api/key 链接说明 https://t6.tianditu.gov.cn/DataServer?Tcva_w&x{x}&y{y}&…

场外个股期权交易最新指南

场外个股期权交易最新指南 场外个股期权作为一种灵活的衍生品工具,允许投资者在特定条件下对交易所指定的股票进行买卖。相较于标准化的场内个股期权,场外个股期权为投资者提供了更大的自由度。以下是关于场外个股期权交易的基本步骤和要点:…

[vue2项目]vue2+supermap[mapboxgl]+天地图之地图的基础操作(画线+自定义打点)

二、地图的基础操作 1、画线 案例(1) this.map.on("load", () > {let geometryLine {type: "Feature",geometry: {// 定义类型type: "LineString",coordinates: [[113.39793764, 34.05675322],[113.35187554, 32.43…

文件传输基础——Java IO流

系列文章目录 文章目录 系列文章目录前言一、文件的编码二、File类的使用三、RandomAccessFile类的使用 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用…

TPM仿真环境搭建

文章目录 背景及注意事项一、CMake二、m4三、GNU MP Library四、TPM_Emulator五、TSS协议栈(trousers-0.3.14.tar.gz)六、 tpm-tools七、查看是否安装成功八、测试 TPM环境(需要开三个终端分别运行)8.1 启动TPM (第一个…

【机器学习基础】Python编程03:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面: 简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。 丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些…

华为手机录屏在哪里?图文详解帮你找!

随着科技的进步,智能手机已成为我们日常生活中不可或缺的工具。其中,华为手机凭借其卓越的性能和用户体验,在全球范围内赢得了广泛的赞誉。在众多功能中,录屏功能尤为实用,无论是制作教程、记录游戏精彩瞬间&#xff0…

实现教育数字化转型,选择智慧校园软件

在当今数字时代,教育数字化转型已经成为不可忽视的趋势。随着技术的不断发展,智慧校园软件正日益受到教育机构的关注。那么,为什么选择智慧校园软件能够成为实现教育数字化转型的最佳解决方案呢? 首先,智慧校园软件为教…

用langchain搭配最新模型ollama打造属于自己的gpt

langchain 前段时间去玩了一下langchain,熟悉了一下大模型的基本概念,使用等。前段时间meta的ollama模型发布了3.0,感觉还是比较强大的,在了解过后,自己去用前后端代码,调用ollama模型搭建了一个本地的gpt应用。 核心逻辑 开始搭…

七天进阶elasticsearch[one]

elasticSearch 概述 Elasticsearch是一个近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个很小的延迟(通常是一秒) 集群 一个集群就是由一个或多个节点组织在一起, 它们共同持有你全部的数据&#x…

初识 MyBatis 【MyBatis 核心概念】

MyBatis 简介: MyBatis 是一个优秀的持久层框架,它对JDBC操作数据库的过程进行封装,使开发者只需要关注sql本身,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyB…

【人工智能】第五部分:ChatGPT的实际应用案例和未来发展方向

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

解决vscode终端不显示conda环境变量名称问题【详细步骤!实测可行!!】

最近在使用Visual Studio Code (VSCode) 时候,发现终端没有正确显示激活的conda环境名称,搜了一下,找到原因,记录一下,如果有人也遇到同样的问题,可以收藏一下。   分别两种情况,一是windows系…

SpringBoot+Vue在线视频课程网站(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 用户教师管理员 系统功能截图

2.1.4 采用配置类与注解方式使用MyBatis

实战概述:采用配置类与注解方式使用MyBatis 创建MyBatis配置类 在net.huawei.mybatis.config包中创建MyBatisConfig类,用于配置MyBatis核心组件,包括数据源、事务工厂和环境设置。 配置数据源和事务 使用PooledDataSource配置MySQL数据库连接…

基于LabVIEW虚拟示波器设计

随着计算机技术的发展,传统仪器开始向计算机化的方向发展。虚拟仪器是90年代提出的新概念。虚拟仪器技术的提出与发展,标志着二十一世纪自动测试与电子测量仪器领域技术发展的一个重要方向。所谓虚拟仪器,就是在通用的计算机平台上定义和设计…

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存 一、简介二、数据包格式2.1 服务请求格式2.2 服务响应格式2.2.1 肯定响应2.2.2 否定响应 三、通信示例 Tip📌:本文描述中但凡涉及到其他UDS服务的,将陆续提供链接跳转方…