語音調整

執行偵測意圖要求時,您可以選擇提供語音情境,為語音辨識器提供提示。這些提示有助於在特定對話狀態中辨識語音。

自動語音調整

自動語音調整功能會自動使用對話狀態,將相關實體和訓練詞組做為語音內容提示,傳遞至所有偵測意圖要求,藉此提高代理程式的語音辨識準確率。這項功能預設為 啟用 。

啟用或停用自動語音調整功能

如要啟用或停用自動語音調整功能,請按照下列步驟操作:

  1. 前往 Dialogflow ES 主控台
  2. 選取左側欄選單頂部附近的代理程式
  3. 按一下代理程式名稱旁邊的設定 按鈕
  4. 選取 [Speech] (語音) 分頁標籤
  5. 捲動至「Improve Speech Recognition Quality」(改善語音辨識品質) 專區
  6. 開啟或關閉「啟用自動語音調整功能」

代理程式設計,提升語音辨識準確度

啟用自動語音調整功能後,您就可以建構代理程式來利用這項功能。以下各節說明如何對代理程式的訓練詞組、情境和實體進行某些變更,來改善語音辨識結果。

訓練詞組和背景資訊

  • 如果您使用「stuffy nose」(鼻塞) 之類的詞組來定義訓練詞組,系統會將聽起來類似的使用者話語內容可靠地辨識為「stuffy nose」(鼻塞) 而非「stuff he knows」(他知道的事情)。
  • 如果工作階段有處於有效狀態的背景資訊,自動語音適應功能會優先處理意圖的訓練詞組,並將所有輸入背景資訊設為有效狀態。舉例來說,如果「pay-bill」和「confirmation」這兩個背景資訊都處於啟用狀態,則下列所有意圖都會影響自動語音適應功能:含有單一輸入背景資訊「pay-bill」的意圖、含有單一輸入背景資訊「confirmation」的意圖,以及含有兩個輸入背景資訊「pay-bill」和「confirmation」的意圖。

  • 如果工作階段沒有任何有效背景資訊,自動語音適應功能會優先選擇沒有輸入背景資訊的意圖訓練片語。

  • 當您有必要參數,強制 Dialogflow 進入填空提示時,自動語音適應功能會強烈偏向要填入的實體。

無論如何,自動語音調整功能只會調整語音辨識結果,不會限制辨識內容。舉例來說,即使 Dialogflow 正在提示使用者輸入必要參數,使用者仍可觸發其他意圖,例如頂層的「與服務專員交談」意圖。

系統實體

如果您定義的訓練詞組使用 @sys.number 系統實體,當使用者說出「I want two」(我想要兩個) 時,系統可能會將其辨識為「to」(至)、「too」(也)、「2」或「two」(二)。

啟用自動語音調整功能後,Dialogflow 會在語音辨識期間使用 @sys.number 實體做為提示,而系統更有可能將該參數擷取為「2」。

自訂實體

  • 如果您為貴公司提供的產品或服務名稱定義自訂實體,當使用者在話語內容中提到這些字詞時,系統就更有可能辨識出這些字詞。訓練詞組「I love Dialogflow」(我喜歡 Dialogflow),其中「Dialogflow」加註為 @product 實體,會告知自動語音調整功能偏好「I love Dialogflow」、「I love Cloud Speech」和 @product 實體中的所有其他項目。

  • 使用 Dialogflow 偵測語音時,請務必定義清楚的實體同義詞。假設您有兩個 @product 實體項目:「Dialogflow」和「Dataflow」。「Dialogflow」的同義字可能包括「Dialogflow」、「dialogue flow」、「dialogue builder」、「Speaktoit」、「speak to it」、「API.ai」、「API dot AI」。這些都是合適的同義字,因為涵蓋最常見的變化形式。您不需要加入「對話流程建構工具」,因為「對話流程」已涵蓋該工具。

  • 如果使用者語音輸入連續但不同的數字實體,可能會造成語意不清。 舉例來說,「我要兩組十六入包裝」可能代表 2 組 16 入包裝, 或 216 組包裝。如果設定實體時使用拼音值,語音適應功能有助於消除這些情況的歧義:
    • 定義含有項目的 quantity 實體:
      zero
      one
      ...
      twenty
    • 定義含有項目的 productsize 實體:
      sixteen pack
      two ounce
      ...
      five liter
    • 語音適應功能只會使用實體同義詞,因此您可以定義參考值為 1 的實體,以及單一同義詞 one,簡化完成邏輯。

規則運算式實體

Regexp 實體 可針對英數和數字序列 (例如「ABC123」或「12345」) 觸發自動語音適應功能,前提是設定和測試正確無誤。

如要透過語音辨識這些序列,請實作下列所有四項規定:

1. Regexp entry requirement

