全部產品
Search
文件中心

Intelligent Speech Interaction:介面說明

更新時間:Aug 22, 2025

對長時間的語音資料流進行識別,適用於會議演講、ApsaraVideo for Live等長時間不間斷識別的情境。

功能簡介

NUI SDK提供更小的工具包和更完善的狀態管理。為滿足不同使用者需求,NUI SDK既能提供全鏈路的語音能力,同時可做原子能力SDK進行使用,並保持介面的統一。

使用須知

  • 輸入格式:PCM編碼、16bit採樣位元、單聲道(mono)。

  • 音頻採樣率:8000Hz/16000Hz。

  • 設定返回結果:是否返回中間識別結果、在後處理中添加標點、將中文數字轉為阿拉伯數字輸出。

  • 設定多語言識別:在管控台編輯專案中進行模型選擇,詳情請參見模型選擇

服務地址

訪問類型

說明

URL

外網訪問

所有伺服器均可使用外網訪問URL(SDK中預設設定了外網訪問URL)。

wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1

上海ECS內網訪問

使用阿里雲上海ECS(ECS地區為華東2(上海)),可使用內網訪問URL。 ECS的傳統網路不能訪問AnyTunnel,即不能在內網訪問Voice Messaging Service;如果希望使用AnyTunnel,需要建立專用網路在其內部訪問。

說明

  • 使用內網訪問方式,將不產生ECS執行個體的公網流量費用。

ws://nls-gateway.cn-shanghai-internal.aliyuncs.com:80/ws/v1

互動流程

即時語音辨識互動流程

說明

所有服務端的響應都會在返回資訊的header包含表示本次識別任務的task_id參數,請記錄該值,如果出現錯誤,請將task_id和錯誤資訊提交到工單。

1. 鑒權和初始化

用戶端在與服務端建立WebSocket串連時,使用Token進行鑒權。關於Token擷取請參見擷取Token

初始化參數如下。

參數

類型

是否必選

說明

workspace

String

工作目錄路徑,SDK從該路徑讀取設定檔。

app_key

String

管控台建立專案的appkey。

token

String

請確保該Token可以使用並在有效期間內。

說明

Token可以在初始化時設定,也可通過參數設定進行更新。

device_id

String

裝置標識,唯一表示一台裝置(如Mac地址/SN/UniquePsuedoID)。

debug_path

String

debug目錄。當初始化SDK時的save_log參數取值為true時,該目錄用於儲存中間音頻檔案。

save_wav

String

當初始化SDK時的save_log參數取值為true時,該參數生效。表示是否儲存音頻debug,該資料儲存在debug目錄中,需要確保debug_path有效可寫。

2. 開始識別

用戶端發起即時語音辨識請求前需要進行參數設定,各參數由SDK中setParams介面以JSON格式設定,該參數設定一次即可。各參數含義如下。

參數

類型

是否必選

說明

appkey

String

管控台建立的專案appkey,一般在初始化時設定。

token

String

如果需要更新,則進行設定。

service_type

Int

需要請求的Voice Messaging Service類型,即時語音辨識為“4”。

direct_ip

String

支援用戶端自行DNS解析後傳入IP進行訪問。

nls_config

JsonObject

訪問Voice Messaging Service相關的參數配置,詳情請參見下表。

參數nls_config配置如下。

參數

類型

是否必選

說明

sr_format

String

音頻編碼格式,支援OPUS編碼和PCM原始音頻。預設值:OPUS。

說明

如果使用8000Hz採樣率,則只支援PCM格式。

sample_rate

Integer

音頻採樣率,預設值:16000Hz。根據音頻採樣率在管控台對應專案中配置支援該採樣率及情境的模型。

enable_intermediate_result

Boolean

是否返回中間識別結果,預設值:False。

enable_punctuation_prediction

Boolean

是否在後處理中添加標點,預設值:False。

enable_inverse_text_normalization

Boolean

是否在後處理中執行ITN。設定為true時,中文數字將轉為阿拉伯數字輸出,預設值:False。

說明

不會對詞資訊進行ITN轉換。

customization_id

String

自學習模型ID。

vocabulary_id

String

定製泛熱詞ID。

max_sentence_silence

Integer

語音斷句檢測閾值,靜音時間長度超過該閾值被認為斷句。取值範圍:200ms~2000ms,預設值:800ms。

enable_words

Boolean

是否開啟返回詞資訊。預設值:False。

enable_ignore_sentence_timeout

Boolean

是否忽略即時識別中的單句識別逾時。預設值:False。

disfluency

Boolean

是否對識別文本進行順滑(去除語氣詞、重複說等)。預設值:False。

vad_model

String

設定服務端的vad模型id,預設無需設定。

speech_noise_threshold

float

噪音參數閾值,取值範圍:-1~+1。

  • 取值越接近-1,判定為語音的機率越大,亦即有可能更多雜訊被當作語音被誤識別。

  • 取值越接近+1,判定為噪音的越多,亦即有可能更多語音被當作噪音被拒絕掉。

