调用百度api实现语音识别(python)

该代码实现了一个企业级的语音识别解决方案,通过调用百度语音识别API,实现实时录音识别和对已有音频语音识别功能。

百度智能云:请自行访问百度智能云,开通免费的语音识别功能,获取API_KEY和SECRET_KEY。操作按照百度流程即可,可免费申请。

首先,配置下百度API和描述下错误代码信息。以下是音频相关具体参数:

采样率16000 Hz符合语音识别最佳实践
缓冲区大小1024样本/块平衡延迟与稳定性
最大录音时长60秒API限制
文件大小限制10MB内存安全阈值
线程超时1000ms防止僵尸线程
状态刷新频率500ms用户体验优化
# 百度API配置(替换为您自己的API信息)
API_KEY = "你的API_KEY"
SECRET_KEY = "你的SECRET_KEY"
AUTH_URL = "https://aip.baidubce.com/oauth/2.0/token"
ASR_URL = "https://vop.baidubce.com/pro_api"# 错误代码映射
ERROR_CODES = {3300: '输入参数不正确',3301: '音频质量过差',3302: '音频鉴权失败',3303: '服务端请求失败',3304: '音频过长(超过60秒)',3305: '音频数据错误',3307: '识别结果解密失败',3308: '语音服务器系统错误',3309: '上传的音频没有有效数据',3310: '输入的音频文件过大',3311: '采样率参数错误',3312: '音频格式参数错误',3313: '语音服务器忙',
}

下面,进行‌窗口配置‌,设置窗口标题为 "百度语音识别工具",定义窗口初始大小为 800x500 像素
‌状态初始化‌:is_recording: 录音状态标志(False 表示未在录音);access_token: 存储百度API的访问令牌(初始为None);audio: PyAudio实例,用于音频输入输出控制;recording_thread: 录音线程(用于后台录音);temp_files: 临时录音文件存储列表。
‌音频参数‌:”FORMAT- 音频格式为16位PCM(pyaudio.paInt16);CHANNELS- 单声道录音(1声道);RATE- 采样率16000Hz(符合百度API要求);CHUNK: 每次读取的音频块大小(1024样本) 。

def __init__(self, root):self.root = rootroot.title("百度语音识别工具")root.geometry("800x500")# 初始化状态self.is_recording = Falseself.access_token = Noneself.audio = pyaudio.PyAudio()self.recording_thread = Noneself.temp_files = []# 音频参数self.FORMAT = pyaudio.paInt16self.CHANNELS = 1self.RATE = 16000self.CHUNK = 1024# 创建界面self.setup_ui()# 获取访问令牌self.get_access_token()

下面进行界面布局,使用 ttk.Frame 作为容器,标题为 "文件操作",文本输入框 (ttk.Entry): 显示选择的文件路径,"浏览..." 按钮: 调用 select_file 方法打开文件对话框,"开始识别" 按钮: 调用 process_selected_file 处理文件。‌录音控制区‌:单个按钮 (record_btn),初始文本为 "▶ 开始录音"
点击触发 toggle_recording 方法切换录音状态;‌结果展示区‌:tk.Text 组件支持文本换行 ,附加垂直滚动条 (ttk.Scrollbar),与文本框联动。使用 StringVar 动态更新状态文本。

def setup_ui(self):"""设置界面布局"""main_frame = ttk.Frame(self.root, padding=10)main_frame.pack(fill=tk.BOTH, expand=True)# 文件选择区域file_frame = ttk.LabelFrame(main_frame, text="文件操作", padding=10)file_frame.pack(fill=tk.X, pady=5)self.file_entry = ttk.Entry(file_frame, width=50)self.file_entry.pack(side=tk.LEFT, padx=5)ttk.Button(file_frame, text="浏览...", command=self.select_file).pack(side=tk.LEFT, padx=5)ttk.Button(file_frame, text="开始识别", command=self.process_selected_file).pack(side=tk.LEFT, padx=5)# 录音控制区域record_frame = ttk.LabelFrame(main_frame, text="实时录音", padding=10)record_frame.pack(fill=tk.X, pady=5)self.record_btn = ttk.Button(record_frame, text="▶ 开始录音",command=self.toggle_recording)self.record_btn.pack(pady=5)# 结果显示区域result_frame = ttk.LabelFrame(main_frame, text="识别结果", padding=10)result_frame.pack(fill=tk.BOTH, expand=True)self.result_text = tk.Text(result_frame, wrap=tk.WORD)scrollbar = ttk.Scrollbar(result_frame, command=self.result_text.yview)self.result_text.configure(yscrollcommand=scrollbar.set)self.result_text.pack(side=tk.LEFT, fill=tk

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

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

相关文章

Python实现小红书app版爬虫

简介:由于数据需求的日益增大,小红书网页版已经不能满足我们日常工作的需求,为此,小编特地开发了小红书手机版算法,方便大家获取更多的数据,提升工作效率。 手机版接口主要包括:搜素&#xff0…

【AndroidRTC-11】如何理解webrtc的Source、TrackSink

Android-RTC系列软重启,改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性,方便形成肌肉记忆。同时不分种类、不分难易程度,在线征集问题切入点。 问题1:如何理解VideoSource、VideoTrack&VideoSink三者的关系…

Windows安装Rust环境(详细教程)

一、 安装mingw64(C语言环境) Rust默认使用的C语言依赖Visual Studio,但该工具占用空间大安装也较为麻烦,可以选用轻便的mingw64包。 1.1 安装地址 (1) 下载地址1-GitHub:Releases niXman/mingw-builds-binaries GitHub (2) 下载地址2-W…

