全部產品
Search
文件中心

:STT標準介面

更新時間:Jun 18, 2025

即時工作流程支援您使用標準協議來接入您自研的語音轉文字(STT)模型。

自研STT標準介面

互動流程圖

實現流程

您需要實現一個公網可訪問並且支援WebSocket傳輸協議的語音轉文字(STT)模型服務,並且按照我們定義的輸入輸出規範,即可將您的自研的STT模型添加到工作流程中。

說明

如需接入自研語音轉文字模型,相關流程涉及加白操作,詳細資料煩請進群瞭解諮詢

  1. 首先您需要在編排管理主控台中的STT 語音轉文位元組點中,配置以下參數:

    image

    名稱

    類型

    必填

    描述

    樣本值

    目標模型WebSocket地址

    String

    自研模型介面地址

    wss://example.com/asr/ws

    ApiKey

    String

    API鑒權資訊

    AUJH-pf**************HBLKrI

    自訂參數

    String

    自訂參數列表

    key_a=value_a

  2. 配置完成後,阿里雲將會按照以下規則與您的服務完成建鏈:

    假設您的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"     
        }
    }
  3. 建鏈完成後,阿里雲將音頻PCM資料按以下規格傳入您的模型:

    支援格式

    資料格式

    聲道數

    採樣率

    介面協議

    PCM

    S16LE

    單聲道

    16K

    wss

  4. 在您的自研模型完成語音辨識後,您需要將資料按照以下規格轉為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。

  5. 結束傳輸,發送表示結束的binary message。

    ws.send(bytes("{\"stop_session\": true}", encoding='utf-8'))

Token計算方式

  1. session_id進行MD5。

  2. 用api_key對MD5後的session_id進行HmacSHA1加密。

  3. 加密後的資料base64編碼。

  4. 最後進行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