調用百度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.pswp.cn/bicheng/74421.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74421.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74421.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

KRaft模式

目錄標題 Kraft模式**1. 什么是Kraft模式?****2. 為什么引入Kraft模式?****3. 核心優勢****4. 架構與工作原理****5. 部署與配置要點****6. 適用場景與最佳實踐****總結**KIP-833: Mark KRaft as Production Ready除了Kraft模式,Kafka還有以下…

單片機電路中常見的英文術語及縮寫

以下是單片機電路中常見的英文術語及縮寫的解釋及其作用說明,按功能分類整理,便于理解: 一、核心術語 MCU (Microcontroller Unit) ? 中文:微控制器單元 ? 作用:單片機的核心芯片,集成CPU、存儲器、外設接…

常見框架漏洞之一:Thinkphp5x

ThinkPHP是為了簡化企業級應?開發和敏捷WEB應?開發?誕?的,是?個快速、兼容?且簡單的輕量級國產PHP開發框架,誕?于2006年初,原名FCS,2007年元旦正式更名為 ThinkPHP,遵循Apache2開源協議發布,從Stru…

2025年優化算法:龍卷風優化算法(Tornado optimizer with Coriolis force,TOC)

龍卷風優化算法(Tornado optimizer with Coriolis force)是發表在中科院二區期刊“ARTIFICIAL INTELLIGENCE REVIEW”(IF:11.7)的2025年智能優化算法 01.引言 當自然界的狂暴之力,化身數字世界的智慧引擎&…

面試中如何回答性能優化的問題

性能問題和Bug不同,后者的分析和解決思路更清晰,很多時候從應用日志(文中的應用指分布式服務下的單個節點)即可直接找到問題根源,而性能問題,其排查思路更為復雜一些。 對應用進行性能優化,是一個系統性的工程,對工程師的技術廣度和技術深度都有所要求。一個簡單的應用…

CMake 函數和宏

CMake 函數 CMake 函數定義語法如下, 其中 name 為函數名, <arg1> 為參數名, <commands> 為函數體. 函數定義后, 可以通過 name 調用函數. 函數名允許字母數字下劃線, 不區分大小寫. function(name [<arg1> ...])<commands> endfunction()如下的樣例…

【QA】Qt有哪些迭代器模式的應用?

在 Qt/C 中&#xff0c;迭代器模式的設計主要分為 標準 C 風格 和 Qt 框架特有風格&#xff0c;以下結合代碼詳細說明兩種實現方式的關鍵設計及其應用場景&#xff1a; 一、Qt 框架中的迭代器模式設計 Qt 提供了兩種迭代器風格&#xff1a;Java 風格&#xff08;顯式迭代器&am…

Mysql表的簡單操作

&#x1f3dd;?專欄&#xff1a;Mysql_貓咪-9527的博客-CSDN博客 &#x1f305;主頁&#xff1a;貓咪-9527-CSDN博客 “欲窮千里目&#xff0c;更上一層樓。會當凌絕頂&#xff0c;一覽眾山小。” 目錄 3.1 創建表 3.2 查看表結構 3.3 修改表 1. 添加字段 2. 修改字段 3…

【云馨AI-大模型】自動化部署Dify 1.1.2,無需科學上網,Linux環境輕松實現,附Docker離線安裝等

Dify介紹 官網&#xff1a;https://dify.ai/zh生成式 AI 應用創新引擎開源的 LLM 應用開發平臺。提供從 Agent 構建到 AI workflow 編排、RAG 檢索、模型管理等能力&#xff0c;輕松構建和運營生成式 AI 原生應用。 Dify安裝腳本 目錄創建 mkdir -p /data/yunxinai &&a…

WordPress上傳圖片時顯示“未提供數據”錯誤

在WordPress中上傳圖片時顯示“未提供數據”的錯誤&#xff0c;通常是由多種原因引起的&#xff0c;以下是一些常見的問題及其解決方法&#xff1a; 1. 文件權限問題 WordPress需要正確的文件和目錄權限才能正常上傳圖片。如果權限設置不正確&#xff0c;可能會導致無法上傳圖…

python3面試題20個(python web篇)

