錄音檔案識別是針對已經錄製完成的錄音檔案,進行離線識別的服務。錄音檔案識別是非即時的,識別的檔案需要提交基於HTTP可訪問的URL地址,不支援提交本地檔案。
使用限制
支援單軌的.wav、.mp3、.m4a、.wma、.aac、.ogg、.amr、.flac格式錄音檔案識別。
檔案大小不超過512 MB。
需要識別的錄音檔案必須存放在某服務上,可以通過URL訪問。
推薦使用阿里雲OSS:如果OSS中檔案存取權限為公開,可參見公用讀取Object,擷取檔案訪問連結;如果OSS中檔案存取權限為私人,可參見私人Object,通過SDK產生有有效時間的訪問連結。
您也可以把錄音檔案存放在自行搭建的檔案伺服器,提供檔案下載。請保證HTTP的回應標頭(Header)中Content-Length的長度值和Body中資料的真實長度一致,否則會導致下載失敗。
上傳的錄音檔案URL的存取權限需要設定為公開,URL中只能使用網域名稱不能使用IP地址、不可包含空格,請盡量避免使用中文。
可用URL
不可用URL
https://gw.alipayobjects.com/os/bmw-prod/0574ee2e-f494-45a5-820f-63aee583045a.wav
http://127.0.0.1/sample.wav
D:\files\sample.wav
錄音檔案識別屬於離線識別服務,對於並發數沒有限制,對於QPS(Queries Per Second)的限制如下:
POST方式的錄音檔案識別請求調用介面,使用者層級QPS限制為200。
GET方式的錄音檔案識別結果查詢介面,使用者層級QPS限制為500。
免費使用者每日可識別不超過2小時時間長度的錄音檔案。
提交錄音檔案識別請求後,免費使用者的識別任務在24小時內完成並返回識別文本; 付費使用者的識別任務在3小時內完成並返回識別文本。識別結果在服務端可儲存72小時。
一次性上傳大規模資料(半小時內上傳超過500小時時間長度的錄音)的除外。有大規模資料識別需求的使用者,請聯絡售前專家。
智能分軌功能只支援8k單通道的語音。
支援調用方式:輪詢方式和回調方式。
支援語言模型定製。更多資訊請參見語言模型定製。
支援熱詞。更多資訊請參見熱詞。
支援漢語普通話、方言、歐美英語等多種模型識別。目前支援的語種和方言模型如下:
-
使用步驟
瞭解您的錄音檔案格式和採樣率,根據業務情境在管控台選擇合適的情境模型。
上傳錄音檔案至OSS。
如果OSS中檔案存取權限為公開,可參見公用讀取Object,擷取檔案訪問連結;如果OSS中檔案存取權限為私人,可參見私人Object,通過SDK產生有有效時間的訪問連結。
您也可以把錄音檔案存放在自行搭建的檔案伺服器,提供檔案下載。請保證HTTP的回應標頭(Header)中
Content-Length
的長度值和Body中資料的真實長度一致,否則會導致下載失敗。用戶端提交錄音檔案識別請求。
正常情況下,服務端返回該請求任務的ID,用以查詢識別結果。
用戶端發送識別結果查詢請求。
通過步驟3擷取的請求任務ID查詢錄音檔案識別的結果,目前識別的結果在服務端可儲存72小時。
互動流程
用戶端與服務端的互動流程如圖所示。
所有服務端的響應都會在返回資訊的header包含用於表示本次識別任務的task_id參數,請記錄下該值,如果發生錯誤,請您提交工單並提供task_id和錯誤資訊,諮詢產品支援人員。
各地區POP調用參數
地區 | 調用參數 |
海外(新加坡) |
|
介面調用方式
錄音檔案識別服務是以RPC風格的POP API方式提供錄音檔案識別介面,將參數封裝到每一個請求中,每個請求即對應一個方法,執行的結果放在response中。需要識別的錄音檔案必須存放在某服務上(推薦阿里雲OSS),可以通過URL訪問。使用阿里雲OSS,同一地區可以通過內網訪問,不計外網流量費用。
錄音檔案識別POP API包括兩部分:POST方式的“錄音檔案識別請求調用介面”(使用者層級QPS(queries per second)限制為200)、GET方式的“錄音檔案識別結果查詢介面”(使用者層級QPS限制為500)。
識別請求調用介面:
當採用輪詢方式時,提交錄音檔案識別任務,擷取任務ID,供後續輪詢使用。
當採用回調方式時,提交錄音檔案識別任務和回調URL,任務完成後會把識別結果POST到回調地址,要求回調地址可接收POST請求。
由於歷史原因,早期發布的錄音檔案識別服務(預設為2.0版本)的回調方式和輪詢方式的識別結果在JSON字串的風格和欄位上均有不同,下文將作說明。錄音檔案識別服務在4.0版本對回調方式做了最佳化,使得回調方式的識別結果與輪詢方式的識別結果保持一致,均為駝峰風格的JSON格式字串。
如果您已接入錄音檔案識別服務,即沒有設定錄音檔案識別服務的版本,預設為2.0版,可以繼續使用;如果您新接入錄音檔案識別服務,請設定服務版本為4.0。
輸入參數及說明:
提交錄音檔案識別請求時,需要設定輸入參數,以JSON格式的字串傳入請求對象的Body,JSON格式如下:
{ "appkey": "your-appkey", "file_link": "https://gw.alipayobjects.com/os/bmw-prod/0574ee2e-f494-45a5-820f-63aee583045a.wav", "auto_split":false, "version": "4.0", "enable_words": false, "enable_sample_rate_adaptive": true, // valid_times:擷取語音指定時間段的識別內容,若不需要,則無需填寫。 "valid_times": [ { "begin_time": 200, "end_time":2000, "channel_id": 0 } ] }
參數
實值型別
是否必選
說明
appkey
String
是
管控台的專案Appkey。
file_link
String
是
存放錄音檔案的地址,需要在管控台中將對應專案的模型設定為支援該音頻情境的模型。
version
String
是
設定錄音檔案識別服務的版本,請設定為“4.0”,預設為“2.0”。
enable_words
Boolean
否
是否開啟返回詞資訊,預設為false,開啟時需要設定version為“4.0”。
enable_sample_rate_adaptive
Boolean
否
大於16 kHz採樣率的音頻是否進行自動降採樣(降為16 kHz),預設為false,開啟時需要設定version為“4.0”。
enable_callback
Boolean
否
是否啟用回調功能,預設值為false。
callback_url
String
否
回調服務的地址,enable_callback取值為true時,本欄位必選。URL支援HTTP和HTTPS協議,host不可使用IP地址。
auto_split
Boolean
否
是否開啟智能分軌(開啟智能分軌,即可在兩方對話的語音情景下,依據每句話識別結果中的ChannelId,判斷該句話的發言人為哪一方。通常先發言一方ChannelId為0。只支援8000 Hz採樣率單通道語音)。
enable_inverse_text_normalization
Boolean
否
是否開啟ITN,中文數字將轉為阿拉伯數字輸出,預設值為false,開啟時需要設定version為“4.0”。
enable_disfluency
Boolean
否
是否開啟聲音順滑,預設值false,開啟時需要設定version為“4.0”。
enable_punctuation_prediction
Boolean
否
是否給句子加標點。預設值true(加標點)。
valid_times
List< ValidTime >
否
有效時間段資訊,用來排除一些不需要的時間段。
max_end_silence
Integer
否
允許的最大結束靜音,取值範圍:200~6000,預設值450,單位為毫秒。
max_single_segment_time
Integer
否
允許單句話最大結束時間,最小值5000,預設值14000。單位為毫秒。
customization_id
String
否
通過POP API建立的定製模型ID,預設不添加。
class_vocabulary_id
String
否
建立的類熱詞表ID,預設不添加。
vocabulary_id
String
否
建立的泛熱詞表ID,預設不添加。
enable_semantic_sentence_detection
Boolean
否
是否啟⽤語義斷句,取值:true/false,預設值false。
enable_timestamp_alignment
Boolean
否
是否啟用時間戳記校準功能,取值:true/false,預設值false。
first_channel_only
Boolean
否
是否只識別首個聲道,取值:true/false。
預設為空白:8k處理雙聲道,16k處理單聲道。
false:8k處理雙聲道,16k處理雙聲道。
true:8k處理單聲道,16k處理單聲道。
計費模式:
8k處理雙聲道,按單聲道計費,即音頻時間長度進行計費。
16k處理雙聲道,按雙聲道計費,即聲道數×音頻時間長度進行計費。
其中,ValidTime對象參數說明如下表所示。
參數
實值型別
是否必選
說明
begin_time
Int
是
有效時間段的起始點時間位移,單位為毫秒。
end_time
Int
是
有效時間段的結束點時間位移,單位為毫秒。
channel_id
Int
是
有效時間段的作用音軌序號(從0開始)。
輸出參數及說明:
服務端返回錄音檔案識別請求的響應,響應的輸出參數為JSON格式的字串:
{ "TaskId": "4b56f0c4b7e611e88f34c33c2a60****", "RequestId": "E4B183CC-6CFE-411E-A547-D877F7BD****", "StatusText": "SUCCESS", "StatusCode": 21050000 }
返回HTTP狀態:200表示成功,更多狀態代碼請查閱HTTP狀態代碼。
屬性
實值型別
是否必選
說明
TaskId
String
是
識別任務ID。
RequestId
String
是
請求ID,僅用於聯調。
StatusCode
Int
是
狀態代碼。
StatusText
String
是
狀態說明。
識別結果查詢介面:
提交完錄音檔案識別請求後,按照如下參數設定輪詢識別結果。
輸入參數:
通過提交錄音檔案識別請求獲得的任務ID作為識別結果查詢介面參數,擷取識別結果。在介面調用過程中,需要設定一定的查詢時間間隔。
查詢介面有QPS限制(100QPS),超過QPS之後則可能報錯:
Throttling.User : Request was denied due to user flow control.
。建議查詢介面的輪詢間隔時間長度適當延長,不宜過短。屬性
實值型別
是否必選
說明
TaskId
String
是
識別任務ID。
輸出參數及說明:
服務端返回識別結果查詢請求的響應,響應的輸出參數為JSON格式的字串。
正常返回:以錄音檔案nls-sample-16k.wav(檔案為單軌)識別結果為例。
{ "TaskId": "d429dd7dd75711e89305ab6170fe****", "RequestId": "9240D669-6485-4DCC-896A-F8B31F94****", "StatusText": "SUCCESS", "BizDuration": 2956, "SolveTime": 1540363288472, "StatusCode": 21050000, "Result": { "Sentences": [{ "EndTime": 2365, "SilenceDuration": 0, "BeginTime": 340, "Text": "北京的天氣。", "ChannelId": 0, "SpeechRate": 177, "EmotionValue": 5.0 }] } }
如果開啟enable_callback/callback_url,且設定服務版本為4.0,回調識別結果為:
{ "Result": { "Sentences": [{ "EndTime": 2365, "SilenceDuration": 0, "BeginTime": 340, "Text": "北京的天氣。", "ChannelId": 0, "SpeechRate": 177, "EmotionValue": 5.0 }] }, "TaskId": "36d01b244ad811e9952db7bb7ed2****", "StatusCode": 21050000, "StatusText": "SUCCESS", "RequestTime": 1553062810452, "SolveTime": 1553062810831, "BizDuration": 2956 }
RequestTime為時間戳記(單位為毫秒,例如1553062810452轉換為北京時間為2019/3/20 14:20:10),表示錄音檔案識別提交請求的時間。
SolveTime為時間戳記(單位為毫秒),表示錄音檔案識別完成的時間。
排隊中:
{ "TaskId": "c7274235b7e611e88f34c33c2a60****", "RequestId": "981AD922-0655-46B0-8C6A-5C836822****", "StatusText": "QUEUEING", "StatusCode": 21050002 }
識別中:
{ "TaskId": "c7274235b7e611e88f34c33c2a60****", "RequestId": "8E908ED2-867F-457E-82BF-4756194A****", "StatusText": "RUNNING", "BizDuration": 0, "StatusCode": 21050001 }
異常返回:以檔案下載失敗為例。
{ "TaskId": "4cf25b7eb7e711e88f34c33c2a60****", "RequestId": "098BF27C-4CBA-45FF-BD11-3F532F26****", "StatusText": "FILE_DOWNLOAD_FAILED", "BizDuration": 0, "SolveTime": 1536906469146, "StatusCode": 41050002 }
更多異常情況請查看下面的服務狀態代碼的錯誤狀態代碼及解決方案。
返回HTTP狀態:200表示成功,更多狀態代碼請查閱HTTP狀態代碼。
屬性
實值型別
是否必選
說明
TaskId
String
是
識別任務ID。
StatusCode
Int
是
狀態代碼。
StatusText
String
是
狀態說明。
RequestId
String
是
請求ID,用於調試。
Result
Object
是
識別結果對象。
Sentences
List< SentenceResult >
是
識別的結果資料。當StatusText為SUCCEED時存在。
Words
List< WordResult >
否
詞資訊,擷取時需設定enable_words為true,且設定服務version為”4.0”。
BizDuration
Long
是
識別的音頻檔案總時間長度,單位為毫秒。
SolveTime
Long
是
時間戳記,單位為毫秒,錄音檔案識別完成的時間。
其中,單句結果SentenceResult參數如下。
屬性
實值型別
是否必選
說明
ChannelId
Int
是
該句所屬音軌ID。
BeginTime
Int
是
該句的起始時間位移,單位為毫秒。
EndTime
Int
是
該句的結束時間位移,單位為毫秒。
Text
String
是
該句的識別文本結果。
EmotionValue
Int
是
情緒能量值,取值為音量分貝值/10。取值範圍:[1,10]。值越高情緒越強烈。
SilenceDuration
Int
是
本句與上一句之間的靜音時間長度,單位為秒。
SpeechRate
Int
是
本句的平均語速,單位:字數/分鐘。
開啟返回詞資訊:
如果enable_words設定為true,且設定服務version為"4.0",服務端的識別結果將包含詞資訊。使用輪詢方式和回調方式獲得的詞資訊相同,以輪詢方式的識別結果為例:
{ "StatusCode": 21050000, "Result": { "Sentences": [{ "SilenceDuration": 0, "EmotionValue": 5.0, "ChannelId": 0, "Text": "北京的天氣。", "BeginTime": 340, "EndTime": 2365, "SpeechRate": 177 }], "Words": [{ "ChannelId": 0, "Word": "北京", "BeginTime": 640, "EndTime": 940 }, { "ChannelId": 0, "Word": "的", "BeginTime": 940, "EndTime": 1120 }, { "ChannelId": 0, "Word": "天氣", "BeginTime": 1120, "EndTime": 2020 }] }, "SolveTime": 1553236968873, "StatusText": "SUCCESS", "RequestId": "027B126B-4AC8-4C98-9FEC-A031158F****", "TaskId": "b505e78c4c6d11e9a213e11db149****", "BizDuration": 2956 }
Word對象說明:
屬性
實值型別
是否必選
說明
BeginTime
Int
是
詞開始時間,單位為毫秒。
EndTime
Int
是
詞結束時間,單位為毫秒。
ChannelId
Int
是
該詞所屬音軌ID。
Word
String
是
詞資訊。
服務狀態代碼
正常狀態代碼
狀態代碼 | 狀態原因 | 狀態含義 | 解決方案 |
21050000 | SUCCESS | 成功。 | POST方式的識別請求介面調用成功,或者GET方式的識別結果查詢介面調用成功。 |
21050001 | RUNNING | 錄音檔案識別任務運行中。 | 請稍後再發送GET方式的識別結果查詢請求。 |
21050002 | QUEUEING | 錄音檔案識別任務排隊中。 | 請稍後再發送GET方式的識別結果查詢請求。 |
21050003 | SUCCESS_WITH_NO_VALID_FRAGMENT | 識別結果查詢介面調用成功,但是沒有識別到語音。 | 檢查錄音檔案是否有語音,或者語音時間長度太短。 |
錯誤狀態代碼
狀態代碼以“4”開頭表示用戶端錯誤,以“5”開頭表示服務端錯誤。
狀態代碼 | 描述 | 含義 | 解決方案 |
41050001 | USER_BIZDURATION_QUOTA_EXCEED | 單日時間超限(免費使用者每日可識別不超過2小時時間長度的錄音檔案)。 | 建議從免費版升級到商用版。 如業務量較大,請聯絡商務洽談,郵件地址:nls_support@service.aliyun.com。 |
41050002 | FILE_DOWNLOAD_FAILED | 檔案下載失敗。 | 檢查錄音檔案路徑是否正確,是否可以外網訪問和下載。 |
41050003 | FILE_CHECK_FAILED | 檔案格式錯誤。 | 檢查錄音檔案是否是單軌/雙軌的WAV格式、MP3格式。 |
41050004 | FILE_TOO_LARGE | 檔案過大。 | 檢查錄音檔案大小是否超過512 MB。 |
41050005 | FILE_NORMALIZE_FAILED | 檔案歸一化失敗。 | 檢查錄音檔案是否有損壞,是否可以正常播放。 |
41050006 | FILE_PARSE_FAILED | 檔案解析失敗。 | 檢查錄音檔案是否有損壞,是否可以正常播放。 |
41050007 | MKV_PARSE_FAILED | MKV解析失敗。 | 檢查錄音檔案是否有損壞,是否可以正常播放。 |
41050008 | UNSUPPORTED_SAMPLE_RATE | 採樣率不匹配。 | 檢查實際語音的採樣率和控制台上Appkey綁定的ASR模型採樣率是否一致,或者將本篇文檔中自動降採樣的參數enable_sample_rate_adaptive設定為true。 |
41050009 | UNSUPPORTED_ASR_GROUP | ASR分組不支援。 | 確認請求參數appkey值是否設定正確,或者是否與阿里雲帳號的AccessKey ID同一個帳號。 |
41050010 | FILE_TRANS_TASK_EXPIRED | 錄音檔案識別任務到期。 | TaskId不存在,或者已到期。 |
41050011 | REQUEST_INVALID_FILE_URL_VALUE | 請求file_link參數非法。 | 確認file_link參數格式是否正確。 |
41050012 | REQUEST_INVALID_CALLBACK_VALUE | 請求callback_url參數非法。 | 確認callback_url參數格式是否正確,是否為空白。 |
41050013 | REQUEST_PARAMETER_INVALID | 請求參數無效。 | 確認請求task值為有效JSON格式字串。 |
41050014 | REQUEST_EMPTY_APPKEY_VALUE | 請求參數appkey值為空白。 | 確認是否設定了appkey參數值。 |
41050015 | REQUEST_APPKEY_UNREGISTERED | 請求參數appkey未註冊。 | 確認請求參數appkey值是否設定正確,或者是否與阿里雲帳號的AccessKey ID同一個帳號。 |
41050021 | RAM_CHECK_FAILED | RAM檢查失敗。 | 檢查您的RAM使用者是否已經授權調用Voice Messaging Service的API,請參見RAM使用者權限配置。 |
41050023 | CONTENT_LENGTH_CHECK_FAILED | content-length 檢查失敗。 | 檢查下載檔案時,HTTP response中的content-length與檔案實際大小是否一致。 |
41050024 | FILE_404_NOT_FOUND | 需要下載的檔案不存在。 | 檢查需要下載的檔案是否存在。 |
41050025 | FILE_403_FORBIDDEN | 沒有許可權下載需要的檔案。 | 檢查是否有許可權下載錄音檔案。 |
41050026 | FILE_SERVER_ERROR | 請求的檔案所在的服務不可用。 | 檢查請求的檔案所在的服務是否可用。 |
41050029 | ASR_RESPONSE_HAVE_HO_WORDS | 未識別出有效文字。 | 檢查音頻內容。 |
40270003 | DECODER_ERROR | 檢測音頻檔案資訊失敗。 | 確認檔案下載連結中檔案為支援的音頻格式。 |
50000000 | INTERNAL_ERROR | 預設的服務端錯誤。 | 如果偶現可以忽略,重複出現請提交工單諮詢產品支援人員。 |
51050000 | INTERNAL_ERROR | 內部通用錯誤。 | 如果偶現可以忽略,重複出現請提交工單諮詢產品支援人員。 |
51050001 | VAD_FAILED | VAD失敗。 | 如果偶現可以忽略,重複出現請提交工單諮詢產品支援人員。 |
51050002 | RECOGNIZE_FAILED | 內部alisr識別失敗。 | 如果偶現可以忽略,重複出現請提交工單諮詢產品支援人員。 |
51050003 | RECOGNIZE_INTERRUPT | 內部alisr識別中斷。 | 如果偶現可以忽略,重複出現請提交工單諮詢產品支援人員。 |
51050004 | OFFER_INTERRUPT | 內部寫入隊列中斷。 | 如果偶現可以忽略,重複出現請提交工單諮詢產品支援人員。 |
51050005 | FILE_TRANS_TIMEOUT | 內部整體逾時失敗。 | 如果偶現可以忽略,重複出現請提交工單諮詢產品支援人員。 |
51050006 | FRAGMENT_FAILED | 內部分斷失敗。 | 如果偶現可以忽略,重複出現請提交工單諮詢產品支援人員。 |
歷史版本說明
如果您已接入錄音檔案識別,即沒有設定服務版本為4.0,預設會使用錄音檔案識別2.0版本。回調方式的識別結果與輪詢方式的識別結果在JSON字串的風格和欄位上有所不同, 如果開啟enable_callback/callback_url,回調識別結果為:
{
"result": [{
"begin_time": 340,
"channel_id": 0,
"emotion_value": 5.0,
"end_time": 2365,
"silence_duration": 0,
"speech_rate": 177,
"text": "北京的天氣。"
}],
"task_id": "3f5d4c0c399511e98dc025f34473****",
"status_code": 21050000,
"status_text": "SUCCESS",
"request_time": 1551164878830,
"solve_time": 1551164879230,
"biz_duration": 2956
}