英伟达黄仁勋谈人工智能趋势,首提代理式AI,后续机器人将登场

近日,英伟达 GTC 2025 大会主题演讲中,英伟达 CEO 黄仁勋再次身穿皮衣登场。黄仁勋一上来就提到了 AI 发展的未来,现在我们处于生成式 AI(Generative AI)阶段,但根据黄仁勋的路线图,我们将迈向一…

LCR 187. 破冰游戏(python3解法)

难度:简单 社团共有 num 位成员参与破冰游戏,编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target,从 0 号成员起开始计数,排在第 target 位的成员离开圆桌,且成员离开后从下一个成员开始计数…

水星(MERCURY)监控初始化的恢复和转码方法

水星(MERCURY)的安防监控恢复了很多,其嵌入式文件系统也一直迭代更新。做为数据恢复从业者每天处理最多的就是恢复数据,但是有的时候业务的需要我们不仅仅恢复出数据,还需要能够转码成通用的MP4类文件并要求画面和声音实现“同步”。 故障存…

基于SpringBoot的实现的客户关系管理系统(CRM)(源码+数据库)

464客户关系管理系统(CRM),主要功能如下 【后台功能】 权限管理模块: 包括系统的登录与注册功能 用户管理模块: 基于RBAC的权限模型设计, 实现分配角色的功能功能 客户管理模块: 对客户信息进行新增 修改 删除 查看 联络信息管理模块: 对联络…

关于网络的一点知识(持续更新)

1、IP地址和子网掩码、端口号: IP地址是设备在网络上的地址,相当于一栋房子的门牌号。子网掩码相当于房子所在的街道。同一条街道的房子间是通过街道直通的,主人可以互相拜访。 举个例子,如下图所示。 说明:将两台设备的IP和子网掩码转化为二进制,然后将各自的IP地址和…

Python---数据分析(Pandas八:二维数组DataFrame数据操作一: 数据清洗,数据转换)

一、 数据清洗 1.1、 isnull() 用于检测 DataFrame 中的缺失值,它会返回一个相同形状的布尔型 DataFrame,其中每个元素表示原始 DataFrame 中相应位置的元素是否是缺失 值。 import pandas as pd import numpy as np# 创建一个包含缺失值的 DataFrame …

智能汽车图像及视频处理方案,支持视频星轨拍摄能力

美摄科技作为智能汽车图像及视频处理领域的先行者,正以革新性的技术引领着行业的未来发展。美摄科技智能汽车图像及视频处理方案,一个集高效性、智能化、画质增强于一体的创新解决方案,旨在重塑智能汽车图像画质的新标准,并支持前…

Flask接口开发--GET接口

安装Flask 1.安装命令: pip3 install Flask2.查看Flask版本: pip3 show flask如图我的Flask版本号是2.0.3 项目创建 1、在PyCharm中,我们点击左上方的 file,选择 New Project,创建一个Flask项目。(Py…

应用权限组列表

文章目录 使用须知位置相机麦克风通讯录日历运动数据身体传感器图片和视频音乐和音频跨应用关联设备发现和连接剪切板文件夹文件(deprecated) 使用须知 在申请目标权限前,建议开发者先阅读应用权限管控概述-权限组和子权限,了解相关概念,再合…

Python为Word文档添加书签并打包成exe

背景简述 由于一些工作场景,需要从多个Word文档中找到出现的关键词,并阅读关键词的上下文内容。文件可能几十个,手动操作太要命了。所以python尝试处理。 目录 背景简述思路第一步、功能实现结果验证 第二步、打包成exe2-1、基础准备2-2、打…

【MYSQL】索引和事务

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 本期内容讲解 MySQL 中的索引和事务,在学习的过程中,我们需要经常问自己为什么 文章目录 1. 索…

2021年蓝桥杯第十二届CC++大学B组真题及代码

目录 1A:空间(填空5分_单位转换) 2B:卡片(填空5分_模拟) 3C:直线(填空10分_数学排序) 4D:货物摆放(填空10分_质因数) 5E&#xf…

PicGo安装与配置-Gitee图床

1、 前言 平时使用Typora写文章,上传文章到第三方平台上去都要把图片一个一个上传上去,于是我就百度了有没有什么方法可以省略这一步骤,我发现Typora可以用PicGo+Gitee图床方式,这个挺容易的,我把安装的过程在此记录下来。 PicGo是一个用于快速上传图片并获取图片 URL 链…

html css js网页制作成品——HTML+CSS+js迪奥口红网站网页设计(4页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&#x1f…

重学Java基础篇—如何优雅的删除HashMap元素

在Java中优雅地删除HashMap元素需要注意遍历时的安全性和代码的简洁性。 以下是几种推荐的方法: 1. 使用迭代器遍历并删除(传统方式) 在遍历时通过迭代器的remove() 方法删除元素,避免ConcurrentModificationException异常。 H…

26考研——图_图的遍历(6)

408答疑 文章目录 三、图的遍历图的遍历概述图的遍历算法的重要性图的遍历与树的遍历的区别图的遍历过程中的注意事项避免重复访问遍历算法的分类遍历结果的不唯一性 广度优先搜索广度优先搜索(BFS)概述BFS 的特点广度优先遍历的过程示例图遍历过程 BFS …

2025-03-24 学习记录--C/C++-PTA 习题7-6 统计大写辅音字母

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 习题7-6 统计大写辅音字母 英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给…