【AIGC】使用Python實現科大訊飛語音服務ASR轉錄功能:完整指南

文章目錄

  • 訊飛ASR轉寫API完整指南
    • 1. 引言
    • 2. 訊飛ASR API介紹
    • 3. API參數說明
      • 3.1 認證參數
      • 3.2 上傳參數
      • 3.3 查詢結果參數
      • 3.4 orderResult 字段
      • 3.5 Lattice 字段
      • 3.6 json_1best 字段
      • 3.7 st 字段
    • 4. Python代碼實現
      • 4.1 生成簽名
      • 4.2 上傳音頻文件
      • 4.3 獲取轉寫結果
      • 4.4 解析轉寫結果
    • 5. 請求與返回示例
      • 5.1 成功返回示例
      • 5.4 異步回調
        • 1. 轉寫結束異步回調狀態
    • 6. 文檔地址
    • 7. 結論

訊飛ASR轉寫API完整指南

1. 引言

在這篇博客中,我們將詳細解析如何使用訊飛ASR(自動語音識別)API進行音頻轉寫,包括上傳音頻、查詢轉寫結果及解析返回數據。本文將涵蓋API的參數說明,并提供完整的Python代碼,確保代碼能夠順利執行。

2. 訊飛ASR API介紹

訊飛ASR API提供了一整套音頻轉寫的解決方案,主要流程如下:

  1. 生成簽名 - 認證請求的合法性。
  2. 上傳音頻 - 通過URL方式或本地文件上傳音頻。
  3. 查詢結果 - 輪詢轉寫結果,等待識別完成。
  4. 解析結果 - 處理返回的JSON數據,提取文本和說話人信息。

3. API參數說明

3.1 認證參數

參數名說明
appId訊飛開發者平臺分配的應用ID
secret_key用于生成簽名的密鑰
ts時間戳,單位為秒
signa認證簽名,由appId、ts和secret_key計算得出

3.2 上傳參數

參數名說明
fileName音頻文件名稱
fileSize文件大小(若使用URL方式可隨意填寫)
duration音頻時長(單位秒,可隨機填寫)
language語言(cn代表中文)
audioMode上傳模式(urlLink 代表通過URL上傳)
audioUrl音頻文件的URL(需要URL編碼)

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

3.3 查詢結果參數

參數名說明
orderId訂單ID,用于查詢轉寫結果
resultType返回結果類型(transfer 表示最終轉寫文本)

成功

{"code": "000000","descInfo": "success","content": {"orderId": "DKHJQ202209021522090215490FAAE7DD0008C","taskEstimateTime": 28000}
}

失敗

{"code": "26600","descInfo": "轉寫業務通用錯誤"
}

3.4 orderResult 字段

參數名類型說明
latticeList做順滑功能的識別結果
lattice2List未做順滑功能的識別結果,當開啟順滑和后語規整后 orderResult 才返回 lattice2 字段(需要開通權限)
labelObject轉寫結果標簽信息,用于補充轉寫結果相關信息,標記轉寫結果角色和聲道的對應關系

3.5 Lattice 字段

參數名類型說明
json_1bestString單個 VAD 的結果的 JSON 內容

3.6 json_1best 字段

參數名類型說明
stObject單個句子的結果對象

3.7 st 字段

參數名類型說明
bgString單個句子的開始時間,單位毫秒
edString單個句子的結束時間,單位毫秒
rlString分離的角色編號,取值正整數,需開啟角色分離的功能才返回對應的分離角色編號
rtList輸出詞語識別結果集合

4. Python代碼實現

4.1 生成簽名

在這里插入圖片描述

def generate_signa(self):"""生成簽名:return: 簽名字符串"""appid = self.appidts = self.tsbase_string = appid + tsmd5 = hashlib.md5()md5.update(base_string.encode('utf-8'))base_string_md5 = md5.hexdigest()key = self.secret_key.encode('utf-8')message = base_string_md5.encode('utf-8')hmac_obj = hmac.new(key, message, hashlib.sha1)signa = base64.b64encode(hmac_obj.digest()).decode('utf-8')return signa

4.2 上傳音頻文件

1、文件上傳
#概述
首先調用文件上傳接口,上傳待轉寫音頻文件的基本信息(文件名、大小等)和相關的可配置參數。
調用成功,返回訂單ID(orderId,用于查詢結果或者聯調排查問題時使用),是后續接口的必傳參數。
#請求示例

https://raasr.xfyun.cn/v2/api/upload?duration=200&signa=Je5YsBvPcsbB4qy8Qvzd367fiv0%3D&fileName=%E9%98%B3%E5%85%89%E6%80%BB%E5%9C%A8%E9%A3%8E%E9%9B%A8%E5%90%8E.speex-wb&fileSize=11895&sysDicts=uncivilizedLanguage&appId=3e79d91c&ts=1662101767

