ASR 語音識別接口封裝和分析

這個文檔主要是介紹一下我自己封裝了 6 家廠商的短語音識別實時流語音識別接口的一個包,以及對這些接口的一個對比。分別是,阿里,快商通,百度,騰訊,科大,字節。

zxmfke/asrfactory (github.com)

之前剛好在測試各家的語音識別相關功能,但是每家的返回值都不同,調用方式都不同,所以就封裝了這么一個包。主要就是用簡易工廠模式封裝了一下,可以用來內部做測試。

功能方面,只是單純的返回識別結果,實時流也是,正常是要再返回時間戳的,不過各家在時間戳上更是五花八門,就之后有空再封裝。

有什么需求也歡迎討論,另外,接口的app,賬號需要自己去生成。

本文檔偏主觀,不喜勿噴


接口官方文檔地址

短語音識別URL
阿里智能語音交互RESTfulAPI(ROA)示例_智能語音交互-阿里云幫助中心 (aliyun.com)
快商通快商通AI開放平臺-短語音識別
百度短語音識別標準版API - 語音技術 (baidu.com)
騰訊語音識別 一句話識別-一句話識別相關接口-API 中心-騰訊云 (tencent.cn)
科大語音聽寫_語音識別-訊飛開放平臺 (xfyun.cn)
字節一句話識別–語音技術-火山引擎 (volcengine.com)
實時流語音識別URL
阿里如何自行開發代碼訪問阿里語音服務_智能語音交互-阿里云幫助中心 (aliyun.com)
快商通快商通AI開放平臺-實時語音識別
百度語音技術 (baidu.com)
騰訊語音識別 實時語音識別(websocket)-API 文檔-文檔中心-騰訊云 (tencent.com)
科大實時語音轉寫_實時語音識別服務-訊飛開放平臺 (xfyun.cn)
字節流式語音識別–語音技術-火山引擎 (volcengine.com)

包封裝實現

短語音識別

短語音比較簡單,主要就是一個 http 請求,實現 Do 方法就可以了。

type Asr interface {Do(fileName string, sampleRate define.AudioSampleRate) (string, error)
}
實時流語音識別

實時流識別主要是抽象成 5 個函數,均通過 websocket 的方式對接

type AsrWs interface {// 初始化,創建 websocket 連接。把創建和發送 start 的邏輯封在一起。Init() error// 發送語音流數據Send([]byte) error// 接收識別結果Recv(chan<- define.Output)// 發送結束標識End() error// 關閉 websocket 連接Close()
}

在這里插入圖片描述

實時流語音識別可以分成 7 個步驟:

  1. 建立 web socket 連接;
  2. 發送 start 的 Text message;

這兩步就是在 Init 里面實現,如果 start 沒有,那 Init 里面就不會做 start 的邏輯

  1. 發送完 start 后,會返回給 client 可以發送的 message;

  2. 循環發送語音,通過 Send 方法;

  3. 同時接收識別結果,Recv 來接收識別結果;

  4. 語音數據發送結束后,發送給 server 端數據發送完畢的標識,即 End 方法;

  5. 發送 End 后,不要立馬斷開 web socket 連接。End 只是發送我沒有要 server 端識別的數據了,不過還是要等 server 端把所有語音數據都是識別完成,返回全部識別結束。這時候才能 Close 連接。

Recv 和 End 方法在各家的實現里面是最不同的,所以抽象的地方主要是在這兩個函數。不過無論后面要再加什么廠商的接口,基本上按照這 5 個方法,是沒什么問題的。字節的就是,我在最后才加的。


接口語音要求

我只列常用的

語音要求
阿里16k/8k wav/pcm
快商通16k/8k wav
百度16k pcm
騰訊16k/8k wav/pcm
科大16k/8k pcm
字節16k/8k wav/pcm

接口文檔是否易懂

文檔易懂
阿里有完整文檔,字段描述清晰,范例代碼挺多。
快商通有完整文檔,字段描述清晰,范例代碼就一個js。
百度有完整文檔,字段描述清晰,邏輯性不是很強。
騰訊有完整文檔,字段描述清晰,邏輯性強,范例代碼多
科大有完整文檔,字段描述清晰,過于復雜,字段命名不直觀
字節看文檔看不懂,只能看懂調用邏輯,字段怎么用,只能直接看范例,范例也不知道為什么這么寫

接口對接難易度

對接難易度這邊更多指的是最后抽象成幾個方法的難易度。

調用難易度
阿里易,發數據前要先發,開始message
快商通沒有 go 范例,得自己寫,不過邏輯還算比較簡單清晰
百度易,發數據前要先發,開始message
騰訊易,創建 ws 連接的時候得先獲取 signature
科大有點麻煩,范例太過復雜,創建 ws 連接的時候得先獲取 signature。嵌套多層,且字段名不直觀,抽象過程麻煩。
字節有點麻煩,范例太過復雜,發數據前要先發,開始message,抽象過程麻煩。

