即時工作流程支援您使用標準協議來接入您自研的語音轉文字(STT)模型。
自研STT標準介面
互動流程圖
實現流程
您需要實現一個公網可訪問並且支援WebSocket傳輸協議的語音轉文字(STT)模型服務,並且按照我們定義的輸入輸出規範,即可將您的自研的STT模型添加到工作流程中。
如需接入自研語音轉文字模型,相關流程涉及加白操作,詳細資料煩請進群瞭解諮詢。
首先您需要在編排管理主控台中的STT 語音轉文位元組點中,配置以下參數:

名稱
類型
必填
描述
樣本值
目標模型WebSocket地址
String
是
自研模型介面地址
wss://example.com/asr/ws
ApiKey
String
是
API鑒權資訊
AUJH-pf**************HBLKrI
自訂參數
String
否
自訂參數列表
key_a=value_a
配置完成後,阿里雲將會按照以下規則與您的服務完成建鏈:
假設您的wss地址為wss://example.com/asr/ws,我們會以
wss://example.com/asr/ws?{請求參數}發送請求,請求參數如下:參數名
參數類型
是否必選
說明
session_id
string
是
本次語音辨識連結標識。
token
string
是
將session_id經過一定運算後得到的簽名字串,詳細內容,請參見Token計算方式。
language
string
否
語種類型,預設中英文。
請求樣本如下:
未配置自訂參數
wss://example.com/asr/ws?session_id=992204bfdca241e78dca2872625cf99f&token=muebPMT%2BnLe*********UJY4%3D&language=cn配置自訂參數
如果您在控制台上設定了自訂參數:key_a=value_a 和 key_b=value_b,則最終的URL為:
wss://example.com/asr/ws?session_id=992204bfdca241e78dca2872625cf99f&token=muebPMT%2BnLeTr**********4%3D&language=cn&key_a=value_a&key_b=value_b您也可以在調用啟動執行個體的介面時,設定自訂參數,這將覆蓋您在工作流程中的配置。您需要在啟動執行個體的
AIAgentConfig.AsrConfig.CustomParams來指定STT節點自訂參數,這些參數會放在URL參數中。{ "AsrConfig": { "CustomParams": "key1=value1&key2=value2&key3=value3" } }建鏈完成後,阿里雲將音頻PCM資料按以下規格傳入您的模型:
支援格式
資料格式
聲道數
採樣率
介面協議
PCM
S16LE
單聲道
16K
wss
在您的自研模型完成語音辨識後,您需要將資料按照以下規格轉為JSON文本的形式返回阿里雲:
參數名
參數類型
是否必選
說明
session_id
String
是
本次asr連結標識,與建鏈請求保持一致.
name
String
是
訊息名稱:
start:websocket建鏈成功後的通知訊息
result:語音辨識結果訊息
error:伺服器異常的通知訊息
code
Int
是
返回碼:
0: 成功
其他:失敗
message
String
是
返回資訊,失敗時在此欄位描述失敗原因
result_type
Int
否
當name為result時必選,您需要傳入該值:
0: 臨時結果
1: 最終結果
payload
Object
否
name為result時必選,payload中的欄位都需要填寫為實際值。
result
String
是
當前識別到的所有結果。
begin_time
Int
是
識別結果的語音起始時刻,相對於建鏈後收到首個音頻包時刻的位移量,單位ms。
end_time
Int
是
識別結果的語音結束時刻,相對於建鏈後收到首個音頻包時刻的位移量,單位ms。
結束傳輸,發送表示結束的binary message。
ws.send(bytes("{\"stop_session\": true}", encoding='utf-8'))
Token計算方式
對
session_id進行MD5。用api_key對MD5後的
session_id進行HmacSHA1加密。加密後的資料base64編碼。
最後進行url編碼。
程式碼範例
import hashlib
import hmac
import base64
from urllib.parse import quote
def calc_token():
api_key = '12345678'
session_id = '992204bfdca241e78dca2872625cf99f'
sessionId = session_id.encode('utf-8')
md5 = hashlib.md5()
md5.update(sessionId)
baseString = md5.hexdigest()
baseString = bytes(baseString, encoding='utf-8')
# step 1: 對session_id進行MD5,參考結果 f481faf07ec18481bc275a3ef3d61ea0
apiKey = api_key.encode('utf-8')
token = hmac.new(apiKey, baseString, hashlib.sha1).digest()
# step 2: 用api_key對MD5後的session_id進行HmacSHA1加密,參考結果 b'\x9a\xe7\x9b<\xc4\xfe\x9c\xb7\x93\xae\xbaY\xc3\x91|!\x8b\x14%\x8e'
token = base64.b64encode(token)
# step 3: 加密後的資料base64編碼,參考結果 muebPMT+nLeTrrpZw5F8IYsUJY4=
token = str(token, 'utf-8')
token = quote(token)
# step 4: 進行url編碼,參考結果 muebPMT%2BnLeTrrpZw5F8IYsUJY4%3D
return token