百度語音識別通過 REST API 的方式給開發者提供一個通用的 HTTP 接口。 上傳需要完整的錄音文件,錄音文件時長不超過60s。
官方文檔庫: http://ai.baidu.com/docs#/ASR-Online-Python-SDK/top
?
調用方式
開發 文檔 寫可以兩種方式調用。
- 可以下載使用SDK
- 不下載使用SDK : 根據文檔組裝url獲取token , 處理本地音頻以JSON格式POST到百度語音識別服務器,獲得返回結果
?
語音格式格式支持
- pcm(不壓縮)
- wav(不壓縮,pcm編碼)
- amr(壓縮格式)
推薦pcm , 采樣率16000 固定值。 編碼:16bit 位深的單聲道。
百度服務端會將非pcm格式,轉為pcm格式,因此使用wav、amr會有額外的轉換耗時。
?
Python SDK 安裝及使用
支持Python版本:2.7.+ ,3.+
語音識別 Python SDK目錄結構
├── README.md
├── aip ??????????????????//SDK目錄
│ ??├── __init__.py ??????//導出類
│ ??├── base.py ??????????//aip基類
│ ??├── http.py ??????????//http請求
│ ??└── speech.py //語音識別
└── setup.py ?????????????//setuptools安裝
安裝使用Python SDK有如下方式:
- 如果已安裝pip,執行 pip install baidu-aip 即可。
- 如果已安裝setuptools,執行 python setup.py install 即可。
?
實現簡單的識別
- 提前安裝好百度的語音識別依賴包:baidu-Aip
- 申請百度語音識別接入的開發者賬號,網址: https://ai.baidu.com/tech/speech , 目的是為了獲取AppID,API Key,Secret Key
- 錄制一個wav的錄音文件,錄制內容是:這是一個百度語音識別的測試。
- 使用如下代碼即可識別:
from
aip
import
AipSpeech
#申請百度語音識別
APP_ID =
'16835749'
API_KEY =
'UnZlBOVhwYu8m5eNqwOPHt99'
SECRET_KEY =
'6jhCitggsR0Ew91fdC47oMa1qtibTrsK'
client = AipSpeech(APP_ID
,
API_KEY
,
SECRET_KEY)
# 讀取文件
def
get_file_content
(filePath):
?????
with
open
(filePath
,
'rb'
)
as
fp:
????????
return
fp.read()
# 識別本地文件
path=
'/Users/alice/Documents/Blog/AI/語音識別/speechrecognition/audiofiles'
test1 = client.asr(get_file_content(path+
'/test1.wav'
)
,
'pcm'
,
16000
,
{
'dev_pid'
:
1536
,
})
print
(test1)
運行結果
{'corpus_no': '6714903681680289570', 'err_msg': 'success.', 'err_no': 0, 'result': ['珍一個百度云識別的測試'], 'sn': '936451515751563435346'}
?
參數列表
參數 |
類型 |
描述 |
是否必須 |
speech |
Buffer |
建立包含語音內容的Buffer對象, 語音文件的格式,pcm 或者 wav 或者 amr。不區分大小寫 |
是 |
format |
String |
語音文件的格式,pcm 或者 wav 或者 amr。不區分大小寫。推薦pcm文件 |
是 |
rate |
int |
采樣率,16000,固定值 |
是 |
cuid |
String |
用戶唯一標識,用來區分用戶,填寫機器 MAC 地址或 IMEI 碼,長度為60以內 |
否 |
dev_pid |
Int |
不填寫lan參數生效,都不填寫,默認1537(普通話 輸入法模型),dev_pid參數見本節開頭的表格 |
否 |
lan(已廢棄) |
String |
歷史兼容參數,請使用dev_pid。如果dev_pid填寫,該參數會被覆蓋。語種選擇,輸入法模型,默認中文(zh)。 中文=zh、粵語=ct、英文=en,不區分大小寫。 |
否 |
?
dev_pid 參數列表
dev_pid |
語言 |
模型 |
是否有標點 |
備注 |
1536 |
普通話(支持簡單的英文識別) |
搜索模型 |
無標點 |
支持自定義詞庫 |
1537 |
普通話(純中文識別) |
輸入法模型 |
有標點 |
支持自定義詞庫 |
1737 |
英語 |
? |
有標點 |
不支持自定義詞庫 |
1637 |
粵語 |
? |
有標點 |
不支持自定義詞庫 |
1837 |
四川話 |
? |
有標點 |
不支持自定義詞庫 |
1936 |
普通話遠場 |
遠場模型 |
有標點 |
不支持 |
語音識別 返回數據參數詳情
參數 |
類型 |
是否一定輸出 |
描述 |
err_no |
int |
是 |
錯誤碼 |
err_msg |
int |
是 |
錯誤碼描述 |
sn |
int |
是 |
語音數據唯一標識,系統內部產生,用于 debug |
result |
int |
是 |
識別結果數組,提供1-5 個候選結果,string 類型為識別的字符串, utf-8 編碼 |
返回樣例:
// 成功返回
{
????"err_no": 0,
????"err_msg": "success.",
????"corpus_no": "15984125203285346378",
????"sn": "481D633F-73BA-726F-49EF-8659ACCC2F3D",
????"result": ["北京天氣"]
}
?
// 失敗返回
{
????"err_no": 2000,
????"err_msg": "data empty.",
????"sn": null
}
?
錯誤碼
若請求錯誤,服務器將返回的JSON文本包含以下參數:
- error_code:錯誤碼。
- error_msg:錯誤描述信息,幫助理解和解決發生的錯誤。
錯誤碼 |
用戶輸入/服務端 |
含義 |
一般解決方法 |
3300 |
用戶輸入錯誤 |
輸入參數不正確 |
請仔細核對文檔及參照demo,核對輸入參數 |
3301 |
用戶輸入錯誤 |
音頻質量過差 |
請上傳清晰的音頻 |
3302 |
用戶輸入錯誤 |
鑒權失敗 |
token字段校驗失敗。請使用正確的API_KEY 和 SECRET_KEY生成。或QPS、調用量超出限額。或音頻采樣率不正確(可嘗試更換為16k采樣率)。 |
3303 |
服務端問題 |
語音服務器后端問題 |
請將api返回結果反饋至論壇或者QQ群 |
3304 |
用戶請求超限 |
用戶的請求QPS超限 |
請降低識別api請求頻率 (qps以appId計算,移動端如果共用則累計) |
3305 |
用戶請求超限 |
用戶的日pv(日請求量)超限 |
請“申請提高配額”,如果暫未通過,請降低日請求量 |
3307 |
服務端問題 |
語音服務器后端識別出錯問題 |
目前請確保16000的采樣率音頻時長低于30s。如果仍有問題,請將api返回結果反饋至論壇或者QQ群 |
3308 |
用戶輸入錯誤 |
音頻過長 |
音頻時長不超過60s,請將音頻時長截取為60s以下 |
3309 |
用戶輸入錯誤 |
音頻數據問題 |
服務端無法將音頻轉為pcm格式,可能是長度問題,音頻格式問題等。 請將輸入的音頻時長截取為60s以下,并核對下音頻的編碼,是否是16K, 16bits,單聲道。 |
3310 |
用戶輸入錯誤 |
輸入的音頻文件過大 |
語音文件共有3種輸入方式: json 里的speech 參數(base64后); 直接post 二進制數據,及callback參數里url。 分別對應三種情況:json超過10M;直接post的語音文件超過10M;callback里回調url的音頻文件超過10M |
3311 |
用戶輸入錯誤 |
采樣率rate參數不在選項里 |
目前rate參數僅提供16000,填寫4000即會有此錯誤 |
3312 |
用戶輸入錯誤 |
音頻格式format參數不在選項里 |
目前格式僅僅支持pcm,wav或amr,如填寫mp3即會有此錯誤 |
?
實現簡單的生成語音
- 提前安裝好百度的語音識別依賴包:baidu-Aip
- 申請百度語音識別接入的開發者賬號,網址: https://ai.baidu.com/tech/speech , 目的是為了獲取AppID,API Key,Secret Key
- 錄制一個wav的錄音文件,錄制內容是:這是一個百度語音識別的測試。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
