提供資料給 Speech-to-Text API 的最佳做法

本文提供建議,說明如何將語音資料提供給 Speech-to-Text API。這些規範的目的是提高服務的效率和準確性,並實現合理的回應時間。當傳送至服務的資料在本文件中說明的參數範圍內時,使用 Speech-to-Text API 可達到最佳效果。

如果您已按上述指南操作,但未從 API 取得預期結果,請參閱疑難排解和支援服務

透過以下方式可獲得最佳結果... 如果可以,請避免...
以 16,000 Hz 或更高的取樣率擷取音訊。 較低的取樣率可能會降低準確性。但是,請避免重新取樣。例如,在電話中,原生取樣率通常為 8000 Hz,這是應傳送至服務的取樣率。
使用無損轉碼器錄製及傳送音訊。建議使用 FLACLINEAR16 錄製或傳輸期間使用 mp3、mp4、m4a、mu-law、a-law 或其他失真編碼器可能會降低準確性。如果您的音訊已使用 API 不支援的編碼,請將其轉碼為無損 FLACLINEAR16。如果應用程式必須使用有損編碼器來節省頻寬,建議使用 AMR_WBOGG_OPUSSPEEX_WITH_HEADER_BYTE 編碼器,依照這個順序優先考量。
辨識器的設計目的是在沒有額外噪音消除時,忽略背景語音和噪音。不過,為了取得最佳結果,請將麥克風放置在盡可能接近使用者的位置,尤其是在有背景噪音的情況下。 背景噪音與回音過大可能會降低準確性,尤其是同時使用失真編碼器時。
如果您從多人擷取音訊,在不同的頻道錄製每個人的音訊,請分別傳送每個頻道,以取得最佳辨識結果。但是,如果所有喇叭都混合在一個頻道錄製中,請依原樣傳送錄音。 多人同時說話,或以不同音量說話都可能被解讀為背景噪音,並遭到忽略。
使用字詞和詞組提示將名稱與字詞加到詞彙庫中,並增強特定字詞和詞組的準確性。 辨識器擁有非常龐大的詞彙庫,但詞彙庫範圍以外的字詞與專有名稱將無法辨識。
如要使用短查詢或指令,請使用 StreamingRecognize,並將 single_utterance 設為 true。這樣可最佳化簡短語音內容的辨識,也可將延遲時間降到最低。 使用 RecognizeLongRunningRecognize 來執行簡短查詢或指令。

取樣率

如果可行,請將音訊來源的取樣率設定為 16000 Hz。否則,請設定 sample_rate_hertz,以與音訊來源的原生取樣率相符 (而非重新取樣)。

影格大小

串流辨識會在從麥克風或其他音訊來源擷取即時音訊時,對其進行辨識。音訊串流會拆分成多個影格,並以連續的 StreamingRecognizeRequest 訊息傳送。任何影格大小皆可。較大的影格效率較高,但會增加延遲時間。建議使用 100 毫秒的影格大小,做為延遲時間與效率之間的良好折衷。

音訊預先處理

建議使用品質良好且位置適當的麥克風,以提供盡可能清晰的音訊。但是,在將音訊傳送至服務之前,對音訊進行雜訊抑制訊號處理通常會降低辨識準確性。服務主要是用來處理吵雜音訊。

以下方式有助您獲得最佳結果:

  • 將麥克風放置在盡可能接近說話者的位置,尤其是在有背景噪音的情況下。
  • 避免音訊剪輯。
  • 請勿使用自動增益控制功能 (AGC)。
  • 應停用所有雜訊抑制處理。
  • 聽取一些範例音訊。這些音訊應該要清晰,沒有失真或預期外的噪音。

要求設定

請務必正確描述透過要求傳送至 Speech-to-Text API 的音訊資料。請確認要求的 RecognitionConfig 描述正確的 sampleRateHertzencodinglanguageCode,這樣才能獲得最準確的轉錄結果,並為要求計費。