#URL

 POST https: //raasr.xfyun.cn/v2/api/upload

#請求頭

Content-Type: application/json; charset=UTF-8,Chunked: false

#signa生成

def upload(self):"""上傳音頻文件:return: 上傳響應結果"""try:file_name = os.path.basename(urllib.parse.unquote(self.audio_url))param_dict = {"appId": self.appid,"signa": self.signa,"ts": self.ts,"fileName": file_name,"fileSize": "10000","duration": "200","language": "cn","audioMode": "urlLink","audioUrl": urllib.parse.quote(self.audio_url, safe='')}url = lfasr_host + api_upload + "?" + urllib.parse.urlencode(param_dict)response = requests.post(url, headers={"Content-Type": "application/json; charset=UTF-8"})result = json.loads(response.text)if str(result.get('code', '')) != '000000':return Nonereturn resultexcept Exception as e:return None

4.3 獲取轉寫結果

status == 4

def get_result(self):"""獲取轉寫結果:return: 轉寫結果"""uploadresp = self.upload()if not uploadresp:return Nonetry:orderId = uploadresp['content']['orderId']param_dict = {"appId": self.appid,"signa": self.signa,"ts": self.ts,"orderId": orderId,'roleType':1,'roleNum':2,"resultType": "transfer"}url = lfasr_host + api_get_result + "?" + urllib.parse.urlencode(param_dict)status = 3while status == 3:response = requests.post(url, headers={"Content-Type": "application/json; charset=UTF-8"})result = json.loads(response.text)if str(result.get('code', '')) != '000000':continuestatus = result['content']['orderInfo']['status']if status == 4:return resulttime.sleep(5)return Noneexcept Exception as e:return None

查詢結構返回數據

