開源 python 應用 開發(十一)短語音轉文本

?最近有個項目需要做視覺自動化處理的工具,最后選用的軟件為python,剛好這個機會進行系統學習。短時間學習,需要快速開發,所以記錄要點步驟,防止忘記。

?鏈接:

開源 python 應用 開發(一)python、pip、pyAutogui、python opencv安裝-CSDN博客

開源 python 應用 開發(二)基于pyautogui、open cv 視覺識別的工具自動化-CSDN博客

開源 python 應用 開發(三)python語法介紹-CSDN博客

開源 python 應用 開發(四)python文件和系統綜合應用-CSDN博客

開源 python 應用 開發(五)python opencv之目標檢測-CSDN博客

開源 python 應用 開發(六)網絡爬蟲-CSDN博客

開源 python 應用 開發(七)數據可視化-CSDN博客

開源 python 應用 開發(八)圖片比對-CSDN博客

開源 python 應用 開發(九)目標跟蹤-CSDN博客

開源 python 應用 開發(十)音頻壓縮-CSDN博客

開源 python 應用 開發(十一)百度語音識別API-CSDN博客

?推薦鏈接:

開源 Arkts 鴻蒙應用 開發(一)工程文件分析-CSDN博客

開源 Arkts 鴻蒙應用 開發(二)封裝庫.har制作和應用-CSDN博客

開源 Arkts 鴻蒙應用 開發(三)Arkts的介紹-CSDN博客

開源 Arkts 鴻蒙應用 開發(四)布局和常用控件-CSDN博客

開源 Arkts 鴻蒙應用 開發(五)控件組成和復雜控件-CSDN博客

?推薦鏈接:

開源 java android app 開發(一)開發環境的搭建-CSDN博客

開源 java android app 開發(二)工程文件結構-CSDN博客

開源 java android app 開發(三)GUI界面布局和常用組件-CSDN博客

開源 java android app 開發(四)GUI界面重要組件-CSDN博客

開源 java android app 開發(五)文件和數據庫存儲-CSDN博客

開源 java android app 開發(六)多媒體使用-CSDN博客

開源 java android app 開發(七)通訊之Tcp和Http-CSDN博客

開源 java android app 開發(八)通訊之Mqtt和Ble-CSDN博客

開源 java android app 開發(九)后臺之線程和服務-CSDN博客

開源 java android app 開發(十)廣播機制-CSDN博客

開源 java android app 開發(十一)調試、發布-CSDN博客

開源 java android app 開發(十二)封庫.aar-CSDN博客

推薦鏈接:

開源C# .net mvc 開發(一)WEB搭建_c#部署web程序-CSDN博客

開源 C# .net mvc 開發(二)網站快速搭建_c#網站開發-CSDN博客

開源 C# .net mvc 開發(三)WEB內外網訪問(VS發布、IIS配置網站、花生殼外網穿刺訪問)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

開源 C# .net mvc 開發(四)工程結構、頁面提交以及顯示_c#工程結構-CSDN博客

??????開源 C# .net mvc 開發(五)常用代碼快速開發_c# mvc開發-CSDN博客

本章內容為將短語音轉文本的辦法,使用百度語音識別,通過百度云短語音的API將WAV音頻文件提交到百度云,轉換為文字返回。

一、主要內容

使用百度語音識別API(REST API)將WAV音頻文件轉換為文字的Python腳本

需要安裝pydub庫,在cmd命令行下安裝庫

pip install requests -i https://mirrors.aliyun.com/pypi/simple/

二、API Key 和 Secret Key獲取

進入百度智能云? ->? 選擇短語音識別標準版 ->??選擇開通付費,默認贈送10小時流量,不購買資源

->??實名認證后獲得,api key 和 secret key??

在以下頁面可以查看API Key 和 Secret Key

三、源代碼分析