接口識別效果

識別效果我只測了中文,16k。8k 跟 16k 結果差不多。在正常語音,正常噪音情況下,騰訊,阿里排在前兩位,后面的差不多。在有噪音前提下,大體相差不了多少。其中,快商通不支持多方言和多語種,其他的都可以。

響應時間,識別速度,騰訊 > 阿里 > 百度 > 快商通 > 科大 > 字節


接口免費調用次數

各平臺免費調用次數都比較充足,價格就直接官網看比較直觀,因為有階梯的不好比較。直接跟商務談的也會有所區別。


總結

這個包就是來封裝一下各家的語音識別接口,方便調用。選哪家因人而異,考量的點挺多。我個人覺得騰訊的是最好的,它文檔很豐富,邏輯清晰,范例也很清楚,識別效果,識別速度都是最好的。快商通的簡單,識別也還行,就是支持的功能太少了。科大的應該是不錯的,不過不知道為什么識別效果怪怪的。字節的每太理解需要這么設計的邏輯,會給使用者增加一些不必要的麻煩,可能是我功力還不能理解他們的設計巧思。

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

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

相關文章

ubuntu 安裝 cuda

ubuntu 安裝 cuda 初環境與設備在官網找安裝方式 本篇文章將介紹ubuntu 安裝 CUDA Toolkit CUDA Toolkit 是由 NVIDIA&#xff08;英偉達&#xff09;公司開發的一個軟件工具包&#xff0c;用于支持并優化 GPU&#xff08;圖形處理器&#xff09;上的并行計算和高性能計算。它…

解析TCP/IP協議的分層模型

了解ISO模型&#xff1a;構建通信的藍圖 為了促進網絡應用的普及&#xff0c;國際標準化組織&#xff08;ISO&#xff09;引入了開放式系統互聯&#xff08;Open System Interconnect&#xff0c;OSI&#xff09;模型。這個模型包括了七個層次&#xff0c;從底層的物理連接到頂…

一、Dubbo 簡介與架構

一、Dubbo 簡介與架構 1.1 應用架構演進過程 單體應用&#xff1a;JEE、MVC分布式應用&#xff1a;SOA、微服務化 1.2 Dubbo 簡介一種分布式 RPC 框架&#xff0c;對專業知識&#xff08;序列化/反序列化、網絡、多線程、設計模式、性能優化等&#xff09;進行了更高層的抽象和…

ArcGIS Maps SDK for JavaScript系列之三:在Vue3中使用ArcGIS API加載三維地球

目錄 SceneView類的常用屬性SceneView類的常用方法vue3中使用SceneView類創建三維地球項目準備引入ArcGIS API創建Vue組件在OnMounted中調用初始化函數initArcGisMap創建Camera對象Camera的常用屬性Camera的常用方法 要在Vue 3中使用ArcGIS API for JavaScript加載和展示三維地…

【JavaSE】面向對象之封裝

封裝的概念 封裝是把過程和數據包圍起來&#xff0c;對數據的訪問只能通過已定義的接口。面向對象計算始于這個基本概念&#xff0c;即現實世界可以被描繪成一系列完全自治、封裝的對象&#xff0c;這些對象通過一個受保護的接口訪問其他對象。封裝是一種信息隱藏技術&#xff…

Java旋轉數組中的最小數字(圖文詳解版)

目錄 1.題目描述 2.題解 分析 具體實現 方法一&#xff08;遍歷&#xff09;&#xff1a; 方法二&#xff08;排序&#xff09;&#xff1a; 方法三&#xff08;二分查找&#xff09;&#xff1a; 1.題目描述 有一個長度為 n 的非降序數組&#xff0c;比如[1,2,3,4,5]&a…

Linux基礎

Linux 一、基礎01- 執行環境準備02- linux的版本分類02.1 內核版本02.2 發行版本02.3 內核和發行版本的區別: 03- 虛擬機安裝04- 啟動linux 二、系統操作05- 幫助命令05.1 man 幫助05.2 help 幫助05.2.1 內部命令05.2.2 外部命令 05.3 info 幫助 06- ls命令06.1 -r06.2 -rt06.3…

npm install 中 --save 和 --save-dev 是什么?

npm&#xff0c;全名 Node Package Manager&#xff0c;套件管理工具&#xff0c;package.json 會記下你在項目中安裝的所有套件。 假設在項目中安裝 lodash npm i --save lodash這樣在 dependencies 中會出現&#xff1a; 如果修改了導入方式&#xff1a; npm i --save-dev …

在Linux中對docker 一鍵安裝,本地安裝,無網絡安裝,