{"code": "000000","descInfo": "success","content": {"orderInfo": {"orderId": "DKHJQ2022090510220905100562536FEF00062","failType": 0,"status": 4,"originalDuration": 200,"realDuration": 1878},"orderResult": "{\"lattice\":[{\"json_1best\":\"{\\\"st\\\":{\\\"sc\\\":\\\"0.86\\\",\\\"pa\\\":\\\"0\\\",\\\"rt\\\":[{\\\"ws\\\":[{\\\"cw\\\":[{\\\"w\\\":\\\"\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":1,\\\"we\\\":16},{\\\"cw\\\":[{\\\"w\\\":\\\"\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":17,\\\"we\\\":36},{\\\"cw\\\":[{\\\"w\\\":\\\"\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":37,\\\"we\\\":52},{\\\"cw\\\":[{\\\"w\\\":\\\"\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":53,\\\"we\\\":80},{\\\"cw\\\":[{\\\"w\\\":\\\"測試\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":81,\\\"we\\\":116},{\\\"cw\\\":[{\\\"w\\\":\\\"音頻\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":117,\\\"we\\\":172},{\\\"cw\\\":[{\\\"w\\\":\\\"\\\",\\\"wp\\\":\\\"p\\\",\\\"wc\\\":\\\"0.0000\\\"}],\\\"wb\\\":172,\\\"we\\\":172},{\\\"cw\\\":[{\\\"w\\\":\\\"\\\",\\\"wp\\\":\\\"g\\\",\\\"wc\\\":\\\"0.0000\\\"}],\\\"wb\\\":172,\\\"we\\\":172}]}],\\\"bg\\\":\\\"50\\\",\\\"rl\\\":\\\"0\\\",\\\"ed\\\":\\\"1840\\\"}}\"}],\"lattice2\":[{\"lid\":\"0\",\"end\":\"1840\",\"begin\":\"50\",\"json_1best\":{\"st\":{\"sc\":\"0.86\",\"pa\":\"0\",\"rt\":[{\"nb\":\"1\",\"nc\":\"1.0\",\"ws\":[{\"cw\":[{\"w\":\"\",\"wp\":\"n\",\"wc\":\"1.0000\"}],\"wb\":1,\"we\":16},{\"cw\":[{\"w\":\"\",\"wp\":\"n\",\"wc\":\"1.0000\"}],\"wb\":17,\"we\":36},{\"cw\":[{\"w\":\"\",\"wp\":\"n\",\"wc\":\"1.0000\"}],\"wb\":37,\"we\":52},{\"cw\":[{\"w\":\"\",\"wp\":\"n\",\"wc\":\"1.0000\"}],\"wb\":53,\"we\":80},{\"cw\":[{\"w\":\"測試\",\"wp\":\"n\",\"wc\":\"1.0000\"}],\"wb\":81,\"we\":116},{\"cw\":[{\"w\":\"音頻\",\"wp\":\"n\",\"wc\":\"1.0000\"}],\"wb\":117,\"we\":172},{\"cw\":[{\"w\":\"\",\"wp\":\"p\",\"wc\":\"0.0000\"}],\"wb\":172,\"we\":172},{\"cw\":[{\"w\":\"\",\"wp\":\"g\",\"wc\":\"0.0000\"}],\"wb\":172,\"we\":172}]}],\"pt\":\"reserved\",\"bg\":\"50\",\"si\":\"0\",\"rl\":\"0\",\"ed\":\"1840\"}},\"spk\":\"段落-0\"}]}","taskEstimateTime": 0}

4.4 解析轉寫結果

def parse_result(self, result_json):"""解析轉寫結果,按說話人分組"""try:result = json.loads(result_json)speakers = {}if 'lattice2' in result:for item in result['lattice2']:speaker = item.get('spk', '未知')json_1best = json.loads(item['json_1best'])text = "".join(cw['w'] for rt in json_1best.get('st', {}).get('rt', []) for ws in rt.get('ws', []) for cw in ws.get('cw', []) if 'w' in cw)speakers.setdefault(speaker, []).append(text)return speakersexcept Exception as e:return None

5. 請求與返回示例

5.1 成功返回示例

{"code": "000000","descInfo": "success","content": {"orderId": "DKHJQ202209021522090215490FAAE7DD0008C","taskEstimateTime": 28000}
}

5.4 異步回調

1. 轉寫結束異步回調狀態

當訂單轉寫流程結束時會回調用戶(如果錄音文件轉寫接口 upload 傳了callbackUrl),會把訂單號和訂單狀態返回,具體的格式和參數說明如下: 回調地址示例:

GET http://ip:prot/server/xxx?orderId=DKHJQ202004291620042916580FBC96690001F&status=1

在這里插入圖片描述

6. 文檔地址

訊飛ASR文檔

7. 結論

本文詳細講解了訊飛ASR API的使用流程,包括如何生成簽名、上傳音頻、查詢結果并解析返回數據。希望這篇文章對你有所幫助!如果對你有幫助,幫忙給個一鍵三連,求求了,各位吳彥祖,劉亦菲們

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

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

相關文章

大學本科教務系統設計方案,涵蓋需求分析、架構設計、核心模塊和技術實現要點

以下是大學本科教務系統的設計方案,涵蓋需求分析、架構設計、核心模塊和技術實現要點: 大學本科教務系統設計方案 一、需求分析 1. 核心用戶角色 角色功能需求學生選課/退課、成績查詢、課表查看、學分統計、考試報名、學業預警教師成績錄入、課程大綱上傳、教學進度管理、…

30道Qt面試題(答案公布)

前五個答案 ? 1. Qt中常用的五大模塊是哪些? Qt中常用的五大模塊包括: ? Qt Core:提供核心非GUI功能,如數據結構、文件操作、國際化等。 ? Qt GUI:提供與平臺無關的圖形和基本窗口功能。 ? Qt Widgets:提供用于創建傳統桌面應用程序的UI組件。 ? Qt Netw…

jdk21下載、安裝(Windows、Linux、macOS)

Windows 系統 1. 下載安裝 訪問 Oracle 官方 JDK 下載頁面 或 OpenJDK 下載頁面,根據自己的系統選擇合適的 Windows 版本進行下載(通常選擇 .msi 安裝包)。 2. 配置環境變量 右鍵點擊 “此電腦”,選擇 “屬性”。 在左側導航欄…

2022年全國職業院校技能大賽網絡系統管理賽項模塊A:網絡構建(樣題6)-網絡部分解析-附詳細代碼

目錄 附錄1:拓撲圖 附錄2:地址規劃表 1.SW1 2.SW2 3.SW3 4.SW4 5.VSU 6.SW7 7.R1 8.R2 9.R3 10.AC1 11.AC2 12.EG1 13.EG2 附錄1:拓撲圖 附錄2:地址規劃表

java項目之網絡游戲交易系統源碼(ssm+mysql)

風定落花生,歌聲逐流水,大家好我是風歌,混跡在java圈的辛苦碼農。今天要和大家聊的是一款基于ssm的網絡游戲交易系統。項目源碼以及部署相關請聯系風歌,文末附上聯系信息 。 項目簡介: 本網絡游戲交易系統分為管理員…

高并發內存池的thread cache部分實現及測試

并發內存池的三個主要組成部分: 線程緩存(Thread Cache) 每個線程擁有獨立的線程緩存,用于處理小于256KB的內存分配。由于每個線程都有自己的緩存,線程在從線程緩存中分配內存時無需加鎖,這有效避免了競爭…

【紅隊利器】單文件一鍵結束火絨6.0

關于我們 4SecNet 團隊專注于網絡安全攻防研究,目前團隊成員分布在國內多家頂級安全廠商的核心部門,包括安全研究領域、攻防實驗室等,匯聚了行業內的頂尖技術力量。團隊在病毒木馬逆向分析、APT 追蹤、破解技術、漏洞分析、紅隊工具開發等多個…

索提諾比率(Sortino Ratio):更精準的風險調整收益指標(中英雙語)

索提諾比率(Sortino Ratio):更精準的風險調整收益指標 📉📊 📌 什么是索提諾比率? 在投資分析中,我們通常使用 夏普比率(Sharpe Ratio) 來衡量風險調整后的…

深度學習奠基作 AlexNet 論文閱讀筆記(2025.2.25)

文章目錄 訓練數據集數據預處理神經網絡模型模型訓練正則化技術模型性能其他補充 訓練數據集 模型主要使用2010年和2012年的 ImageNet 大規模視覺識別挑戰賽(ILSVRC)提供的 ImageNet 的子集進行訓練,這些子集包含120萬張圖像。最終&#xff…

Deepseek 實戰全攻略,領航科技應用的深度探索之旅

想玩轉 Deepseek?這攻略別錯過!先帶你了解它的基本原理,教你搭建運行環境。接著給出自然語言處理、智能客服等應用場景的實操方法與代碼。還分享模型微調、優化技巧,結合案例加深理解,讓你全面掌握,探索科技…

藍橋杯備賽-精衛填海-DP

精衛終于快把東海填平了!只剩下了最后的一小片區域了。同時,西山上的木石也已經不多了。精衛能把東海填平嗎? 事實上,東海未填平的區域還需要至少體積為 v 的木石才可以填平,而西山上的木石還剩下 n 塊,每塊…

2025面試Go真題第一場

前幾天參加了一場面試,GoLang 后端工程師,他們直接給了我 10 道題,我留了一個截圖。 在看答案之前,你可以先簡單做一下,下面我會對每個題目做一個說明。 文章目錄 1、golang map 是否并發安全?2、協程泄漏的原因可能是…

JavaScript 簡單類型與復雜類型-堆和棧

深入理解JavaScript中的簡單類型(基本數據類型)與復雜類型(引用數據類型)如何在內存中存儲對于編寫高效、無誤的代碼至關重要。本文將探討這兩種類型的差異,以及它們在內存中的存儲機制——棧(Stack&#x…

騰訊SQL面試題解析:如何找出連續5天漲幅超過5%的股票

騰訊SQL面試題解析:如何找出連續5天漲幅超過5%的股票 作者:某七年數據開發工程師 | 2025年02月23日 關鍵詞:SQL窗口函數、連續問題、股票分析、騰訊面試題 一、問題背景與難點拆解 在股票量化分析場景中,"連續N天滿足條件"是高頻面試題類型。本題要求在單表stoc…

圖像處理、數據挖掘、數據呈現

目錄 圖像處理方法 閾值分割 圖像處理方法 圖像平滑 圖像銳化 圖像增強 閾值分割 邊緣檢測 閾值分割 特征提取 提取邊界 區域提取 主成分壓縮 POI 多源數據 數據挖掘 多源數據提取 關聯度提取 位置集群, 新聞事件, 權限 個人喜好 歷史…

嵌入式項目:STM32刷卡指紋智能門禁系統

本文詳細介紹基于STM32的刷卡指紋智能門禁系統。 獲取資料/指導答疑/技術交流/選題/幫助,請點鏈接: https://gitee.com/zengzhaorong/share_contact/blob/master/stm32.txt 1 系統功能 1.1 功能概述 本系統由STM32硬件端(下位機)…

計算機畢業設計 ——jspssm504springboot 職稱評審管理系統

作者:程序媛9688 開發技術:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 🌟文末獲取源碼數據庫🌟 感興趣的可以先收藏起來,還有大家在畢設選題(免費咨詢指導選題)&#xf…

安裝VM和Centos

安裝VM 一、打開虛擬機 二、選擇典型 三、選擇光盤 四、指定虛擬機位置 五、設置磁盤大小并拆分為多個文件 六、完成 安裝Centos 一、上述過程完成后我們直接打開虛擬機 二、語言選擇中文 三,默認安裝位置并點擊完成 四、點擊開始安裝 五、點擊設置密碼 等待安裝…

【AI應用】數字人涉及的一些主要 AI 技術

【AI論文解讀】【AI知識點】【AI小項目】【AI戰略思考】【AI日記】【讀書與思考】【AI應用】 在 數字人搭建 過程中,涉及多個 AI 技術,包括 訓練微調、算法、圖像合成、聲音克隆,每個部分都決定了最終效果的真實度、交互流暢度和個性化能力。…

【嘗試使用python調用Seismic unix】

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、代碼總結 前言 提示:這里可以添加本文要記錄的大概內容: 使用seismic unix嘗試建立界面,首先想到使用pyqt&#xff0c…