1. 導入依賴
python
import base64 ? ? ?# Base64編碼
import urllib ? ? ?# URL編碼
import requests ? ?# HTTP請求
import json ? ? ? ?# JSON處理
import os ? ? ? ? ?# 文件操作
2. 核心函數分析
main() 函數
主要流程:

文件驗證:檢查音頻文件是否存在

文件信息獲取:獲取文件大小

構建請求:

使用正確的參數格式(format: "wav")

包含音頻參數(rate: 16000, channel: 1)

獲取access_token

將音頻文件轉為Base64編碼

發送請求:向百度API發送POST請求

響應處理:詳細打印響應信息和解析結果

get_file_content_as_base64() 函數
功能:將音頻文件轉換為Base64編碼

支持可選URL編碼

使用二進制讀取確保兼容性

get_access_token() 函數
功能:獲取百度API的訪問令牌

使用client_credentials授權模式

包含完整的錯誤處理

安全地顯示token(只顯示前20字符)

3. API接口細節
端點:https://vop.baidu.com/server_api
必需參數:

format: 音頻格式(wav)

rate: 采樣率(16000)

channel: 聲道數(1)

token: 訪問令牌

speech: Base64編碼的音頻內容

len: 文件大小

以下為源碼:

import base64
import urllib
import requests
import json
import osAPI_KEY = ""#自己的API_KEY
SECRET_KEY = ""#自己的API_KEYdef main():# 使用原始字符串或正斜杠來處理Windows路徑audio_file_path = r"C:\Users\Administrator\Desktop\test_16k.wav"# 檢查文件是否存在if not os.path.exists(audio_file_path):print(f"錯誤:文件不存在 - {audio_file_path}")return# 獲取文件大小file_size = os.path.getsize(audio_file_path)url = "https://vop.baidu.com/server_api"# 構建請求payloadpayload = json.dumps({"format": "wav",  # 如果是wav文件,應該用wav而不是pcm"rate": 16000,"channel": 1,"cuid": "lOClNo961PMousWYLfpHH22FyeYGHqKr","token": get_access_token(),"speech": get_file_content_as_base64(audio_file_path, False),"len": file_size  # 使用實際的文件大小}, ensure_ascii=False)headers = {'Content-Type': 'application/json','Accept': 'application/json'}try:response = requests.post(url, headers=headers, data=payload.encode("utf-8"))# 打印詳細的響應信息print(f"狀態碼: {response.status_code}")print("響應內容:")print(response.text)# 嘗試解析JSON響應try:result = response.json()print("\n解析后的結果:")print(json.dumps(result, ensure_ascii=False, indent=2))except json.JSONDecodeError:print("響應不是有效的JSON格式")except requests.exceptions.RequestException as e:print(f"請求錯誤: {e}")except Exception as e:print(f"其他錯誤: {e}")def get_file_content_as_base64(path, urlencoded=False):"""獲取文件base64編碼:param path: 文件路徑:param urlencoded: 是否對結果進行urlencoded :return: base64編碼信息"""try:with open(path, "rb") as f:content = base64.b64encode(f.read()).decode("utf8")if urlencoded:content = urllib.parse.quote_plus(content)return contentexcept Exception as e:print(f"讀取文件錯誤: {e}")return Nonedef get_access_token():"""使用 AK,SK 生成鑒權簽名(Access Token):return: access_token,或是None(如果錯誤)"""try:url = "https://aip.baidubce.com/oauth/2.0/token"params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}response = requests.post(url, params=params)response.raise_for_status()  # 檢查請求是否成功result = response.json()access_token = result.get("access_token")if access_token:print(f"成功獲取access_token: {access_token[:20]}...")  # 只顯示前20個字符return access_tokenelse:print(f"獲取access_token失敗: {result}")return Noneexcept requests.exceptions.RequestException as e:print(f"獲取access_token請求錯誤: {e}")return Noneexcept Exception as e:print(f"獲取access_token其他錯誤: {e}")return Noneif __name__ == '__main__':main()

