HTML5 的 Web Speech Recognition API(語音辨識API)

使用 HTML5 Web Speech Recognition API 時獲得更好的辨識結果。


1. 確保語音輸入品質

  1. 麥克風品質

    • 使用品質較佳的麥克風,並盡量靠近嘴巴。
    • 低噪音的環境有助於提升辨識率。
  2. 降低背景雜音

    • 若環境嘈雜,考慮使用降噪麥克風或在安靜的空間進行測試。
    • 關閉或遠離其他聲音來源(例如音樂、電視、風扇等)。
  3. 語速與咬字清晰度

    • 放慢語速、咬字清晰,可以幫助系統更準確地辨識語音。

2. 正確設定語言與參數

  1. 設定語言 (lang)

    • 例如在繁體中文環境,請將 recognition.lang 設為 "zh-TW",以確保系統使用繁體中文模型。
    • 如果要使用其他語言或口音,請設定對應的語言代碼(如 "en-US""zh-CN" 等)。
  2. 啟用 interimResults

    • recognition.interimResults = true; 可以在使用者說話的同時,顯示暫時辨識結果,有助於即時回饋,也能更早發現辨識錯誤並重新輸入。

    recognition.interimResults = true;
  3. 調整 continuous

    • recognition.continuous = true; 可以在一次啟動後持續接收語音,直到手動停止或用戶靜音一段時間,對於較長的輸入可能有幫助。
  4. 使用 maxAlternatives

    • 可設定 recognition.maxAlternatives = 3;(預設 1)取得多個辨識候選,方便在前端做比對或後處理,以選出最適合的結果。

    recognition.maxAlternatives = 3;

3. 使用語法 (Grammar) 強化辨識 (實驗性)

HTML5 Web Speech API 支援使用 JSGF 語法 (Java Speech Grammar Format) 來協助系統鎖定特定詞彙或句型,進而提升辨識率。不過目前各瀏覽器對此支援度不一,Chrome 尚屬實驗性功能,實際效果視瀏覽器與版本而定。

以下是一個簡單的示例:

See the Pen HTML5 的 Web Speech Recognition API(語音辨識API) by 01 Scratchinai (@01-Scratchinai) on CodePen.

  • 以上語法 (grammar) 僅接受 「漢堡」、「薯條」、「可樂」 三種詞彙,瀏覽器會在辨識時優先考慮它們。
  • 若語音中出現其他詞彙,結果可能會被修正或忽略,提升在特定詞彙上的辨識正確率。

注意:此功能在不同瀏覽器的實際效果不一,且屬實驗性;若不生效,可能是瀏覽器未完整支援。


4. 前端後處理

  1. 關鍵詞比對

    • 若你只需要辨識關鍵詞(例如選單項目、指令),可以先用 Grammar 或在前端寫規則檢查是否包含特定字詞,降低雜訊造成的影響。
  2. 自動更正

    • 若辨識內容常見錯字或同音字,可以在前端進行常見錯誤比對並修正。例如:
      • 「鍋貼」→「國貼」
      • 「一點點」→「一點店」
    • 可事先整理「錯字對照表」,在辨識後對結果做替換或提示。
  3. 情境限制

    • 針對特定情境(例如餐廳點餐、音樂播放指令),若辨識出與情境無關的字詞,可在前端過濾掉或重新要求使用者輸入。

5. 考慮使用雲端 API(若需要更高準確率)

若對辨識準確度有更高要求,可以考慮使用 Google Cloud Speech-to-Text、Microsoft Azure Speech Services 或 AWS Transcribe 等雲端 API。這些服務通常有更強大的語音模型與自訂詞庫功能,可以達到更佳的辨識效果。

  • 優點:支援多種語言、方言與專業詞彙,並可持續優化辨識模型。
  • 缺點:需要額外的後端串接與金費(通常有免費額度,但超過後需付費)。

6. 總結

  • 硬體與環境:選擇好的麥克風、安靜環境、清晰咬字。
  • API 參數設定:確保 langcontinuousinterimResultsmaxAlternatives 等設定符合需求。
  • Grammar:利用語法鎖定特定詞彙或句型(瀏覽器支援度有限)。
  • 前端後處理:關鍵詞比對、自動更正、情境篩選等方法都能進一步提高辨識效果。
  • 雲端服務:若對辨識率要求更高,可考慮商業雲端語音辨識解決方案。

綜合以上做法,調整與優化程式碼、使用環境及語言設定,通常能顯著提升語音辨識的準確度。祝你開發順利,若有其他疑問或想深入某部分的設定,歡迎再提問!