日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

WebSocket協議說明

如果您不希望引入阿里云智能語音交互產品SDK,或者目前提供的Java、C或C++的SDK不能滿足您的要求,可以基于本文描述自行開發代碼訪問阿里語音服務。

功能介紹

阿里云智能語音交互產品通過WebSocket協議對外提供實時語音流語音轉寫功能,支持長語音。其中指令、事件皆為WebSocket協議Text類型的DataFrame,音頻流需要以Binary Frame的形式上傳至服務端,調用時序需要符合協議要求的交互流程。發送語音數據使用Websocket的二進制幀BinaryFrame,具體可參見Data Frames。

  • 支持的輸入格式:單聲道(mono)、16 bit采樣位數,包括PCM、PCM編碼的WAV、OGG封裝的OPUS、OGG封裝的SPEEX、AMR、MP3、AAC。

  • 支持的音頻采樣率:8000Hz/16000Hz。

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

  • 支持設置多語言識別:在控制臺編輯項目中進行模型選擇,詳情請參見管理項目。

鑒權

服務端通過臨時Token進行鑒權,請求時需要在URL中攜帶Token參數,Token獲取方式請參見獲取Token概述。獲取Token之后通過如下方式訪問語音服務端。

訪問類型

說明

URL

外網訪問

所有服務器均可使用外網訪問URL。

wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1?token=<your token>

上海ECS內網訪問

使用阿里云上海ECS(即ECS地域為華東2(上海)),可使用內網訪問URL。ECS的經典網絡不能訪問AnyTunnel,即不能在內網訪問語音服務;如果希望使用AnyTunnel,需要創建專有網絡在其內部訪問。

說明

  • 使用內網訪問方式,將不產生ECS實例的公網流量費用。

  • 關于ECS的網絡類型請參見網絡類型。

ws://nls-gateway-cn-shanghai-internal.aliyuncs.com:80/ws/v1?token=<your token>

交互流程

指令及音頻流需要嚴格按照下圖所示順序發送,否則會導致和服務端交互失敗。

image

指令

請求指令用于控制語音識別任務的起止,標識任務邊界,以JSON格式的Text Frame方式發送服務端請求,需要在Header中設置請求的基礎信息。指令由Header和Payload兩部分組成,其中Header部分為統一格式,不同指令的Payload部分格式各不相同。

1、Header格式說明

Header格式如下:

參數

類型

是否必選

說明

appkey

String

管控臺創建的項目Appkey。

message_id

String

當次消息請求ID,隨機生成32位唯一ID。

task_id

String

整個實時語音識別的會話ID,整個請求中需要保持一致,32位唯一ID。

namespace

String

訪問的產品名稱,固定為“SpeechTranscriber”。

name

String

指令名稱,包含StartTranscription和StopTranscription指令。具體請參見StartTranscription指令StopTranscription指令。  

2、StartTranscription指令

Payload對象參數說明:

參數

類型

是否必選

說明

format

String

音頻格式,包括PCM、WAV、OPUS、SPEEX、AMR、MP3、AAC。

sample_rate

Integer

音頻采樣率,默認是16000Hz,根據音頻采樣率在管控臺對應項目中配置支持該采樣率及場景的模型。

enable_intermediate_result

Boolean

是否返回中間識別結果,默認是false。

enable_punctuation_prediction

Boolean

是否在后處理中添加標點,默認是false。

enable_inverse_text_normalization

Boolean

ITN(逆文本inverse text normalization)中文數字轉換阿拉伯數字。設置為True時,中文數字將轉為阿拉伯數字輸出,默認值:False。

customization_id

String

自學習模型ID。

vocabulary_id

String

定制泛熱詞ID。

max_sentence_silence

Integer

語音斷句檢測閾值,靜音時長超過該閾值會被認為斷句,參數范圍200ms~2000ms,默認值800ms。

enable_words

Boolean

是否開啟返回詞信息,默認是false。

disfluency

Boolean

過濾語氣詞,即聲音順滑,默認值false(關閉),開啟時需要設置version為4.0。