在Linux中對docker 一鍵安裝 前提先準備好安裝包 非常絲滑 首先先把需要準備的文件準備好&#xff0c;/package/base.tar 和 /package/docker-20.10.10.tgz包 這兩個文件包必須放在 /package目錄下 再和/package同級的目錄下再準備conf目錄&#xff0c;conf目錄下放docker.se…

Labview解決“重置VI:xxx.vi”報錯問題

文章目錄 前言一、程序框圖二、前面板三、問題描述四、解決辦法 前言 在程序關閉前面板的時候小概率型出現了 重置VI&#xff1a;xxx.vi 這個報錯&#xff0c;并且發現此時只能通過任務管理器殺掉 LabVIEW 進程才能退出&#xff0c;這里介紹一下解決方法。 一、程序框圖 程序…

特征選擇 | 遞歸特征消除算法篩選最優特征

特征選擇 | 遞歸特征消除算法篩選最優特征 目錄 特征選擇 | 遞歸特征消除算法篩選最優特征寫在前面常規方法算法原理結果分析參考資料 寫在前面 在實際應用中&#xff0c;特征選擇作為機器學習和數據挖掘領域的重要環節&#xff0c;對于提高模型性能和減少計算開銷具有關鍵影響…

pve7.2虛擬機 lvm磁盤擴容,增加硬盤操作

之前安裝pve時候只有256的ssd,最近安裝的虛擬機較多&#xff0c;給加塊閑置硬盤&#xff0c;順便學習一下&#xff0c;像pve這種虛擬機系統&#xff0c;硬盤應該可以像nas你這樣隨時增加&#xff0c;而不影響上層應用&#xff0c;我自己也是摸索著做。 一、安裝好硬盤后打開pv…

vue3+ts-tsconfig.json報錯Option ‘importsNotUsedAsValues’

vue3ts-tsconfig.json報錯Option ‘importsNotUsedAsValues’ is deprecated and will stop functioning in TypeScript 5.5. Specify compilerOption ‘“ignoreDeprecations”: “5.0”’ to silence this error. Use ‘verbatimModuleSyntax’ instead 自我記錄 翻譯 選項…

智能家居(2)---串口通信(語音識別)控制線程封裝

封裝語音線程&#xff08;語音通過串口和主控設備進行交流&#xff09;實現對智能家居中各種燈光的控制 mainPro.c(主函數) #include <stdio.h> #include "controlDevice.h" #include "inputCommand.h" #include <pthread.h>struct Devices …

echart 3d立體顏色漸變柱狀圖

如果可以實現記得點贊分享&#xff0c;謝謝老鐵&#xff5e; 1.需求描述 根據業務需求將不同的法律法規&#xff0c;展示不同的3d立體漸變柱狀圖。 2.先看下效果圖 3. 確定三面的顏色&#xff0c;這里我是自定義的顏色 // 右面生成顏色const rightColorArr ref(["#79D…

ComponentOne Studio ASP.NET MVC Crack

ComponentOne Studio ASP.NET MVC Crack FlexReport增強功能 添加了對在Microsoft Windows上部署Microsoft Azure的支持。 添加了對顯示嵌入字體的支持。 .NET標準版的經典C1PDF(Beta版) GrapeCity的經典C1Pdf庫現在提供了基于Microsoft.NET標準的版本。在任何.NET應用程序(包括…

每日一學——IP尋址

IP尋址是指在網絡中分配和識別設備的唯一IP地址。IP地址是由一串數字組成的標識符&#xff0c;用于在網絡中定位和識別設備。 IPv4是最常用的IP地址版本&#xff0c;它由32位的地址組成&#xff0c;通常表示為四個以點分隔的十進制數字&#xff08;例如192.168.0.1&#xff09…

江南大學計算機考研分析

24計算機考研|上岸指南 江南大學 江南大學計算機考研招生學院是人工智能與計算機學院。目前均已出擬錄取名單。 江南大學人工智能與計算機學院成立于2020年3月&#xff0c;辦學歷史可追溯到1994年設立的計算機應用專業。學院秉持江南大學“彰顯輕工特色&#xff0c;服務國計民…

【數據結構】棧和隊列

【數據結構】棧和隊列 一&#xff1a; 棧1.棧的概念及和結構2. 棧的實用3. 棧接口實現 二&#xff1a; 隊列1. 隊列的概念和結構2. 隊列的實用3. 隊列接口實現 三&#xff1a;擴展 一&#xff1a; 棧 1.棧的概念及和結構 棧&#xff1a;一種特殊的線性表&#xff0c;其只允許…

SAP安全庫存-安全庫存共享、安全庫存簡介

SAP系統中的安全庫存用于管理計劃外和計劃內的庫存需求,在某些行業中,由于不同的情況,如意外損耗、損壞、環境問題、制造工藝問題、需求增加等,通常會出現意外的庫存需求。 SAP提供了維護安全庫存的處理方式來處理這樣的問題,安全庫存的字段信息在主數據視圖中,在物料需…