說話人識別功能可以將說話人所讀出的連續數字串語音,與語音庫中該用戶ID所對應的聲音特征進行1:1比對驗證,當聲音特征比對滿足閾值條件時則身份驗證成功。
使用須知
支持的輸入格式:PCM編碼文件、16 bit采樣位數、單聲道(mono)。
支持的音頻采樣率:16000 Hz。
服務地址
訪問類型 | 說明 | URL |
外網訪問 | 所有服務器均可使用外網訪問URL(SDK中默認設置了外網訪問URL,無需您設置)。 | wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1 |
阿里云上海ECS內網訪問 | 使用阿里云上海ECS(ECS地域為華東2(上海)),可使用內網訪問URL。 ECS的經典網絡不能訪問AnyTunnel,即不能在內網訪問語音服務;如果希望使用AnyTunnel,需要創建專有網絡在其內部訪問。 說明
| ws://nls-gateway-cn-shanghai-internal.aliyuncs.com:80/ws/v1 |
交互流程
1. 鑒權
客戶端在與服務端建立WebSocket連接時,使用Token進行鑒權。Token獲取請參見獲取Token。
2. 獲取數字串(ApplyDigit)
3. 聲音注冊(Enroll)
4. 聲音更新(Update)
5. 聲音認證(Verify)
6. 聲音刪除(Delete)
交互協議-請求
1. 獲取數字串請求
獲取聲音數字串,數字串有效時長為2分鐘。
參數名稱 | 參數類型 | 參數說明 |
action | String | 系統規定參數,取值:ApplyDigit。 |
speaker_id | String | 可自定義說話人ID,必填(長度不超過32位字節)。 |
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "StartTask",
"appkey": "17d4c634****" //獲取Appkey請前往控制臺:https://nls-portal.console.aliyun.com/applist
},
"payload": {
"action":"ApplyDigit",
"speaker_id": "test_speaker"
}
}
2. 聲音注冊請求
開始聲音注冊,注冊的音頻長度限制為30秒。
參數名稱 | 參數類型 | 參數說明 |
action | String | 系統規定參數,取值:Enroll。 |
format | String | 音頻編碼格式,目前支持PCM,必填。 |
sample_rate | Integer | 音頻采樣率,目前支持16000,單位:Hz,必填。 |
speaker_id | String | 說話人ID,必填(長度不超過32位字節)。 |
digit | String | 用戶獲取的數字串,必填。 |
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "StartTask",
"appkey": "17d4c634****" //獲取Appkey請前往控制臺:https://nls-portal.console.aliyun.com/applist
},
"payload": {
"action": "Enroll",
"format": "pcm",
"sample_rate": 16000,
"speaker_id": "test_speaker",
"digit":"04587236"
}
}
3. 聲音更新請求
開始聲音更新,更新的音頻長度限制為30秒。
參數名稱 | 參數類型 | 參數說明 |
action | String | 系統規定參數,取值:Update。 |
format | String | 音頻編碼格式,目前支持PCM,必填。 |
sample_rate | Integer | 音頻采樣率,目前支持16000,必填。 |
speaker_id | String | 說話人ID,必填(長度不超過32位字節)。 |
digit | String | 用戶獲取的數字串,必填。 |
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "StartTask",
"appkey": "17d4c634****" //獲取Appkey請前往控制臺:https://nls-portal.console.aliyun.com/applist
},
"payload": {
"action": "Update",
"format": "pcm",
"sample_rate": 16000,
"speaker_id": "test_speaker",
"digit":"04587236"
}
}
4. 聲音認證請求
開始聲音認證,認證的音頻長度限制為30秒。
參數名稱 | 參數類型 | 參數說明 |
action | String | 系統規定參數,取值:Verify。 |
format | String | 音頻編碼格式,目前支持PCM,必填。 |
sample_rate | Integer | 音頻采樣率,目前支持16000,必填。 |
speaker_id | String | 說話人ID,必填(長度不超過32位字節)。 |
digit | String | 用戶獲取的數字串,必填。 |
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "StartTask",
"appkey": "17d4c634****" //獲取Appkey請前往控制臺:https://nls-portal.console.aliyun.com/applist
},
"payload": {
"action": "Verify",
"format": "pcm",
"sample_rate": 16000,
"speaker_id": "test_speaker",
"digit":"04587236"
}
}
5. 刪除聲音請求
刪除聲音指令。
參數名稱 | 參數類型 | 參數說明 |
action | String | 系統規定參數,取值:Delete。 |
speaker_id | String | 說話人ID,必填(長度不超過32位字節)。 |
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "StartTask",
"appkey": "17d4c634****" //獲取Appkey請前往控制臺:https://nls-portal.console.aliyun.com/applist
},
"payload": {
"action": "Delete",
"speaker_id": "test_speaker"
}
}
交互協議-響應
1. 獲取數字串響應
獲取聲音登錄數字串信息。
參數名稱 | 參數類型 | 參數說明 |
user_id | String | 阿里云賬號ID。 |
appkey | String | 應用名。 獲取Appkey請前往控制臺。 |
speaker_id | String | 說話人ID。 |
digit | String | 8位數字串。 |
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "TaskResult",
"status": 20000000,
"status_text": "Gateway:SUCCESS:Success."
},
"payload": {
"user_id": "123456",
"appkey": "17d4c634****",
"speaker_id": "test_speaker",
"digit": "04587236"
}
}
2. 聲音注冊響應
聲音注冊結束。
參數名稱 | 參數類型 | 參數說明 |
user_id | String | 阿里云賬號ID。 |
appkey | String | 應用名。 獲取Appkey請前往控制臺。 |
speaker_id | String | 說話人ID。 |
digit | String | 注冊時的數字串信息。 |
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "TaskResult",
"status": 20000000,
"status_text": "Gateway:SUCCESS:Success."
},
"payload": {
"user_id": "123456",
"appkey": "17d4c634****",
"speaker_id": "test_speaker",
"digit": "04587236"
}
}
3. 聲音更新響應
聲音更新完成。
參數名稱 | 參數類型 | 參數說明 |
user_id | String | 阿里云賬號ID。 |
appkey | String | 應用名。 獲取Appkey請前往控制臺。 |
speaker_id | String | 說話人ID。 |
digit | String | 更新時的數字串信息。 |
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "TaskResult",
"status": 20000000,
"status_text": "Gateway:SUCCESS:Success."
},
"payload": {
"user_id": "123456",
"appkey": "17d4c634****",
"speaker_id": "test_speaker",
"digit": "04587236"
}
}
4. 聲音認證響應
聲音認證完成。
參數名稱 | 參數類型 | 參數說明 |
user_id | String | 阿里云賬號ID。 |
appkey | String | 應用名。 獲取Appkey請前往控制臺。 |
speaker_id | String | 說話人ID。 |
digit | String | 認證時的數字串信息。 |
score | String | 當前結果的置信度,取值范圍:[0.0,100.0]。值越大表示置信度越高。 |
decision | Integer | 聲音驗證判決結果。
|
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "TaskResult",
"status": 20000000,
"status_message": "Gateway:SUCCESS:Success."
},
"payload": {
"user_id": "123456",
"appkey": "17d4c634****",
"speaker_id": "test_speaker",
"digit": "04587236",
"score":"100.0",
"decision":1
}
}
5. 聲音刪除響應
聲音刪除完成。
參數名稱 | 參數類型 | 參數說明 |
speaker_id | String | 用戶ID。 |
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeakerVerification",
"name": "TaskResult",
"status": 20000000,
"status_message": "Gateway:SUCCESS:Success."
},
"payload": {
"user_id": "123456",
"appkey": "17d4c634****", //獲取Appkey請前往控制臺:https://nls-portal.console.aliyun.com/applist
"speaker_id": "test_speaker"
}
}
header對象參數說明
參數名稱 | 參數類型 | 參數說明 |
namespace | String | 消息所屬的命名空間,說話人識別為SpeakerVerification。 |
name | String | 消息名稱,TaskResult表示一個事件。 |
status | Integer | 狀態碼,表示請求是否成功,具體請參見服務狀態碼。 |
status_message | String | 狀態消息。 |
task_id | String | 任務全局唯一ID,請記錄該值,便于排查問題。 |
message_id | String | 本次消息的ID。 |
服務狀態碼
在服務的每一次響應中,都包含status字段,即服務狀態碼。通用錯誤碼、網關錯誤碼、配置錯誤碼各種取值含義如下。
通用錯誤碼
錯誤碼
原因
解決辦法
40000001
身份認證失敗
檢查使用的令牌是否正確,是否過期。
40000002
無效的消息
檢查發送的消息是否符合要求。
40000010
新用戶免費試用3個月已到期
繼續使用需要付費商用,請前往控制臺,在服務管理與開通頁面,單擊目標服務右側的升級為商用版,進行付費使用。
40000004
空閑超時
確認是否長時間(10秒)未發送數據到服務端。
40000005
請求數量過多
檢查是否超過了并發連接數或者每秒鐘請求數。如果超過并發數,建議從免費版升級到商用版,或者商用版擴容并發資源。
41010120
客戶端超時錯誤
客戶端連續10秒及以上未發送數據,導致客戶端超時錯誤。
40000000
默認的客戶端錯誤碼
檢查對應的錯誤消息。
50000000
默認的服務端錯誤
內部服務錯誤,需要客戶端進行重試。
50000001
內部調用錯誤
內部服務錯誤,需要客戶端進行重試。
52010001
內部調用錯誤
內部服務錯誤,需要客戶端進行重試。
網關錯誤碼
錯誤碼
原因
解決辦法
40010001
不支持的接口
請升級到最新的SDK。
40010002
不支持的指令
請升級到最新的SDK。
40010003
無效的指令
請升級到最新的SDK。
40010004
客戶端提前斷開連接
檢查是否在請求正常完成之前關閉了連接。
40010005
任務狀態錯誤
發送了當前任務狀態不能處理的指令。
配置錯誤碼
錯誤碼
原因
解決辦法
40020105
應用不存在
解析路由時找不到應用。
40020106
Appkey和Token不匹配
檢查應用Appkey是否正確,是否與令牌歸屬同一個賬號。
40020503
RAM用戶(子賬號)鑒權失敗
使用阿里云賬號對調用的RAM用戶(子賬號)授權POP API的訪問權限。