實時語音識別 API 簡介
概念解釋
實時語音識別:可實現(xiàn)對連續(xù)音頻流的實時識別,轉(zhuǎn)換成文本信息并返對應文字流。
說明
Hi,您好,歡迎使用有道智云實時語音識別API接口服務。
如果您想快速體驗服務,建議您前往 語音識別體驗中心 或者在體驗中心右下側(cè)找到小程序二維碼,掃描進行體驗。
本文檔主要針對需要集成API的技術開發(fā)工程師,詳細描述實時語音識別能力相關的技術內(nèi)容。
如果您有與我們商務合作的需求,可以通過以下方式聯(lián)系我們:
商務郵箱: AIcloud_Business@corp.youdao.com
如果您對文檔內(nèi)容有任何疑問,可以通過以下幾種方式聯(lián)系我們:
客服QQ:1906538062
智云語音技術交流QQ群:861723255
聯(lián)系郵箱: zhiyun@corp.youdao.com
溫馨提示:
- 本文檔主要針對開發(fā)人員,接入測試前需要在后臺創(chuàng)建API應用,獲取
應用ID
和應用密鑰
;如果您還沒有,請按照 新手指南 獲取。
- 平臺向每個賬戶贈送50元的體驗金,供用戶集成前測試所用,具體資費規(guī)則詳見 實時語音識別服務報價 。
接口說明
接口地址:
wss://openapi.youdao.com/stream_asropenapi?{請求參數(shù)}
語音支持:
格式支持:wav(不壓縮、pcm編碼)
采樣率:推薦16k。
編碼:16bit位深的單聲道
注:
發(fā)送時,第一幀需要為WAV HEADER 信息。
接口調(diào)用參數(shù)
服務接口的調(diào)用分為認證、實時通信兩階段。
1. 認證階段
請求參數(shù)格式:
key1=value1&key2=value2&key3=value3&key4=value4
參數(shù)說明:
參數(shù) |
類型 |
必填 |
說明 |
示例 |
appKey |
String |
是 |
已申請的應用ID |
ID |
salt |
String |
是 |
UUID |
uuid,唯一通用識別碼 |
curtime |
String |
是 |
時間戳(秒) |
TimeStamp |
sign |
String |
是 |
加密數(shù)字簽名。 |
sha256 |
signType |
String |
是 |
數(shù)字簽名類型 |
v4 |
langType |
String |
是 |
語言選擇,參考支持語言列表 |
zh-CHS |
format |
String |
是 |
音頻格式,支持wav |
wav |
channel |
String |
是 |
聲道,支持1(單聲道) |
1 |
version |
String |
是 |
api版本 |
v1 |
rate |
String |
是 |
采樣率 |
16000 |
簽名sign
生成方法如下:
signType=v4;
sign=sha256(應用ID
+salt
+curtime
+應用密鑰
)。
服務端通過 text message 返回 json字符串的認證結果,參數(shù)示例:
成功:
{
"result": [],
"action": "started",
"errorCode": "0"
}
失敗:
{
"result": "[]",
"action": "error",
"errorCode": "202"
}
參數(shù)說明:
參數(shù) |
類型 |
說明 |
errorCode |
String |
狀態(tài)碼,詳見 錯誤代碼列表 |
action |
String |
狀態(tài)標識。started:握手;recognition:識別;error:錯誤,若輸出為sensitive:包含不合時宜詞匯,請根據(jù)實際返回結果按需處理 |
result |
String |
識別結果數(shù)據(jù) |
2 實時通信階段
認證成功之后,進入實時通信階段,此階段客戶端發(fā)送音頻流和結束標識,并接收轉(zhuǎn)寫結果或錯誤。
2.1 發(fā)送音頻流
此階段客戶端通過 binary message 發(fā)送音頻流,內(nèi)容為音頻的二進制數(shù)據(jù),此過程的發(fā)送頻率將影響文字結果展示的實時性。
建議以 200ms 間隔發(fā)送音頻數(shù)據(jù),若間隔超時 15s 以上,服務端將停止識別。
2.2 發(fā)送結束標識
客戶端完成所有音頻數(shù)據(jù)的發(fā)送后,需發(fā)送一個特殊的 binary message 到服務端作為音頻流發(fā)送結束的標識,內(nèi)容為:
{"end": "true"}
注:該標識大小寫敏感。
2.3 接收轉(zhuǎn)寫結果
交互過程中,服務端不斷通過 text message 返回實時識別結果到客戶端,響應結果是以json形式輸出(為text message)。
識別結果示例:
{
"result": [{
"st": [{
"bg": 30,
"ed": 480,
"ws": [{
"w": "Have",
"wb": 30,
"we": 240
}, {
"w": "a",
"wb": 240,
"we": 270
}, {
"w": "good",
"wb": 270,
"we": 480
}, {
"w": "day.",
"wb": 480,
"we": 480
}]
}],
"seg_id": 0
}],
"errorCode": "0",
"action": "recognition"
}
識別結果 result 參數(shù)說明:
參數(shù) |
含義 |
說明 |
bg |
分句開始時間 |
單位毫秒/ms |
ed |
分句結束時間 |
單位毫秒/ms |
w |
詞(字)識別結果 |
|
wb |
詞(字)開始時間 |
單位毫秒/ms |
we |
詞(字)結束時間 |
單位毫秒/ms |
type |
識別結果類型 |
0:最終結果,1:中間結果 |
seg_id |
分句 id |
從 0 開始遞增 |
支持語言
language |
語種(中文) |
語言代碼 |
Arabic (United Arab Emirates) |
阿拉伯語(阿拉伯聯(lián)合酋長國) |
ar-AE |
Arabic (Bahrain) |
阿拉伯語(巴林) |
ar-BH |
Arabic (Algeria) |
阿拉伯語(阿爾及利亞) |
ar-DZ |
Arabic (Egypt) |
阿拉伯語(埃及) |
ar-EG |
Arabic (Israel) |
阿拉伯語(以色列) |
ar-IL |
Arabic (Iraq) |
阿拉伯語(伊拉克) |
ar-IQ |
Arabic (Jordan) |
阿拉伯語(約旦) |
ar-JO |
Arabic (Kuwait) |
阿拉伯語(科威特) |
ar-KW |
Arabic (Lebanon) |
阿拉伯語(黎巴嫩) |
ar-LB |
Arabic (Morocco) |
阿拉伯語(摩洛哥) |
ar-MA |
Arabic (Oman) |
阿拉伯語(阿曼) |
ar-OM |
Arabic (State of Palestine) |
阿拉伯語(巴勒斯坦國) |
ar-PS |
Arabic (Qatar) |
阿拉伯語(卡塔爾) |
ar-QA |
Arabic (Saudi Arabia) |
阿拉伯語(沙特阿拉伯) |
ar |
Arabic (Tunisia) |
阿拉伯語(突尼斯) |
ar-TN |
German (Germany) |
德國(德國) |
de |
English (Australia) |
英語(澳大利亞) |
en-AUS |
English (Canada) |
英語(加拿大) |
en-CA |
English (United Kingdom) |
英語(英國) |
en-GBR |
English (Ghana) |
英語(加納) |
en-GH |
English (Ireland) |
英語(愛爾蘭) |
en-IE |
English (India) |
英語(印度) |
en-IND |
English (Kenya) |
英語(肯尼亞) |
en-KE |
English (Nigeria) |
英語(尼日利亞) |
en-NG |
English (New Zealand) |
英語(新西蘭) |
en-NZ |
English (Philippines) |
英語(菲律賓) |
en-PH |
English (Singapore) |
英語(新加坡) |
en-SG |
English (Tanzania) |
英語(坦桑尼亞) |
en-TZ |
English (United States) |
英語(美國) |
en |
English (South Africa) |
英語(南非) |
en-ZAF |
Spanish (Argentina) |
西班牙語(阿根廷) |
es-AR |
Spanish (Bolivia) |
西班牙語(玻利維亞) |
es-BO |
Spanish (Chile) |
西班牙語(智利) |
es-CL |
Spanish (Colombia) |
西班牙語(哥倫比亞) |
es-COL |
Spanish (Costa Rica) |
西班牙語(哥斯達黎加) |
es-CR |
Spanish (Dominican Republic) |
西班牙語(多米尼加共和國) |
es-DO |
Spanish (Ecuador) |
西班牙語(厄瓜多爾) |
es-EC |
Spanish (Spain) |
西班牙語(西班牙) |
es |
Spanish (Guatemala) |
西班牙語(危地馬拉) |
es-GT |
Spanish (Honduras) |
西班牙語(洪都拉斯) |
es-HN |
Spanish (Mexico) |
西班牙語(墨西哥) |
es-MEX |
Spanish (Nicaragua) |
西班牙語(尼加拉瓜) |
es-NI |
Spanish (Panama) |
西班牙語(巴拿馬) |
es-PA |
Spanish (Peru) |
西班牙語(秘魯) |
es-PE |
Spanish (Puerto Rico) |
西班牙語(波多黎各) |
es-PR |
Spanish (Paraguay) |
西班牙語(巴拉圭) |
es-PY |
Spanish (El Salvador) |
西班牙語(薩爾瓦多) |
es-SV |
Spanish (United States) |
西班牙語(美國) |
es-US |
Spanish (Uruguay) |
西班牙語(烏拉圭) |
es-UY |
Spanish (Venezuela) |
西班牙語(委內(nèi)瑞拉) |
es-VE |
French (Canada) |
法語(加拿大) |
fr-CA |
French (Canada) |
法語(加拿大) |
fr-CAN |
French (France) |
法國(法國) |
fr |
Italian (Italy) |
意大利(意大利) |
it |
Japanese (Japan) |
日本(日本) |
ja |
Korean (South Korea) |
朝鮮(韓國) |
ko |
Dutch (Netherlands) |
荷蘭(荷蘭) |
nl |
Polish (Poland) |
波蘭(波蘭) |
pl |
Portuguese (Brazil) |
葡萄牙語(巴西) |
pt-BRA |
Russian (Russia) |
俄羅斯(俄羅斯) |
ru |
Thai (Thailand) |
泰國(泰國) |
th |
Turkish (Turkey) |
土耳其(土耳其) |
tr |
Chinese, Mandarin (Simplified, China) |
中文、普通話(簡體、中國) |
zh-CHS |
Chinese, Mandarin (Simplified, Hong Kong) |
中文、普通話(簡體,香港) |
zh-HK |
Chinese, Mandarin (Simplified, Taiwan) |
中文、普通話(簡體、臺灣) |
zh-TWN |
Bulgarian (Bulgaria) |
保加利亞(保加利亞) |
bg |
Catalan (Spain) |
加泰羅尼亞語(西班牙) |
ca |
Czech (Czech Republic) |
捷克(捷克) |
cs |
Danish (Denmark) |
丹麥(丹麥) |
da |
Greek (Greece) |
希臘(希臘) |
el |
Finnish (Finland) |
芬蘭(芬蘭) |
fi |
Hebrew (Israel) |
希伯來語(以色列) |
he |
Hindi (India) |
印地語(印度) |
hi |
Croatian (Croatia) |
克羅地亞(克羅地亞) |
hr |
Hungarian (Hungary) |
匈牙利(匈牙利) |
hu |
Indonesian (Indonesia) |
印尼(印度尼西亞) |
id |
Lithuanian (Lithuania) |
立陶宛(立陶宛) |
lt-LT |
Latvian (Latvia) |
拉脫維亞(拉脫維亞) |
lv-LV |
Norwegian Bokm?l (Norway) |
挪威書面挪威語(挪威) |
no |
Portuguese (Portugal) |
葡萄牙語(葡萄牙) |
pt |
Romanian (Romania) |
羅馬尼亞(羅馬尼亞) |
ro |
Slovak (Slovakia) |
斯洛伐克(斯洛伐克) |
sk |
Slovenian (Slovenia) |
斯洛文尼亞(斯洛文尼亞) |
sl |
Serbian (Serbia) |
塞爾維亞(塞爾維亞) |
sr-RS |
Swedish (Sweden) |
瑞典(瑞典) |
sv |
Ukrainian (Ukraine) |
烏克蘭(烏克蘭) |
uk |
Vietnamese (Vietnam) |
越南(越南) |
vi |
Afrikaans (South Africa) |
布爾語(南非) |
af-ZA |
Amharic (Ethiopia) |
阿姆哈拉語(埃塞俄比亞) |
am-ET |
Azerbaijani (Azerbaijan) |
阿塞拜疆(阿塞拜疆) |
az-AZ |
Bengali (Bangladesh) |
孟加拉(孟加拉) |
bn-BD |
Bengali (India) |
孟加拉語(印度) |
bn-IN |
Estonian (Estonia) |
愛沙尼亞(愛沙尼亞) |
et-EE |
Basque (Spain) |
巴斯克(西班牙) |
eu-ES |
Persian (Iran) |
波斯(伊朗) |
fa-IR |
Filipino (Philippines) |
菲律賓(菲律賓) |
tl |
Galician (Spain) |
加利西亞(西班牙) |
gl-ES |
Gujarati (India) |
古吉拉特語(印度) |
gu-IN |
Armenian (Armenia) |
亞美尼亞(亞美尼亞) |
hy-AM |
Icelandic (Iceland) |
冰島(冰島) |
is-IS |
Javanese (Indonesia) |
爪哇(印度尼西亞) |
jv-ID |
Georgian (Georgia) |
格魯吉亞(Georgia) |
ka-GE |
Khmer (Cambodia) |
紅色(高棉語) |
km-KH |
Kannada (India) |
埃納德語(印度) |
kn-IN |
Lao (Laos) |
老撾(老撾) |
lo |
Macedonian (North Macedonia) |
馬其頓(北馬其頓) |
mk-MK |
Malayalam (India) |
馬拉雅拉姆語(印度) |
ml-IN |
Mongolian (Mongolia) |
蒙古(蒙古) |
mn-MN |
Marathi (India) |
馬拉地語(印度) |
mr-IN |
Malay (Malaysia) |
馬來語(馬來西亞) |
ms |
Burmese (Myanmar) |
緬甸(緬甸) |
my-MM |
Nepali (Nepal) |
尼泊爾(尼泊爾) |
ne-NP |
Punjabi (Gurmukhi, India) |
旁遮普(果魯穆奇語、印度) |
pa-guru-IN |
Sinhala (Sri Lanka) |
僧伽羅語(斯里蘭卡) |
si-LK |
Albanian (Albania) |
阿爾巴尼亞(阿爾巴尼亞) |
sq-AL |
Sundanese (Indonesia) |
巽他語(印度尼西亞) |
su-ID |
Swahili (Kenya) |
斯瓦希里語(肯尼亞) |
sw-KE |
Swahili (Tanzania) |
斯瓦希里語(坦桑尼亞) |
sw-TZ |
Tamil (India) |
泰米爾語(印度) |
ta |
Tamil (Sri Lanka) |
泰米爾語(斯里蘭卡) |
ta-LK |
Tamil (Malaysia) |
泰米爾語(馬來西亞) |
ta-MY |
Tamil (Singapore) |
泰米爾語(新加坡) |
ta-SG |
Telugu (India) |
泰盧固語(印度) |
te |
Urdu (India) |
烏爾都語(印度) |
ur-IN |
Urdu (Pakistan) |
烏爾都語(巴基斯坦) |
ur-PK |
Uzbek (Uzbekistan) |
烏茲別克斯坦(烏茲別克斯坦) |
uz-UZ |
Chinese, Cantonese (Traditional, Hong Kong) |
中文、粵語(繁體、香港) |
yue |
Zulu (South Africa) |
祖魯語(南非) |
zu-ZA |
Arabic (Saudi Arabia) |
阿拉伯語(沙特阿拉伯) |
s-ar |
Russian (Russia) |
俄羅斯(俄羅斯) |
s-ru |
Turkish (Turkey) |
土耳其(土耳其) |
s-tr |
Polish (Poland) |
波蘭(波蘭) |
s-pl |
Catalan (Spain) |
加泰羅尼亞語(西班牙) |
s-ca |
Dutch (Netherlands) |
荷蘭(荷蘭) |
s-nl |
Swedish (Sweden) |
瑞典(瑞典) |
s-sv |
Italian (Italy) |
意大利(意大利) |
s-it |
Indonesian (Indonesia) |
印尼(印度尼西亞) |
s-id |
Finnish (Finland) |
芬蘭(芬蘭) |
s-fi |
Persian |
波斯 |
s-fa |
French (France) |
法國(法國) |
s-fr |
German (Germany) |
德國(德國) |
s-de |
注意:s-開頭的語種為更高質(zhì)量的模型。
服務配置
支持格式 |
免費用戶最大支持并發(fā) |
單次最大請求時長(s) |
每小時最大音頻時長(s) |
每小時最大連接次數(shù) |
支持語言 |
wav |
10 |
3600 |
60000 |
3000 |
中/英等,參考詳細語言列表 |
注意:如需上調(diào)調(diào)用量請聯(lián)系技術人員咨詢。
錯誤代碼列表
錯誤碼 |
含義 |
101 |
缺少必填的參數(shù),首先確保必填參數(shù)齊全,然后,確認參數(shù)書寫是否正確 |
102 |
不支持的語言類型 |
103 |
翻譯文本過長 |
104 |
不支持的API類型 |
105 |
不支持的簽名類型 |
106 |
不支持的響應類型 |
107 |
不支持的傳輸加密類型 |
108 |
應用ID無效,注冊賬號,登錄后臺創(chuàng)建應用和實例并完成綁定,可獲得應用ID和應用密鑰等信息 |
109 |
batchLog格式不正確 |
110 |
無相關服務的有效實例,應用沒有綁定服務實例,可以新建服務實例,綁定服務實例。注:某些服務的結果發(fā)音需要tts實例,需要在控制臺創(chuàng)建語音合成實例綁定應用后方能使用。 |
111 |
開發(fā)者賬號無效 |
112 |
請求服務無效 |
113 |
q不能為空 |
114 |
不支持的圖片傳輸方式 |
201 |
解密失敗,可能為DES,BASE64,URLDecode的錯誤 |
202 |
簽名檢驗失敗,請確認應用ID和應用密鑰的正確性。 |
203 |
訪問IP地址不在可訪問IP列表 |
205 |
請求的接口與應用的平臺類型不一致,確保接入方式(Android SDK、IOS SDK、API)與創(chuàng)建的應用平臺類型一致。如有疑問請參考入門指南 |
206 |
因為時間戳無效導致簽名校驗失敗 |
207 |
重放請求 |
301 |
辭典查詢失敗 |
302 |
翻譯查詢失敗 |
303 |
服務端的其它異常 |
304 |
會話閑置太久超時 |
401 |
賬戶已經(jīng)欠費停 |
402 |
offlinesdk不可用 |
411 |
訪問頻率受限,請稍后訪問 |
412 |
長請求過于頻繁,請稍后訪問 |
1001 |
無效的OCR類型 |
1002 |
不支持的OCR image類型 |
1003 |
不支持的OCR Language類型 |
1004 |
識別圖片過大 |
1201 |
圖片base64解密失敗 |
1301 |
OCR段落識別失敗 |
1411 |
訪問頻率受限 |
1412 |
超過最大識別字節(jié)數(shù) |
2003 |
不支持的語言識別Language類型 |
2004 |
合成字符過長 |
2005 |
不支持的音頻文件類型 |
2006 |
不支持的發(fā)音類型 |
2201 |
解密失敗 |
2301 |
服務的異常 |
2411 |
訪問頻率受限,請稍后訪問 |
2412 |
超過最大請求字符數(shù) |
3001 |
不支持的語音格式 |
3002 |
不支持的語音采樣率 |
3003 |
不支持的語音聲道 |
3004 |
不支持的語音上傳類型 |
3005 |
不支持的語言類型 |
3006 |
不支持的識別類型 |
3007 |
識別音頻文件過大 |
3008 |
識別音頻時長過長 |
3009 |
不支持的音頻文件類型 |
3010 |
不支持的發(fā)音類型 |
3201 |
解密失敗 |
3301 |
語音識別失敗 |
3302 |
語音翻譯失敗 |
3303 |
服務的異常 |
3411 |
訪問頻率受限,請稍后訪問 |
3412 |
超過最大請求字符數(shù) |
4001 |
不支持的語音識別格式 |
4002 |
不支持的語音識別采樣率 |
4003 |
不支持的語音識別聲道 |
4004 |
不支持的語音上傳類型 |
4005 |
不支持的語言類型 |
4006 |
識別音頻文件過大 |
4007 |
識別音頻時長過長 |
4201 |
解密失敗 |
4301 |
語音識別失敗 |
4303 |
服務的異常 |
4411 |
訪問頻率受限,請稍后訪問 |
4412 |
超過最大請求時長 |
5001 |
無效的OCR類型 |
5002 |
不支持的OCR image類型 |
5003 |
不支持的語言類型 |
5004 |
識別圖片過大 |
5005 |
不支持的圖片類型 |
5006 |
文件為空 |
5201 |
解密錯誤,圖片base64解密失敗 |
5301 |
OCR段落識別失敗 |
5411 |
訪問頻率受限 |
5412 |
超過最大識別流量 |
9001 |
不支持的語音格式 |
9002 |
不支持的語音采樣率 |
9003 |
不支持的語音聲道 |
9004 |
不支持的語音上傳類型 |
9005 |
不支持的語音識別 Language類型 |
9301 |
ASR識別失敗 |
9303 |
服務器內(nèi)部錯誤 |
9411 |
訪問頻率受限(超過最大調(diào)用次數(shù)) |
9412 |
超過最大處理語音長度 |
10001 |
無效的OCR類型 |
10002 |
不支持的OCR image類型 |
10004 |
識別圖片過大 |
10201 |
圖片base64解密失敗 |
10301 |
OCR段落識別失敗 |
10411 |
訪問頻率受限 |
10412 |
超過最大識別流量 |
11001 |
不支持的語音識別格式 |
11002 |
不支持的語音識別采樣率 |
11003 |
不支持的語音識別聲道 |
11004 |
不支持的語音上傳類型 |
11005 |
不支持的語言類型 |
11006 |
識別音頻文件過大 |
11007 |
識別音頻時長過長, |
11201 |
解密失敗 |
11301 |
語音識別失敗 |
11303 |
服務的異常 |
11411 |
訪問頻率受限,請稍后訪問 |
11412 |
超過最大請求時長 |
12001 |
圖片尺寸過大 |
12002 |
圖片base64解密失敗 |
12003 |
引擎服務器返回錯誤 |
12004 |
圖片為空 |
12005 |
不支持的識別圖片類型 |
12006 |
圖片無匹配結果 |
13001 |
不支持的角度類型 |
13002 |
不支持的文件類型 |
13003 |
表格識別圖片過大 |
13004 |
文件為空 |
13301 |
表格識別失敗 |
15001 |
需要圖片 |
15002 |
圖片過大(1M) |
15003 |
服務調(diào)用失敗 |
17001 |
需要圖片 |
17002 |
圖片過大(1M) |
17003 |
識別類型未找到 |
17004 |
不支持的識別類型 |
17005 |
服務調(diào)用失敗 |
版本記錄
上線日期 |
版本號 |
更新內(nèi)容 |
2018.11.07 |
v1.0.0 |
有道智云實時語音識別API上線 |
2023.06.13 |
v2.0.0 |
更新多語言示例 demo及下載鏈接 |
常見語言Demo
Java 示例
實時語音識別 java demo
Python 示例
實時語音識別 python3 demo
C# 示例
實時語音識別 c# demo
Php 示例
實時語音識別 php demo
go 示例
實時語音識別 go demo