移動端SDK說明
本文為您介紹傳入錄音文件,完成音頻文件識別并返回結(jié)果的流程說明。
使用須知
輸入格式:WAV/MP3/AAC。
時長限制:識別語音文件大小不能超過100 MB。
設(shè)置多語言識別:在管控臺編輯項目中進(jìn)行模型選擇,詳情請參見管理項目。
服務(wù)地址
訪問類型 | 說明 | URL | Host |
外網(wǎng)訪問 | 所有服務(wù)器均可使用外網(wǎng)訪問URL。 |
|
|
阿里云上海ECS內(nèi)網(wǎng)訪問 | 使用阿里云上海、北京、深圳ECS(即ECS地域為華東2(上海)、華北2(北京)、華南1(深圳)),可使用內(nèi)網(wǎng)訪問URL。 ECS的經(jīng)典網(wǎng)絡(luò)不能訪問AnyTunnel,即不能在內(nèi)網(wǎng)訪問語音服務(wù);如果希望使用AnyTunnel,需要創(chuàng)建專有網(wǎng)絡(luò)在其內(nèi)部訪問。 說明
|
|
|
以下將以使用外網(wǎng)訪問URL的方式進(jìn)行介紹。如果您使用阿里云上海ECS,并需要通過內(nèi)網(wǎng)訪問URL,則使用HTTP協(xié)議,并替換外網(wǎng)訪問的URL和Host。
交互流程
下圖展示iOS SDK和Android SDK的交互流程。
鑒權(quán)和初始化
客戶端與服務(wù)端建立連接時,使用Access Token進(jìn)行鑒權(quán)。關(guān)于Token獲取請參見獲取Token概述。
初始化參數(shù)表
參數(shù)
類型
是否必選
說明
url
String
是
語音服務(wù)URL地址。
app_key
String
是
管控臺創(chuàng)建項目的appkey。
token
String
是
請確保該Token可以使用并在有效期內(nèi)。
說明Token可以在初始化時設(shè)置,也可通過參數(shù)設(shè)置進(jìn)行更新。
device_id
String
是
設(shè)備標(biāo)識,唯一表示一臺設(shè)備(如Mac地址/SN/UniquePsuedoID)。
開始文件識別
客戶端發(fā)起文件識別請求時,需要通過接口傳入JSON格式的params參數(shù)。
參數(shù)
類型
是否必選
說明
file_path
String
是
需要進(jìn)行識別的文件絕對路徑。
direct_ip
String
否
您可自行完成服務(wù)地址DNS解析,傳入IP地址進(jìn)行訪問。
nls_config
JsonObject
否
服務(wù)細(xì)節(jié)參數(shù)配置。
其中,
nls_config
字段用于設(shè)置服務(wù)的具體配置參數(shù),多與識別效果相關(guān)。參數(shù)
類型
是否必選
說明
format
String
是
音頻編碼格式,支持WAV/MP3/AAC格式。
sample_rate
Integer
否
識別模型使用的采樣率,一般不設(shè)置,在管控臺進(jìn)行配置。
enable_inverse_text_normalization
Boolean
否
ITN(逆文本inverse text normalization)中文數(shù)字轉(zhuǎn)換阿拉伯?dāng)?shù)字。設(shè)置為True時,中文數(shù)字將轉(zhuǎn)為阿拉伯?dāng)?shù)字輸出,默認(rèn)值:False。
max_end_silence
Integer
否
允許的最大結(jié)束靜音,默認(rèn)值450,單位是毫秒。
customization_id
String
否
通過POP API創(chuàng)建的定制模型id,默認(rèn)不添加。
vocabulary_id
String
否
創(chuàng)建的泛熱詞表ID,默認(rèn)不添加。
enable_word_level_result
Boolean
否
是否開啟詞信息返回,默認(rèn)false。
first_channel_only
Boolean
否
是否開啟只處理第一個聲道,默認(rèn)false。
獲取識別結(jié)果
啟動任務(wù)后一段時間(根據(jù)文件長度和網(wǎng)絡(luò)情況而定)將收到EVENT_FILE_TRANS_RESULT事件,即完整轉(zhuǎn)寫結(jié)果,示例如下。
{ "task_id":"e76f979b33d9443eb6fbf770315a****", "status":20000000, "message":"SUCCESS", "flash_result":{ "duration":299, //音頻時長 "completed":true, "sentences":[ { "text":"啊,", //句子級別的識別結(jié)果 "begin_time":3700, //句子的開始時間,單位:毫秒 "end_time":3940, //句子的結(jié)束時間,單位:毫秒 "channel_id":0, //多個聲道的音頻文件會區(qū)分返回識別結(jié)果,聲道id從0計數(shù) "words":[ { "text":"啊", //當(dāng)前句子包含的詞信息 "begin_time":3700, //當(dāng)前詞開始時間,單位:毫秒 "end_time":3940, //當(dāng)前詞結(jié)束時間,單位:毫秒 "punc":"," //當(dāng)前詞尾的標(biāo)點信息,沒有標(biāo)點則為空 } ] }, { "text":"我在哪呀了。", "begin_time":3940, "end_time":4720, "channel_id":0, "words":[ { "text":"我", "begin_time":3940, "end_time":4040, "punc":"," }, { "text":"在哪", "begin_time":4040, "end_time":4340, "punc":"," }, { "text":"呀了", "begin_time":4340, "end_time":4720, "punc":"," } ] } ] } }
響應(yīng)消息為JSON格式,包含如下字段。
字段
說明
task_id
任務(wù)ID,任務(wù)唯一標(biāo)識。
status
狀態(tài)碼
message
狀態(tài)消息
flash_result
識別結(jié)果對象
其中,
flash_result
對象包括如下字段。字段
說明
sentences
句子級別的識別結(jié)果,是一個對象數(shù)組。
其中,
sentences
數(shù)組對象包含如下字段。字段
說明
text
識別結(jié)果。
begin_time
識別結(jié)果的語音起點在音頻流的時間偏移,單位毫秒。
end_time
識別結(jié)果的語音尾點在音頻流的時間偏移,單位毫秒。
錯誤碼
通用錯誤碼
狀態(tài)碼 | 狀態(tài)消息 | 原因 | 解決方案 |
40000000 | 默認(rèn)的客戶端錯誤碼,對應(yīng)了多個錯誤消息。 | 用戶使用了不合理的參數(shù)或者調(diào)用邏輯。 | 請參考官網(wǎng)文檔示例代碼進(jìn)行對比測試驗證。 |
40000001 | The token 'xxx' has expired; The token 'xxx' is invalid | 用戶使用了不合理的參數(shù)或者調(diào)用邏輯。通用客戶端錯誤碼,通常是涉及Token相關(guān)的不正確使用,例如Token過期或者非法。 | 請參考官網(wǎng)文檔示例代碼進(jìn)行對比測試驗證。 |
40000002 | Gateway:MESSAGE_INVALID:Can't process message in state'FAILED'! | 無效或者錯誤的報文消息。 | 請參考官網(wǎng)文檔示例代碼進(jìn)行對比測試驗證。 |
40000003 | PARAMETER_INVALID; Failed to decode url params | 用戶傳遞的參數(shù)有誤,一般常見于RESTful接口調(diào)用。 | 請參考官網(wǎng)文檔示例代碼進(jìn)行對比測試驗證。 |
40000005 | Gateway:TOO_MANY_REQUESTS:Too many requests! | 并發(fā)請求過多。 | 如果是試用版調(diào)用,建議您升級為商用版本以增大并發(fā)。 如果已是商用版,可購買并發(fā)資源包,擴(kuò)充您的并發(fā)額度。 |
40000009 | Invalid wav header! | 錯誤的消息頭。 | 如果您發(fā)送的是WAV語音文件,且設(shè)置 |
40000009 | Too large wav header! | 傳輸?shù)恼Z音WAV頭不合法。 | 建議使用PCM、OPUS等格式發(fā)送音頻流,如果是WAV,建議關(guān)注語音文件的WAV頭信息是否為正確的數(shù)據(jù)長度大小。 |
40000010 | Gateway:FREE_TRIAL_EXPIRED:The free trial has expired! | 試用期已結(jié)束,并且未開通商用版、或賬號欠費(fèi)。 | 請登錄控制臺確認(rèn)服務(wù)開通狀態(tài)以及賬戶余額。 |
40010001 | Gateway:NAMESPACE_NOT_FOUND:RESTful url path illegal | 不支持的接口或參數(shù)。 | 請檢查調(diào)用時傳遞的參數(shù)內(nèi)容是否和官網(wǎng)文檔要求的一致,并結(jié)合錯誤信息對比排查,設(shè)置為正確的參數(shù)。 比如您是否通過curl命令執(zhí)行RESTful接口請求, 拼接的URL是否合法。 |
40010003 | Gateway:DIRECTIVE_INVALID:[xxx] | 客戶端側(cè)通用錯誤碼。 | 表示客戶端傳遞了不正確的參數(shù)或指令,在不同的接口上有對應(yīng)的詳細(xì)報錯信息,請參考對應(yīng)文檔進(jìn)行正確設(shè)置。 |
40010004 | Gateway:CLIENT_DISCONNECT:Client disconnected before task finished! | 在請求處理完成前客戶端主動結(jié)束。 | 無,或者請在服務(wù)端響應(yīng)完成后再關(guān)閉鏈接。 |
40010005 | Gateway:TASK_STATE_ERROR:Got stop directive while task is stopping! | 客戶端發(fā)送了當(dāng)前不支持的消息指令。 | 請參考官網(wǎng)文檔示例代碼進(jìn)行對比測試驗證。 |
40020105 | Meta:APPKEY_NOT_EXIST:Appkey not exist! | 使用了不存在的Appkey。 | 請確認(rèn)是否使用了不存在的Appkey,Appkey可以通過登錄控制臺后查看項目配置。 |
40020106 | Meta:APPKEY_UID_MISMATCH:Appkey and user mismatch! | 調(diào)用時傳遞的Appkey和Token并非同一個賬號UID所創(chuàng)建,導(dǎo)致不匹配。 | 請檢查是否存在兩個賬號混用的情況,避免使用賬號A名下的Appkey和賬號B名下生成的Token搭配使用。 |
403 | Forbidden | 使用的Token無效,例如Token不存在或者已過期。 | 請設(shè)置正確的Token。Token存在有效期限制,請及時在過期前獲取新的Token。 |
41000003 | MetaInfo doesn't have end point info | 無法獲取該Appkey的路由信息。 | 請檢查是否存在兩個賬號混用的情況,避免使用賬號A名下的Appkey和賬號B名下生成的Token搭配使用。 |
41010101 | UNSUPPORTED_SAMPLE_RATE | 不支持的采樣率格式。 | 當(dāng)前實時語音識別只支持8000 Hz和16000 Hz兩種采樣率格式的音頻。 |
41040201 | Realtime:GET_CLIENT_DATA_TIMEOUT:Client data does not send continuously! | 獲取客戶端發(fā)送的數(shù)據(jù)超時失敗。 | 客戶端在調(diào)用實時語音識別時請保持實時速率發(fā)送,發(fā)送完成后及時關(guān)閉鏈接。 |
50000000 | GRPC_ERROR:Grpc error! | 受機(jī)器負(fù)載、網(wǎng)絡(luò)等因素導(dǎo)致的異常,通常為偶發(fā)出現(xiàn)。 | 一般重試調(diào)用即可恢復(fù)。 |
50000001 | GRPC_ERROR:Grpc error! | 受機(jī)器負(fù)載、網(wǎng)絡(luò)等因素導(dǎo)致的異常,通常為偶發(fā)出現(xiàn)。 | 一般重試調(diào)用即可恢復(fù)。 |
52010001 | GRPC_ERROR:Grpc error! | 受機(jī)器負(fù)載、網(wǎng)絡(luò)等因素導(dǎo)致的異常,通常為偶發(fā)出現(xiàn)。 | 一般重試調(diào)用即可恢復(fù)。 |
一句話識別錯誤碼
狀態(tài)碼 | 狀態(tài)消息 | 原因 | 解決方案 |
40000000 | Gateway:CLIENT_ERROR:Empty audio data! | 沒有音頻數(shù)據(jù)。 | 建議參考公共云示例代碼,請求時發(fā)送音頻數(shù)據(jù)。 |
40000004 | Gateway:IDLE_TIMEOUT:Websocket session is idle for too long time | 請求建立鏈接后,長時間沒有發(fā)送任何數(shù)據(jù),超過10s后服務(wù)端會返回此錯誤信息。 | 請在建立鏈接后和服務(wù)端保持交互,比如持續(xù)發(fā)送語音流,您可以在采集音頻的同時進(jìn)行發(fā)送, 發(fā)送結(jié)束后及時關(guān)閉鏈接。 |
40010002 | Gateway:DIRECTIVE_NOT_SUPPORTED:Directive'SpeechRecognizer.EnhanceRecognition'isnotsupported! | 發(fā)送了服務(wù)端不支持的消息指令。 | 請參考官網(wǎng)文檔示例代碼進(jìn)行對比測試驗證。 |
40010003 | Gateway:DIRECTIVE_INVALID:Too many items for ‘vocabulary'!(173) | 熱詞數(shù)量設(shè)置過多。 | 請參考API進(jìn)行正確設(shè)置。 |
41010104 | TOO_LONG_SPEECH | 發(fā)送的語音時長超過限制,僅在一句話識別接口上出現(xiàn)。 | 一句話語音識別支持60s以內(nèi)的音頻,如果超過60s,建議調(diào)用實時語音識別接口。 |
41010105 | SILENT_SPEECH | 純靜音數(shù)據(jù)或噪音數(shù)據(jù),導(dǎo)致無法檢測出任何有效語音。 | 無。 |
一句話識別/實時語音識別/錄音文件識別極速版
配置或參數(shù)錯誤
狀態(tài)碼
狀態(tài)消息
原因
解決方案
240999
DEFAULT_ERROR
內(nèi)部默認(rèn)錯誤。
內(nèi)部未明確錯誤。
240001
NUI_CONFIG_INVALID
配置文件錯誤。
配置文件錯誤,請確認(rèn)傳入的資源路徑內(nèi)是否有資源文件。如果是Android平臺,請參考代碼樣例主動使用copyAssets接口。
240002
ILLEGAL_PARAM
非法參數(shù)。
請確認(rèn)傳入的格式是否正確,包括字段類型、值范圍限制。
240003
ILLEGAL_INIT_PARAM
初始化參數(shù)非法。
請確認(rèn)初始化參數(shù)格式是否錯誤或缺少必須字段。
240004
NECESSARY_PARAM_LACK
缺少必須參數(shù)。
請確認(rèn)接口調(diào)用時的必須參數(shù)。
240005
NULL_PARAM_ERROR
參數(shù)為空。
確認(rèn)參數(shù)是否為空。
240006
NULL_LISTENER_ERROR
未定義事件回調(diào)。
確認(rèn)回調(diào)事件是否正確賦值。
240007
NULL_DIALOG_ERROR
無有效對話實例,一般在內(nèi)部狀態(tài)錯誤時發(fā)生。
請確認(rèn)接口調(diào)用前是否為正確狀態(tài),可使用cancel接口恢復(fù)idle狀態(tài)。
240008
NULL_ENGINE_ERROR
無有效引擎實例,請檢查是否初始化成功。
請確認(rèn)是否初始化成功。
240009
ILLEGAL_DATA
傳入音頻數(shù)據(jù)地址或長度非法。
請確認(rèn)傳入的數(shù)據(jù)長度值。
SDK狀態(tài)錯誤
狀態(tài)碼
狀態(tài)消息
原因
解決方案
240010
ILLEGAL_REENTRANT
退出后調(diào)用SDK接口。
不影響功能時可忽略。
240011
SDK_NOT_INIT
SDK未正確初始化。
確認(rèn)初始化返回值正確再進(jìn)行其他接口使用。
240012
SDK_ALREADY_INIT
重復(fù)調(diào)用SDK初始化接口。
確認(rèn)初始化調(diào)用邏輯。
240013
DIALOG_INVALID_STATE
內(nèi)部對話狀態(tài)錯誤。
請閱讀SDK流程圖,確認(rèn)是否在錯誤狀態(tài)下調(diào)用接口。
240014
STATE_INVALID
SDK內(nèi)部狀態(tài)錯誤。
請閱讀SDK流程圖,確認(rèn)是否在錯誤狀態(tài)下調(diào)用接口。
240015
ILLEGAL_FUNC_CALL
該模式無法調(diào)用接口。
請確認(rèn)接口調(diào)用是否合理。
系統(tǒng)調(diào)用錯誤
狀態(tài)碼
狀態(tài)消息
原因
解決方案
240020
MEM_ALLOC_ERROR
內(nèi)存分配錯誤。
檢查內(nèi)存是否不足。
240021
FILE_ACCESS_FAIL
文件訪問錯誤。
檢查文件是否提供讀寫權(quán)限。
240022
CREATE_DIR_ERROR
創(chuàng)建目錄錯誤。
檢查是否有寫權(quán)限。
SDK內(nèi)部調(diào)用錯誤
狀態(tài)碼
狀態(tài)消息
原因
解決方案
240030
CREATE_NUI_ERROR
引擎創(chuàng)建失敗。
創(chuàng)建實例失敗,一般為系統(tǒng)資源不足。
240031
TEXT_DIALOG_START_FAIL
發(fā)起文本理解失敗。
文本轉(zhuǎn)語義理解失敗,檢查網(wǎng)絡(luò)連接或URL以及Token等信息是否有效。
240032
TEXT_CANCEL_START_FAIL
取消文本理解失敗。
可忽略。
240033
WUW_DUPLICATE
動態(tài)喚醒詞重復(fù)。
可忽略。
本地引擎調(diào)用錯誤
狀態(tài)碼
狀態(tài)消息
原因
解決方案
240040
CEI_INIT_FAIL
本地引擎初始化失敗。
請確認(rèn)本地引擎的模型是否有效、目錄是否可讀寫。
音頻錯誤
狀態(tài)碼
狀態(tài)消息
原因
解決方案
240051
UPDATE_AUDIO_ERROR
推送音頻錯誤,一般為輸入音頻長度大于所需音頻。
確認(rèn)推送的音頻長度是否非法。
240052
MIC_ERROR
連續(xù)2s未獲取到音頻。
請確認(rèn)在音頻數(shù)據(jù)回調(diào)中是否正確提供所需長度的音頻。
網(wǎng)絡(luò)錯誤
狀態(tài)碼
狀態(tài)消息
原因
解決方案
240060
CREATE_DA_REQUEST_ERROR
創(chuàng)建對話助手實例失敗
可忽略。
240061
START_DA_REQUEST_ERROR
發(fā)起對話助手請求失敗
可忽略。
240062
DEFAULT_NLS_ERROR
服務(wù)端發(fā)生錯誤。
說明該錯誤同時包含服務(wù)端返回錯誤內(nèi)容。
請參考服務(wù)端錯誤碼進(jìn)一步定位。
240063
SSL_ERROR
創(chuàng)建SSL實例錯誤。
偶現(xiàn)請忽略。
240064
SSL_CONNECT_FAILED
SSL連接失敗。
連接異常,請檢查服務(wù)URL或者本地網(wǎng)絡(luò)連接是否正常。
240065
HTTP_CONNECT_FAILED
HTTP連接失敗。
服務(wù)連接錯誤,可通過日志文件查看HTTP返回值確認(rèn)原因。
240066
DNS_FAILED
DNS解析失敗。
請檢查本地網(wǎng)絡(luò)是否正常、DNS服務(wù)是否正常。
240067
CONNECT_FAILED
Socket連接失敗。
檢查網(wǎng)絡(luò)連接。
240068
SERVER_NOT_ACCESS
服務(wù)端無法訪問。
請檢查Token是否過期或者URL是否正確。
240069
SOCKET_CLOSED
Socket已關(guān)閉。
偶現(xiàn)請忽略。
240070
AUTH_FAILED
鑒權(quán)失敗。
請檢查是否提供正確的ak_secret,ak_id,app_key,sdk_code和device_id等信息,以及確認(rèn)是否開通足夠配額。
240071
HTTPDNS_FAILED
使用客戶端傳入的IP連接失敗。
如果使用直接傳入IP進(jìn)行訪問,請確認(rèn)IP是否可訪問。
240072
HTTP_SEND_FAILED
文件轉(zhuǎn)寫HTTP發(fā)送失敗。
確認(rèn)網(wǎng)絡(luò)連接是否正常。
240073
HTTP_RECEIVE_FAILED
文件轉(zhuǎn)寫HTTP接收失敗。
確認(rèn)網(wǎng)絡(luò)連接是否正常。
240074
HTTP_RESPONSE_ERROR
文件轉(zhuǎn)寫接收內(nèi)容解析失敗
服務(wù)端返回內(nèi)容錯誤。
240075
HTTP_SERVER_ERROR
文件轉(zhuǎn)寫服務(wù)錯誤。
請參考服務(wù)端錯誤碼進(jìn)一步定位。