說明

該參數屬進階參數,調整需謹慎並進行重點測試。

3. 發送資料

用戶端迴圈發送語音資料,持續接收識別結果:

  • EVENT_SENTENCE_START事件表示服務端檢測到了一句話的開始。即時語音辨識服務的智能斷句功能會判斷出一句話的開始與結束,如:

    {
        "header": {
            "namespace": "SpeechTranscriber",
            "name": "SentenceBegin",
            "status": 20000000,
            "message_id": "a426f3d4618447519c9d85d1a0d15bf6",
            "task_id": "5ec521b5aa104e3abccf3d3618222547",
            "status_text": "Gateway:SUCCESS:Success."
        },
        "payload": {
            "index": 1,
            "time": 0
        }
    }

    header對象參數說明:

    參數

    類型

    說明

    namespace

    String

    訊息所屬的命名空間。

    name

    String

    訊息名稱。SentenceBegin表示一個句子的開始。

    status

    Integer

    狀態代碼。表示請求是否成功,見錯誤碼

    message_id

    String

    本次訊息的ID,由SDK自動產生。

    task_id

    String

    任務全域唯一ID,請記錄該值,便於排查問題。

    status_text

    String

    狀態訊息。

    payload對象參數說明:

    參數

    類型

    說明

    index

    Integer

    句子編號,從1開始遞增。

    time

    Integer

    當前已處理的音頻時間長度,單位:毫秒。

  • 若enable_intermediate_result設定為true,SDK會持續多次通過onNuiEventCallback回調上報EVENT_ASR_PARTIAL_RESULT事件,即中間識別結果,如:

    {
        "header": {
            "namespace": "SpeechTranscriber",
            "name": "TranscriptionResultChanged",
            "status": 20000000,
            "message_id": "dc21193fada84380a3b6137875ab9178",
            "task_id": "5ec521b5aa104e3abccf3d3618222547",
            "status_text": "Gateway:SUCCESS:Success."
        },
        "payload": {
            "index": 1,
            "time": 1835,
            "result": "北京的天",
            "confidence": 1.0,
            "words": [{
                "text": "北京",
                "startTime": 630,
                "endTime": 930
            }, {
                "text": "的",
                "startTime": 930,
                "endTime": 1110
            }, {
                "text": "天",
                "startTime": 1110,
                "endTime": 1140
            }]
        }
    }
    說明

    header對象中name參數取值為TranscriptionResultChanged表示句子的中間識別結果。其餘參數說明參見上述表格。

    payload對象參數說明:

    參數

    類型

    說明

    index

    Integer

    句子編號,從1開始遞增。

    time

    Integer

    當前已處理的音頻時間長度,單位:毫秒。

    result

    String

    當前句子的識別結果。

    words

    List< Word >

    當前句子的詞資訊,需要將enable_words設定為true。

    confidence

    Double

    當前句子識別結果的信賴度,取值範圍0.0~1.0,值越大表示信賴度越高。

  • EVENT_SENTENCE_END事件表示服務端檢測到了一句話的結束,並返回該句話的識別結果,如:

    {
        "header": {
            "namespace": "SpeechTranscriber",
            "name": "SentenceEnd",
            "status": 20000000,
            "message_id": "c3a9ae4b231649d5ae05d4af36fd1c8a",
            "task_id": "5ec521b5aa104e3abccf3d3618222547",
            "status_text": "Gateway:SUCCESS:Success."
        },
        "payload": {
            "index": 1,
            "time": 1820,
            "begin_time": 0,
            "result": "北京的天氣。",
            "confidence": 1.0,
            "words": [{
                "text": "北京",
                "startTime": 630,
                "endTime": 930
            }, {
                "text": "的",
                "startTime": 930,
                "endTime": 1110
            }, {
                "text": "天氣",
                "startTime": 1110,
                "endTime": 1380
            }]
        }
    }
    說明

    header對象中name參數取值為SentenceEnd表示句子識別結束。其餘參數說明參見上述表格。

    payload對象參數說明:

    參數

    類型

    說明

    index

    Integer

    句子編號,從1開始遞增。

    time

    Integer

    當前已處理的音頻時間長度,單位:毫秒。

    begin_time

    Integer

    當前句子對應的SentenceBegin事件的時間,單位:毫秒。

    result

    String

    當前句子的識別結果。

    words

    List< Word >

    當前句子的詞資訊,需要將enable_words設定為true。

    confidence

    Double

    當前句子識別結果的信賴度,取值範圍0.0~1.0,值越大表示信賴度越高。

    其中,Word對象:

    參數

    類型

    說明

    text

    String

    文本。

    startTime

    Integer

    詞開始時間,單位:毫秒。

    endTime

    Integer

    詞結束時間,單位:毫秒。

4. 結束識別

用戶端通知服務端語音資料發送完畢,服務端識別結束後通知用戶端識別完畢。

錯誤碼

即時語音辨識的錯誤碼資訊,請參見錯誤碼