文件
即時語音轉文字
Service: wss://asr.api.yating.tw/ws/v1/
透過串流語音轉文字服務,您可傳送音訊片段到雲端服務,並獲得精確的語音識別結果。您也可以使用客製化語言模型來強化辨識結果。
如果你偏好直接串接 websocket,你須先取得一次性密碼(one-time token)才能透過 WebSocket 連接到語音轉文字。
簡單來說,共有兩步驟:
使用您的 API 密鑰獲取一次性密碼。 有關詳細信息,請參閱 「取得一次性密碼」。
使用一次性密碼建立 WebSocket 連接。
取得一次性密碼
這密碼只能使用一次且有效時間為 60 秒,你需要在這時間內建立起 Websocket 連線。另外,你需要輸入您想要辨識的語言到 pipeline 這個欄位中。
Request
URL: https://asr.api.yating.tw/v1/token
Method: POST
Header
Name
| Type
| Info
|
*key | String
| |
*Content-Type | String
|
|
Body
Name
| Type
| Info
|
*pipeline | String
| 把語言代碼放在這裡。 請參閱語言代碼。
|
options
|
|
|
Response
Name
| Type
| Info
|
auth_token
| string
|
Example
|
status
| description
|
Success
| Http Status Code:
201
|
Failed
| Http Status Code:
401 (key does not exist or the key is not available for the service)
5xx (please contact our CS team to solve this issue)
|
建立WebSocket連接
URL: wss://asr.api.yating.tw/ws/v1/
Query: token=[API Token]
Example: wss://asr.api.yating.tw/ws/v1/?token=請放入有效Token
傳送音頻數據
分塊傳輸編碼是一種流式(streaming)數據傳輸機制。 數據流被分成不重疊的 「分塊傳輸編碼中的塊」。 每一塊彼此都可以獨立地發送和接收。 以二進制幀的格式發送一個塊。 塊大小應為 2000 字節,大約 1/16 秒。
使用二進制幀發送音頻數據
音頻數據格式:16kHz, 單聲道, 每個樣本 16 bits, PCM 格式
每秒採樣率:16000 x 1 x 16/8 = 32000 字節 ~= 32 KB
每個塊大小:2000 字節,1/16 秒
客戶端到服務器 WebSocket 傳輸示例:
[PCM 16bit binary audio chunk]
[PCM 16bit binary audio chunk]
...
[EOF: empty audio chunk] # (optional) client could send a chunk with 0 length to end a sentence.
接收及回覆
語音轉文字服務會檢測人類話語聲音,偵測到就會分成多個片段並進行辨識。 <state> 會記錄識別的進程,下面的列表顯示了所有可能的值:
Key
| Explain
|
status
| ok: 代表 ws 建立成功,可以開始傳送聲音資料, 如果提早傳音檔,會造成 ws 斷線
|
error: 代表asr 的 pipeline 中有出現錯誤,ws 會在三秒後斷線,detail: 則會記錄錯誤原因
| |
asr_state
| first_chunk_received: 收到第一個 chunk 時回傳,不論那個 chunk 內容是什麼
utterance_begin: 偵測到語音開始時回傳
utterance_end: 偵測到句子結束時回傳
|
asr_sentence
| 從句子開始到目前累積的辨識結果,asr_final不為Ture時表示還有可能會改變
|
asr_confidence
| 句子結束辨識時的信心程度
|
asr_final
| 若 True 則代表偵測到句子結束,此時 asr_sentence 的結果就是最終結果
|
asr_begin_time
| 相對於連線建立時間,句子開始時間
|
asr_end_time
| 相對於連線建立時間,句子結束時間
|
asr_word_time_stamp
| 會記錄每一個 word 的起始與結束時間
|
asr_eof
| 目前已經ASR buffer 沒有任何Frame 待處理則回傳
|
範例:
時間
| 狀態
| 從雲端送到客戶端的資訊
|
t
|
| |
T+1
| 收到第一塊音訊後
|
|
T+2
| 偵測到人聲,開始進行辨識
|
|
T+4
| 在句字完整辨識完成前,文字內容可能會變動
|
|
T+5
|
| |
T+6
|
| |
T+7
|
| |
…
| …
| …
|
T+N
| when final == true, the sentence is fixed and will not change
|
|
T+N+1
|
|
語言模型代碼
語言代碼
| 說明
| 語言
|
asr-zh-en-std
| 講者雖然國語與英與混雜,但主要語言還是以國語為主。
| 國語與英文
|
asr-zh-tw-std
| 講者雖然國語與台語混雜,但主要語言還是以國語為主。
| 國語與台語
|
asr-en-std
| 英語
| 英語
|
asr-jp-std
| 日本語
| 日本語
|