本文介紹了使用API接口異步檢測語音內容的方法。語音內容審核幫助您檢測音頻文件或語音流(例如直播流)中的風險或違規內容,例如垃圾信息、廣告、涉政、暴恐、辱罵、色情、灌水、違禁、無意義等內容。
(語音異步檢測)使用說明
業務接口:/green/voice/asyncscan,表示語音異步檢測。
您可以調用該接口創建語音異步檢測任務。關于如何構造HTTP請求,請參見請求結構;您也可以直接選用已構造好的HTTP請求,更多信息,請參見SDK概覽。
語音檢測默認識別中文普通話,如需識別其他語種(例如,英語、日語、西班牙語、阿拉伯語、法語、印尼語、越南語)或方言(粵語、四川話、湖北話、陜西話、山西話、河南話、東北話、天津話、甘肅話、貴州話、云南話、江西話、廣西話、云南話、湖南話、山東話、蘇州話、浙江話、上海話、閩南語),請聯系商務經理。
計費信息:
該接口為收費接口。關于計費方式,請參見內容安全產品定價。
返回結果:
異步檢測任務不會實時返回檢測結果,您需要通過callback或者輪詢的方式獲取檢測結果。檢測結果最長保留一小時。
callback獲取檢測結果:提交異步檢測任務時,在請求參數中傳入callback參數,用來自動接收檢測結果。具體操作,請參見(異步檢測)請求參數。
輪詢獲取檢測結果:提交異步檢測任務時,無需傳入callback參數;提交異步檢測任務后,調用結果查詢接口獲取檢測結果。更多信息,請參見(語音異步檢測結果查詢)使用說明。
音頻文件要求:
音頻文件大小小于200 MB。
支持的音頻文件格式:MP3、WAV、AAC、WMA、OGG、M4A、AMR、AUDIO、M3U8。
支持以下包含音頻的視頻文件格式:AVI、FLV、MP4、MPG、ASF、WMV、MOV、RMVB、RM。
語音流要求:
語音流時長小于24小時。
支持的語音流協議:HTTP、RTMP、RTSP。
支持的語音流格式:M3U8、FLV。
QPS限制
本接口的單用戶QPS限制為50次/秒,并發審核路數限制為20路(即同一時間只能處理20個任務,如需要提升并發路數請咨詢您的商務經理)。超過限制,API調用會被限流,這可能會影響您的業務,請合理調用。
如果您對時效性要求不高,推薦您開啟近線檢測模式(offline),近線檢測模式會在您提交任務的24小時內開始檢測。
(異步檢測)請求參數
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
bizType | String | 否 | default | |
scenes | StringArray | 是 | antispam | 檢測場景,唯一取值:antispam。 |
live | Boolean | 否 | false | 是否為語音流(例如直播流)檢測。取值:
說明 如果需要檢測語音流,該值必須傳入true。 |
offline | Boolean | 否 | false | 是否為近線檢測模式。 取值:
說明 該參數僅適用于音頻文件檢測,不適用于語音流檢測。 |
callback | String | 否 | http://aliyundoc.com | 檢測結果回調通知您的URL,支持使用HTTP和HTTPS協議的地址。該字段為空時,您必須定時輪詢檢測結果。 callback接口必須支持POST方法、UTF-8編碼的傳輸數據,以及表單參數checksum和content。內容安全按照以下規則和格式設置checksum和content,調用您的callback接口返回檢測結果。
說明 您的服務端callback接口收到內容安全推送的結果后,如果返回的HTTP狀態碼為200,則表示接收成功,其他的HTTP狀態碼均視為接收失敗。接收失敗時,內容安全將最多重復推送16次檢測結果,直到接收成功。重復推送16次后仍未接收成功,則不再推送,建議您檢查callback接口的狀態。 |
seed | String | 否 | abc**** | 隨機字符串,該值用于回調通知請求中的簽名。 由英文字母、數字、下劃線(_)組成,不超過64個字符。由您自定義,用于在接收到內容安全的回調通知時校驗請求由阿里云內容安全服務發起。 說明 當使用callback時,該字段必須提供。 |
cryptType | String | 否 | SHA256 | 使用回調通知時(callback),設置對回調通知內容進行加密的算法。內容安全會將返回結果(由 用戶uid + seed + content 拼接的字符串)按照您設置的加密算法加密后,再發送到您的回調通知地址。取值:
|
tasks | JSONArray | 是 | 指定檢測對象,JSON數組中的每個元素是一個檢測任務結構體。最多支持100個元素,即每次提交100條內容進行檢測,支持100個元素的前提是需要將并發任務調整到100個以上。關于每個元素的具體結構描述,請參見task。 |
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
clientInfo | JSONObject | 否 | {"userId":"12023****","userNick":"Mike","userType":"others"} | 客戶端信息,請參見公共參數中的公共查詢參數。 服務器會把全局的clientInfo和此處獨立的clientInfo合并。 說明 獨立的clientInfo優先級更高。 |
dataId | String | 否 | 1a90c9d6-6a81-42db-bbe1-e36102f3**** | 檢測對象對應的數據ID。 由大小寫英文字母、數字、下劃線(_)、短劃線(-)、英文句號(.)組成,不超過128個字符,可以用于唯一標識您的業務數據。 |
liveId | String | 否 | liveId1**** | 語音直播流的ID。 該參數用于語音直播任務去重,防止重復檢測,如果傳遞該參數,會根據 |
url | String | 否 | http://aliyundoc.com/test.flv | 檢測對象的URL。
|
(異步檢測)返回數據
名稱 | 類型 | 示例值 | 描述 |
code | Integer | 200 | 錯誤碼,和HTTP狀態碼一致。 更多信息,請參見公共錯誤碼。 |
msg | String | OK | 請求消息的響應消息。 |
dataId | String | 1a90c9d6-6a81-42db-bbe1-e36102f3**** | 檢測對象對應的數據ID。 說明 如果在檢測請求參數中傳入了dataId,則此處返回對應的dataId。 |
taskId | String | voice3VayNFGf43J6S9mHYp1HYJ-12**** | 檢測任務的ID。 |
(異步檢測)示例
請求示例
http(s)://[Endpoint]/green/voice/asyncscan
&<公共請求參數>
{
"scenes": [
"antispam"
],
"live": true,
"tasks": [
{
"dataId": "1a90c9d6-6a81-42db-bbe1-e36102f3****",
"url": "http://aliyundoc.com/test.flv"
}
]
}
正常返回示例
{
"msg": "OK",
"code": 200,
"requestId": "33921869-CF8A-4E62-8C31-44F37341****",
"data": [
{
"code": 200,
"msg": "OK",
"dataId": "1a90c9d6-6a81-42db-bbe1-e36102f3****",
"taskId": "voice3VayNFGf43J6S9mHYp1HYJ-12****"
}
]
}
(語音異步檢測結果查詢)使用說明
業務接口:/green/voice/results,表示查詢語音異步檢測結果。
您可以調用該接口查詢語音異步檢測任務的結果。如果您在提交語音異步檢測任務時未設置callback地址,則需要調用該接口輪詢檢測結果。 關于如何構造HTTP請求,請參見請求結構;您也可以直接選用已構造好的HTTP請求,更多信息,請參見SDK概覽。
計費信息:
該接口不計費。
查詢超時:
對于音頻文件檢測任務,每次查詢或者通過callback方式都會返回已檢測完的語音檢測結果(僅返回已檢測完成的任務檢測結果)。建議您將查詢間隔設置為30秒,檢測結果保留4個小時,并及時查詢并保存結果。
對于語音流檢測任務,每次輪詢會返回最近10段檢測到的語音內容檢測結果,建議您將查詢間隔設置為30秒;如果通過callback的方式獲取語音流檢測結果,系統每次檢測出語音內容后都會發送回調通知。
QPS限制
本接口的單用戶QPS限制為50次/秒。超過限制,API調用會被限流,這可能會影響您的業務,請合理調用。
(結果查詢)請求參數
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
body | JSONArray | 是 | voice3VayNFGf43J6S9mHYp1HYJ-12**** | 要查詢的檢測任務的taskId列表。數組中的元素個數不超過100個。 您在提交檢測任務后,可以從返回數據中獲取檢測任務的taskId。 |
(結果查詢)返回數據
名稱 | 類型 | 示例值 | 描述 |
code | Integer | 200 | 錯誤碼,和HTTP狀態碼一致。
更多信息,請參見公共錯誤碼。 說明 只有返回280表示任務還在進行,需要繼續輪詢該任務的檢測結果。返回其他值均表示該語音檢測任務已結束。如果實際上該語音檢測沒有結束,而是因為網絡異常等原因異常結束,您可以重新提交語音異步檢測任務。 |
msg | String | OK | 請求參數的響應信息。 |
dataId | String | 1a90c9d6-6a81-42db-bbe1-e36102f3**** | 檢測對象對應的數據ID。 說明 如果在檢測請求參數中傳入了dataId,則此處返回對應的dataId。 |
taskId | String | voice3VayNFGf43J6S9mHYp1HYJ-12**** | 該檢測任務的ID。 |
url | String | https://aliyundoc.com | 檢測對象的URL。
|
new_url | String | https://example.com | 如果檢測內容為語音流,檢測結束后會轉存文件地址。簽名時間為30分鐘,需要及時轉存。 說明
|
results | JSONArray | 檢測成功(code=200)時,返回的檢測結果。該結果包含一個或多個元素,每個元素是個結構體,對應一個場景。關于每個元素的結構描述,請參見result。 |
名稱 | 類型 | 示例值 | 描述 |
scene | String | antispam | 檢測場景,和調用請求中的場景對應。唯一取值:antispam。 |
label | String | customized | 檢測結果的分類。取值:
|
suggestion | String | block | 建議您執行的后續操作。取值:
|
rate | Float | 99.91 | 置信度分數,取值范圍:0(表示置信度最低)~100(表示置信度最高)。 如果suggestion為pass,則置信度越高,表示內容正常的可能性越高;如果suggestion為review或block,則置信度越高,表示內容違規的可能性越高。 重要 建議您參考suggestion和label(或者部分接口返回的sublabel)結果用于內容違規判定。 |
details | JSONArray | 語音對應的文本詳情。每一句文本對應一個元素,包含一個或者多個元素。關于每個元素的結構描述,請參見detail。 說明 如果您開啟了語音證據轉存,且檢測對象為語音流,則返回轉存的語音分片的OSS URL鏈接。更多信息,請參見檢測結果。 |
名稱 | 類型 | 示例值 | 描述 |
startTime | Integer | 0 | 句子開始的時間,單位:秒。 |
endTime | Integer | 4065 | 句子結束的時間,單位:秒。 |
text | String | 惡心的 | 語音轉換成文本的結果。 |
label | String | customized | 檢測結果的分類。取值:
|
persons | JSONArray | [{"name":"敏感人名A"}] | 聲紋識別結果,如果命中了敏感人物的聲紋,則會返回該字段。 具體結構如下:
說明 默認不返回該字段。如果有需要,請聯系商務經理。 |
hintWords | JSONArray | "[{"context":"敏感詞"}]" | 語音中包含的文本命中的風險關鍵詞信息,用于提示您違規的原因,可能返回多個命中的關鍵詞。具體結構描述,請參見hintWords。 |
keyword | String | 惡心 | 如果命中了用戶自定義關鍵詞,返回命中的關鍵詞。 |
libName | String | test | 如果命中了用戶自定義關鍵詞,返回關鍵詞所在的詞庫。 |
url | String | https://aliyundoc.com | 如果檢測的內容是語音流,表示該段文本對應的語音流的臨時訪問地址。該地址有效時間為30分鐘,需要及時轉存。 說明 默認該字段不返回,如果需要,請聯系商務經理。 |
名稱 | 類型 | 示例值 | 描述 |
context | String | 惡心的 | 語音中文本命中的風險關鍵詞內容。 |
(結果查詢)示例
請求示例
http(s)://[Endpoint]/green/voice/results
&<公共請求參數>
[
"voice3VayNFGf43J6S9mHYp1HYJ-12****"
]
正常返回示例
{
"msg": "OK",
"code": 200,
"data": [
{
"code": 200,
"dataId": "1a90c9d6-6a81-42db-bbe1-e36102f3****",
"results": [
{
"rate": 99.91,
"suggestion": "block",
"details": [
{
"libName": "test",
"startTime": 0,
"endTime": 4065,
"label": "customized",
"text": "惡心的",
"keyword": "惡心"
},
{
"startTime": 4430,
"endTime": 10065,
"label": "review",
"persons": [
{
"name": "敏感人名A"
}
],
"text": "測試"
},
{
"libName": "語音測試",
"startTime": 11670,
"endTime": 14685,
"label": "customized",
"text": "超低折扣,大甩賣",
"keyword": "甩賣"
},
{
"startTime": 14685,
"endTime": 16065,
"label": "ad",
"text": "你好"
}
],
"label": "customized"
}
],
"taskId": "voice3VayNFGf43J6S9mHYp1HYJ-12****"
}
],
"requestId": "5A7A6198-6960-4DDC-B67E-58A6F1A4****"
}