三、效果演示

將錄音文件test.wav文件放到和python文件同一個目錄,運行效果如下,生產了16K頻率的音頻文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94225.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94225.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94225.shtml

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

相關文章

【C++闖關筆記】封裝②:友元與模板

系列文章目錄 第零篇:從C到C入門:C有而C語言沒有的基礎知識總結-CSDN博客 第一篇:【C闖關筆記】封裝①:類與對象-CSDN博客 第二篇:【C闖關筆記】封裝②:友元與模板-CSDN博客 第三篇:【C闖關筆…

Python 爬蟲教程 | 豆瓣 TOP250 數據抓取與分析實戰

一、項目背景與數據價值豆瓣TOP250是影視行業的重要榜單,具有以下數據價值:評分與評價人數:衡量電影市場熱度;導演與演員信息:分析人才價值與影視趨勢;類型 / 地區 / 年份:洞察電影類型與年代變…

第04章 SPSS簡介與數據庫構建

參考:SPSS實戰與統計思維 - 武松編著 - 微信讀書 4.1 SPSS簡介 發展歷史 全稱Statistical Product and Service Solutions,由美國斯坦福大學三位研究生于1968年開發。 對比其他軟件成立時間:SAS(1976年)、Stata&…

【ABAP4】數據字典

ABAP數據字典ABAP數據字典概述數據字典的基本對象域數據元素表類型系統創建自定義透明表創建自定義結構鎖對象ABAP數據字典概述 ABAP數據字典是SAP定義和管理數據的工具,包含了程序使用的所有對象,數據字典中包括數據庫表、視圖、數據類型、域、搜索幫助…

不知道Pycharm怎么安裝?Pycharm安裝教程(附安裝包)

Pycharm安裝教程(附安裝包)獲取方式:python開發工具包丨夸克網盤-資源免費下載 有位朋友剛開始學習python,不知道Pycharm要怎么安裝,于是問我要一個安裝教程。 先介紹一下Pycharm吧,PyCharm是一款python開…

在 Docker 容器中查看 Python 版本

博客目錄前言方法一:交互式進入容器查看方法二:啟動時直接執行命令方法三:啟動后使用 exec 執行命令方法四:直接運行并查看版本(容器退出)方法比較與選擇指南實際應用中的注意事項進階技巧批量檢查多個鏡像…

React:Umi + React + Ant Design Pro的基礎上接入Mock數據

為什么需要Mock數據 前端開發依賴后端接口時的阻塞問題 獨立開發和測試的需求 快速迭代和原型驗證的重要性 當前版本及框架 React18 Umi 4.0 Ant Design Ant Design Pro 其實這些都不重要,主要是有Umijs,因為Umijs具有開箱即用Mock功能的能力&#…

VMware centos磁盤容量擴容教程

目錄前言相關概念磁盤磁盤分區文件系統掛載點物理卷、VG(卷組)、LV(邏輯卷)、LVM(邏輯卷管理)解決方案前言 這篇博客主要分享我在VM中通過docker搭建dify大模型應用平臺時,遇到了分配的磁盤容量…

kubernetes中的認證和授權

一 kubernetes API 訪問控制Authentication(認證)認證方式現共有8種,可以啟用一種或多種認證方式,只要有一種認證方式通過,就不再進行其它方式的認證。通常啟用X509 Client Certs和Service Accout Tokens兩種認證方式。…

雅菲奧朗SRE知識墻分享(四):『AI已開始重塑勞動力市場,美國年輕科技從業者首當其沖』

近日,據《商業內幕》報道,AI正在重塑美國就業市場,年輕的科技從業者正首當其沖地感受到沖擊。高盛首席經濟學家Jan Hatzius在本周一撰文指出:“AI 確實開始在各類數據中顯現出更加明顯的跡象。”據高盛的分析,科技行業…