speech_noise_threshold

Float

噪音參數閾值,參數范圍:[-1,1]。取值說明如下:

  • 取值越趨于-1,噪音被判定為語音的概率越大。

  • 取值越趨于+1,語音被判定為噪音的概率越大。

重要

該參數屬高級參數,調整需慎重并重點測試。

enable_semantic_sentence_detection

Boolean

是否開啟語義斷句,默認是false。

示例代碼如下:

{
    "header": {
        "message_id": "05450bf69c53413f8d88aed1ee60****",
        "task_id": "640bc797bb684bd6960185651307****",
        "namespace": "SpeechTranscriber",
        "name": "StartTranscription",
        "appkey": "17d4c634****"
    },
    "payload": {
        "format": "opus",
        "sample_rate": 16000,
        "enable_intermediate_result": true,
        "enable_punctuation_prediction": true,
        "enable_inverse_text_normalization": true
    }
}

3、StopTranscription指令

StopTranscription指令要求服務端停止語音轉寫,Payload為空。示例代碼如下:

{
    "header": {
        "message_id": "05450bf69c53413f8d88aed1ee60****",
        "task_id": "640bc797bb684bd6960185651307****",
        "namespace": "SpeechTranscriber",
        "name": "StopTranscription",
        "appkey": "17d4c634****"
    }
}

事件

事件指的是服務端返回給客戶端的處理進度事件,代表不同的處理階段,客戶端可獲取不同處理階段的事件實現不同的業務邏輯。以JSON格式返回,事件由Header和Payload兩部分組成,其中Header部分為統一格式,不同事件的Payload部分格式可能不同。

1、TranscriptionStarted事件

TranscriptionStarted事件表示服務端已經準備好了進行識別,客戶端可以發送音頻數據了。

參數

類型

說明

session_id

String

客戶端請求時傳入session_id的話則原樣返回,否則由服務端自動生成32位唯一ID。

示例格式如下:

{
    "header": {
        "message_id": "05450bf69c53413f8d88aed1ee60****",
        "task_id": "640bc797bb684bd6960185651307****",
        "namespace": "SpeechTranscriber",
        "name": "TranscriptionStarted",
        "status": 20000000,
        "status_message": "GATEWAY|SUCCESS|Success."
    },
    "payload": {
        "session_id": "1231231dfdf****"
    }
}

2、SentenceBegin事件

SentenceBegin事件表示服務端檢測到了一句話的開始。

參數

類型

說明

index

Integer

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

time

Integer

句子開始時間相對整個音頻流的開始時間,單位是毫秒。

示例格式如下:

{
    "header": {
        "message_id": "05450bf69c53413f8d88aed1ee60****",
        "task_id": "640bc797bb684bd6960185651307****",
        "namespace": "SpeechTranscriber",
        "name": "SentenceBegin",
        "status": 20000000,
        "status_message": "GATEWAY|SUCCESS|Success."
    },
    "payload": {
        "index": 1,
        "time": 320
    }
}

3、TranscriptionResultChanged事件

TranscriptionResultChanged事件表示識別結果發生了變化。

參數

類型

說明

index

Integer

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

time

Integer

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

result

String

當前的識別結果。

words

Word

詞信息。

status

Integer

狀態碼。

Word 結構:

參數

類型

說明

text

String

文本。

startTime

Integer

詞開始時間。

endTime

Integer

詞結束時間。

示例格式如下:

{
    "header":{
        "message_id":"05450bf69c53413f8d88aed1ee60****",
        "task_id":"640bc797bb684bd6960185651307****",
        "namespace":"SpeechTranscriber",
        "name":"TranscriptionResultChanged",
        "status":20000000,
        "status_message":"GATEWAY|SUCCESS|Success."
    },
    "payload":{
        "index":1,
        "time":1800,
        "result":"今年雙十一",
        "words":[
            {
                "text":"今年",
                "startTime":1,
                "endTime":2
            },
            {
              "text":"雙十一",
              "startTime":2,
              "endTime":3
            }
        ]
    }
}

4、SentenceEnd事件