雖然任何規則運算式都可用於從文字輸入內容擷取實體,但只有特定運算式會指示自動語音調整功能,在辨識語音時偏好以字母拼出的英數或數字序列。

在 regexp 實體中,至少一個項目必須符合所有這些規則:

  • 應符合某些英數字元,例如:\d\w[a-zA-Z0-9]
  • 不得包含空白字元  \s,但允許使用 \s*\s?
  • 不得包含擷取或非擷取群組 ()
  • 請勿嘗試比對任何特殊字元或標點符號,例如: ` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ |

這個項目可以包含字元集 [] 和重複量詞,例如 *?+{3,5}

請參閱範例

2. 參數定義規定

將正則運算式實體標示為必要的意圖參數,以便在運算單元填充期間收集。這樣一來,自動語音適應功能就會著重於辨識序列,而不是同時辨識意圖和序列。否則,「Where is my package for ABC123」(我的 ABC123 包裹在哪裡?) 可能會誤認成「Where is my package 4ABC123」(我的 4ABC123 包裹在哪裡?)。

3. 訓練詞組註解需求

將規則運算式實體用於意圖訓練詞組註解。這可確保參數在填滿空位時一併解析。

4. 測試規定

請參閱「測試語音調整功能」。

範例

舉例來說,如果規則運算式實體只有一個項目 ([a-zA-Z0-9]\s?){5,9},就不會觸發語音序列辨識器,因為該項目包含擷取群組。如要修正這個問題,只要為 [a-zA-Z0-9]{5,9} 新增另一個項目即可。現在比對「ABC123」時,您將可受益於序列辨識器,但由於原始規則允許空格,NLU 仍會比對「ABC 123」等輸入內容。

以下規則運算式範例適用於英數序列:

^[A-Za-z0-9]{1,10}$
WAC\d+
215[2-8]{3}[A-Z]+
[a-zA-Z]\s?[a-zA-Z]\s?[0-9]\s?[0-9]\s?[0-9]\s?[a-zA-Z]\s?[a-zA-Z]

以下是適用於數字序列的規則運算式範例:

\d{2,8}
^[0-9]+$
2[0-9]{7}
[2-9]\d{2}[0-8]{3}\d{4}
規則運算式解決方法

自動語音調整功能內建的 Regexp 實體支援因語言而異。 如要瞭解 $OOV_CLASS_ALPHANUMERIC_SEQUENCE$OOV_CLASS_DIGIT_SEQUENCE 支援的語言,請參閱「語音類別符記」。

如果你的語言未列於其中,你可以解決這項限制。舉例來說,如果您希望系統能夠正確辨識出由三個字母加上三個數字組成的員工 ID,您可以使用下列實體和參數來建構代理程式:

  • 定義一個包含 10 個實體項目 (含同義詞) 的 digit 實體:
    0, 0
    1, 1
    ...
    9, 9
  • 定義一個包含 26 個實體項目 (含同義詞) 的 letter 實體:
    A, A
    B, B
    ...
    Z, Z
  • 定義一個包含單一實體項目 (不含同義詞) 的 employee-id 實體:
    @letter @letter @letter @digit @digit @digit
  • 在訓練詞組中使用 @employee-id 做為參數。

測試語音調整功能

測試代理程式的語音適應功能時,請勿直接測試對話中第一個語音話語的比對結果,在要測試的相符項目之前,整個對話都應只使用語音或事件輸入。以這種方式測試代理程式時,代理程式的行為與實際工作環境對話中的行為類似。

限制

限制如下:

  • 語音調整功能不適用於所有語音模型和語言組合。 請參閱 Cloud Speech 語言支援頁面,確認語音模型和語言組合是否支援「模型調整」功能。
  • 自動語音調整功能不適用於 Actions on Google (Google 助理),因為語音辨識作業是在將資料傳送至 Dialogflow 之前由 Actions on Google 執行的。
  • 辨識長字元序列並不容易。單次擷取的字元數與輸入音訊的品質直接相關。舉例來說,如果整合功能會處理電話語音,您需要啟用進階語音模型,才能可靠地辨識超過四到五個字元的英數字元序列,或超過 10 個字元的數字序列。如果您已遵循所有規則運算式實體指引,但仍無法在單一回合中擷取整個序列,不妨考慮以下對話式替代方案:
    • 根據資料庫驗證序號時,請考慮交叉參照其他收集到的參數,例如日期、姓名或電話號碼,以允許不完整的相符項目。舉例來說,除了要求使用者提供訂單編號,也請他們提供電話號碼。現在,當 Webhook 查詢資料庫中的訂單狀態時,可以先依據電話號碼,然後傳回該帳戶最接近的相符訂單。這可讓 Dialogflow 將「ABC」誤聽為「AVC」,但仍為使用者傳回正確的訂單狀態。
    • 如果序列過長,建議設計流程,鼓勵使用者在中間暫停,讓機器人確認進度。詳情請參閱這篇教學課程