提出語音辨識要求
如果要求使用 IBM Watson® Speech to Text 服務進行語音辨識,您只需要提供要轉錄的音訊。 此服務的每一個介面都提供相同的基本轉錄功能:WebSocket 介面、同步 HTTP 介面及非同步 HTTP 介面。
接下來的範例展示了每個服務介面的基本轉錄請求,沒有可選參數:
- 範例提交一個簡短的 FLAC 檔案,名稱為 audio-file.flac.
- 這些範例使用預設語言模型
en-US_BroadbandModel。 如需詳細資訊,請參閱 使用預設模型。
瞭解語音辨識結果 說明服務對這些範例的回應。
使用需求
當您提出語音辨識要求時,請考量下列基本使用需求:
- 方法名稱會區分大小寫。
- HTTP 要求標頭不區分大小寫。
- HTTP 和 WebSocket 查詢參數會區分大小寫。
- JSON 欄位名稱會區分大小寫。
- 所有 JSON 回應內容都使用 UTF-8 字集。
- 文件中使用括號 (
{ }) 表示變量值。 提供變量值時請省略大括號。
另請考量下列服務特定需求:
- 您只需要指定輸入音訊。 所有其他參數都是選用參數。
- 如有必要,請務必指定
model參數,以指出適合您的語言和音訊的機型。 - 如果您指定無效的查詢參數或 JSON 欄位作為輸入的一部分,回應會包含
warnings欄位,說明無效的引數。 無論有任何警告,要求都會成功。
使用要求傳送音訊
您傳遞給服務的音訊必須使用服務的其中一個支援格式。 對於大部分音訊而言,此服務可以自動偵測格式。 對於部分音訊,您必須使用 Content-Type 或相等參數來指定格式。 如需相關資訊,請參閱音訊格式。 (為了清晰表達,下列範例會指定所有要求的音訊格式。)
使用 WebSocket 介面和同步 HTTP 介面,您可以使用單一要求來傳遞最多 100 MB 的音訊資料。 透過非同步 HTTP 介面,最多可以傳遞 1 GB 的音訊資料。 在任何要求中,您必須至少傳送 100 個位元組的音訊。
如果您要辨識大量音訊,可以手動將音訊分割成較小的片段。 然而,將音訊轉換為壓縮的失真格式通常會更有效率且方便。 壓縮可以讓單一要求中可傳送的音訊資料量達到最大。 尤其如果音訊是 WAV 或 FLAC 格式,將其轉換為失真格式將會有明顯的差異。
使用 WebSocket 介面
WebSocket 介面提供有效的實作,透過全雙工連線提供低延遲及高傳輸量。 所有要求和回應都透過相同的 WebSocket 連線傳送。
若要使用 WebSocket 介面,首先請使用 /v1/recognize 方法來建立與服務的連線。 您可以指定要用於透過連線傳送之要求的參數,例如語言模型和任何自訂模型。 然後,您將登錄事件接聽器,以處理來自服務的回應。 若要提出要求,您可以傳送包含音訊格式及任何其他參數的 JSON 文字訊息。 您以二進位訊息(二進位大型物件)傳遞音訊,然後傳送文字訊息以指出音訊結束。
下列範例提供 JavaScript 程式碼來建立連線,並傳送用於辨識要求的文字和二進位訊息。 基本範例不包含定義連線所有必要事件處理程式的程式碼。
var access_token = {access_token};
var wsURI = '{ws_url}/v1/recognize'
+ '?access_token=' + access_token;
var websocket = new WebSocket(wsURI);
websocket.onopen = function(evt) { onOpen(evt) };
function onOpen(evt) {
var message = {
action: 'start',
content-type: 'audio/flac'
};
websocket.send(JSON.stringify(message));
websocket.send(blob);
websocket.send(JSON.stringify({action: 'stop'}));
}
使用同步 HTTP 介面
同步 HTTP 介面提供最簡單的方法來提出辨識要求。 您可以使用 POST /v1/recognize 方法對服務提出要求。 您使用單一要求來傳遞音訊及所有參數。 下列 curl 範例顯示基本 HTTP 辨識要求:
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file.flac \
"{url}/v1/recognize"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file.flac \
"{url}/v1/recognize"
使用非同步 HTTP 介面
非同步 HTTP 介面提供非區塊處理介面來轉錄音訊。 無論是否先向服務登錄回呼 URL,您都可以使用此介面。 使用回呼 URL,該服務會傳回含有工作狀態和辨識結果的回呼通知。 該介面會根據使用者指定的密碼來使用 HMAC-SHA1 簽章,為其通知提供鑑別和資料完整性。 若沒有回呼 URL,您必須輪詢該服務,才能取得工作狀態和結果。 不論哪一種方法,您都可以使用
POST /v1/recognitions 方法來提出辨識要求。
下列 curl 範例顯示簡易非同步 HTTP 辨識要求。 此要求不包括回呼 URL,因此您必須輪詢服務,以取得工作狀態和產生的文字記錄。
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file.flac \
"{url}/v1/recognitions"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file.flac \
"{url}/v1/recognitions"