SentenceEnd事件表示服務端檢測到了一句話的結束。

參數

類型

說明

index

Integer

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

time

Integer

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

begin_time

Integer

這句話對應的SentenceBegin事件的時間,單位是毫秒。

result

String

當前的識別結果。

confidence

Double

結果置信度,取值范圍[0.0,1.0],值越大表示置信度越高。

words

Word

詞信息。

status

Integer

狀態碼,默認值 20000000。

stash_result

StashResult

暫存結果,開啟語意斷句后會返回下一句未斷句中間結果。

StashResult結構:

參數

類型

說明

sentenceId

Integer

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

beginTime

Integer

句子開始時間。

text

String

轉寫內容。

currentTime

Integer

當前處理時間。

示例格式如下:

{
    "header": {
        "message_id": "05450bf69c53413f8d88aed1ee60****",
        "task_id": "640bc797bb684bd6960185651307****",
        "namespace": "SpeechTranscriber",
        "name": "SentenceEnd",
        "status": 20000000,
        "status_message": "GATEWAY|SUCCESS|Success."
    },
    "payload": {
        "index": 1,
        "time": 3260,
        "begin_time": 1800,
        "result": "今年雙十一我要買電視"
    }
}

5、TranscriptionCompleted事件

TranscriptionCompleted事件表示服務端已停止了語音轉寫。示例格式如下:

{
    "header": {
        "message_id": "05450bf69c53413f8d88aed1ee60****",
        "task_id": "640bc797bb684bd6960185651307****",
        "namespace": "SpeechTranscriber",
        "name": "TranscriptionCompleted",
        "status": 20000000,
        "status_message": "GATEWAY|SUCCESS|Success."
    }
}

常見問題

實時語音識別接口WebSocket,發送語音體的指令是什么?一次可以發送多少Bytes?

指令由Header和Payload兩部分組成,其中Header為統一格式,不同指令的Payload格式不同。

服務端可支持一次發送3200 Byte或1600 Byte,單次發送數據時,需確保音頻在發送的時候沒有損壞。

使用實時語音識別接口WebSocket,設置了32位隨機message_id,報錯提示Status:40000002 Gateway:MESSAGE_INVALID:Invalid message id ''!。

WebSocket相當于您自己構建的一個請求,message_id就是隨機生成的32位唯一ID。

您需要將message_id改成32個hex字符,檢查發送的消息是否符合要求。

用WebSocket協議接入實時語音識別,已成功獲取Token,在發送協議請求后WebSocket返回close,代碼為40000002,是什么原因?

如果您要自行構建接口請求,建議您運行SDK抓包分析報文查看如何請求。一般可能是message_idtask_id問題,建議您按照格式要求改為32個hex字符。

使用WebSocket協議連接阿里云的地址,發送二進制語音數據時,建立的連接被服務器主動斷開且沒有錯誤提示,是什么原因?

實時語音識別WebSocket協議出現斷開, 建議您:

  • 檢查Token是否生成正確。

  • 檢查客戶端是否正常發送音頻流。

沒有錯誤信息提示,建議您設置status狀態碼,默認值20000000。

使用實時語音識別WebSocket,在基于Web的JavaScript WebSocket連接成功后,如何獲得message_id和task_id?

message_idtask_id是由您在調用側自行生成的,可以隨機生成32位唯一ID。在一個連接的過程中,task_id可以保持唯一不變,用以標識該連接的唯一性,message_id建議在每次發送的消息中重新隨機生成,用以標識該消息的唯一性。

使用WebSocket調用實時語音識別時,WebSocket經常自動終止服務,不能實現實時語音識別,需要手動發送PCM或WAV音頻文件,是什么原因?

以上情況表示系統已經接收到您傳輸的音頻,在符合協議以及傳參的情況下,WSS或HTTP協議都能實現實時語音識別。如何實現不間斷發送,需要您自行處理WSS,智能語音交互文檔提供了Java后端代碼示例,即以讀取本地文件的形式模擬實時獲取語音流并發送,詳情請參見示例代碼