更多內容請見: python3案例和總結-專欄介紹和目錄 文章目錄 1.python asyncio的原理?2.對Flask藍圖(Blueprint)的理解?3.Flask 和 Django 路由映射的區別?4.什么是wsgi,uwsgi,uWSGI?5.Django、Flask、Tornado的對比?6.CORS 和 CSRF的區別?7.Session,Cookie,JWT的理解8.簡…

RedisTemplate和RedissonClient適用的場景有什么不同

在 Spring Boot 項目中&#xff0c;RedisTemplate 和 RedissonClient 分別針對不同的使用場景設計&#xff0c;以下是它們的核心區別和適用場景分析&#xff1a; 一、RedisTemplate&#xff08;Spring Data Redis&#xff09; 定位 Spring 官方提供的 Redis 操作工具&#xf…

人臉表情識別系統分享(基于深度學習+OpenCV+PyQt5)

最近終于把畢業大論文忙完了&#xff0c;眾所周知碩士大論文需要有三個工作點&#xff0c;表情識別領域的第三個工作點一般是做一個表情識別系統出來&#xff0c;如下圖所示。 這里分享一下這個表情識別系統&#xff1a; 采用 深度學習OpenCVPyQt5 構建&#xff0c;主要功能包…

GitHub供應鏈攻擊事件:Coinbase遭襲,218個倉庫暴露,CI/CD密鑰泄露

此次供應鏈攻擊涉及GitHub Action "tj-actions/changed-files"&#xff0c;最初是針對Coinbase的一個開源項目的高度定向攻擊&#xff0c;隨后演變為范圍更廣的威脅。 攻擊過程與影響 Palo Alto Networks Unit 42在一份報告中指出&#xff1a;“攻擊載荷主要針對其…

Redis 核心源碼解析:從設計哲學到企業級應用實踐

一、Redis 的核心設計哲學 Redis 的成功源于其 「用內存換時間」 的核心理念&#xff0c;圍繞以下三個核心原則構建&#xff1a; 極簡主義&#xff1a;單線程模型避免鎖競爭&#xff0c;代碼保持高度內聚。 性能至上&#xff1a;所有數據常駐內存&#xff0c;網絡層采用事件驅…

GZCTF平臺搭建及題目上傳

前言 我用手里的Ubuntu虛擬機搭建的&#xff0c;大家根據自己的實際情況來吧 安裝及部署 首先&#xff0c;你的虛擬機需要有Docker和Docker-Compose&#xff0c;前者可以看我之前的文章&#xff0c;另外一個可以輸入下面的命令安裝&#xff0c;注意先獲取管理員權限&#xff…

Pycharm社區版創建Flask項目詳解

一、創建工程項目 二、配置工程目錄 新建的空項目下創建目錄。 1、新建app.py文件 2、app.py代碼如下&#xff1a; from flask import Flask, render_templateapp Flask(__name__)app.route("/") def root():"""主頁:return: Index.html"&qu…

CentOS 7 64位安裝Docker

以下是在已有的 CentOS 7 64 位虛擬機上安裝 Docker 并配置華為鏡像源的詳細步驟&#xff1a; 1. 備份原有 Yum 源&#xff08;可選&#xff0c;建議操作&#xff09; # 備份原有倉庫文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backu…

運動仿真——phased.Platform

在雷達仿真過程中&#xff0c;運動仿真的必要性&#xff0c;以及運動仿真可以實現哪些功能&#xff0c;在matlab對應的user guide中已經講的很清楚了&#xff0c;這里不再贅述。 本文主要介紹phased.Platform的一些“坑”&#xff0c;和典型的用法。 第一坑&#xff1a;系統對…

緩存刪除三級補償方案:延遲隊列+消息隊列+定時任務兜底

問題背景: 在 Cache-Aside 模式中&#xff0c;更新數據庫后刪除緩存失敗會導致數據不一致。本文提供工業級三級補償方案&#xff0c;實現最終一致性保障。 整體架構: 更新操作觸發 → 一級延遲隊列 → 二級消息隊列 → 三級定時任務方案實現: 一、第一級補償&#xff1a;延遲隊…