Python爬蟲入門指南:從零開始的網絡數據獲取之旅

文章目錄前言1. 什么是網絡爬蟲?2. 爬蟲的倫理與法律邊界3. Python爬蟲的基本工具庫3.1 Requests:HTTP請求庫3.2 Beautiful Soup:HTML/XML解析庫3.3 lxml:高效XML/HTML解析器3.4 Selenium:自動化瀏覽器工具4. 第一個爬…

說說你對JVM的垃圾回收機制的理解?

Java 虛擬機(JVM)的垃圾回收(Garbage Collection,GC)機制是自動管理內存的核心,其核心目標是識別并回收不再被使用的對象所占用的內存,避免內存泄漏和溢出。以下從垃圾判斷方法、垃圾回收算法和…

兌換汽水瓶

實現代碼:public static void main(String[] args) {Scanner in new Scanner(System.in);while (in.hasNextInt()) {int n in.nextInt();if (n 0) {break;}System.out.println(n / 2);}}

結合 Flutter 和 Rust 的跨平臺開發方案

結合 Flutter 和 Rust 的跨平臺開發方案 1. 核心思想 本方案的核心思想是Flutter 負責 UI,Rust 負責邏輯 。Flutter 作為一個成熟的 UI 框架,專注于渲染流暢、跨平臺一致的用戶界面。而將那些對性能、安全和并發有高要求的復雜業務邏輯、計算密集型任務或底層系統操作,全部…

理想汽車智駕方案介紹 2|MindVLA 方案詳解

一、引言 MindVLA 主要包括空間智能模塊、語言智能模塊、動作策略模塊、強化學習模塊,這些模塊分別有以下功能: 空間智能模塊:輸入為多模態傳感器數據,使用 3D 編碼器提取時空特征,然后將所有傳感器與語義信息融合成…

計算機網絡基礎(三) --- TCP/IP網絡結構(運輸層)

運輸層1. 概述和運輸服務運輸層協議為運行在不同主機上的應用進程之間提供了邏輯通信功能, 運輸層協議是在端系統中而不是路由器中實現的, 網絡應用程序可以調用多種運輸層協議, 如因特網的兩種協議: TCP 和 UDP ,每種協議都能為調用的應用程序提供一組不同的運輸層服務1.1 運輸…

JdbcTemplate和MyBatis的區別

在 Java 后端開發中,JdbcTemplate(Spring 框架提供)和 MyBatis(持久層框架)都是用于簡化數據庫操作的工具,但它們的設計理念、使用方式、靈活性和適用場景有顯著差異。下面從核心定位、核心特性、使用方式、…

埃氏篩|樹dfs|差分計數

lc525把數組里的0換成-1&#xff0c;求子數組和為零的最長長度用哈希表記錄前綴和首次出現的位置通過找相同前綴和的位置差得出最長的0和1數量相等的子數組長度。class Solution { public:int findMaxLength(vector<int>& nums) {unordered_map<int,int>hashta…

(JVM)Java 對象創建的完整過程

在日常開發和面試中&#xff0c;經常會被問到 “Java 中對象是如何被創建的&#xff1f;” 表面上只是一個 new 關鍵字&#xff0c;但 JVM 在幕后完成了一系列復雜操作。 可以總結為以下 六大步驟&#xff1a;類加載檢查 → 分配內存 → 內存清零 → 設置對象頭 → 執行構造函數…

數據庫優化提速(三)JSON數據類型在酒店管理系統搜索—仙盟創夢IDE

在 MySQL 中&#xff0c;JSONB 類型&#xff08;MySQL 中實際為 JSON 類型&#xff0c;功能類似 PostgreSQL 的 JSONB&#xff0c;支持高效的 JSON 數據存儲和查詢&#xff09;非常適合存儲半結構化數據&#xff0c;例如酒店入住客人的復雜信息&#xff08;包含客人基本信息、入…