共用方式為


語音互動

將語音辨識與文字轉語音(也稱為 TTS,語音合成)直接整合進應用程式的使用者體驗中。

語音辨識 語音辨識將使用者所說的詞彙轉換成文字,用於表單輸入、文字聽寫、指定動作或指令,以及完成任務。 它支援用於自由文字口述與網頁搜尋的預設文法,以及使用語音識別文法規範(SRGS)版本 1.0 撰寫的自訂文法。

語音合成/Text to Speech(TTS)TTS使用語音合成引擎將文字字串轉換為語音單字。 輸入字串可以是基本且無裝飾的文字,也可以是更複雜的語音合成標記語言(SSML)。 SSML 提供一種標準方式來控制語音輸出的特性,例如發音、音量、音高、速率或速度,以及強調。

語音互動設計

當你用心設計與實作語音時,它可以成為一種有效、易於取得且自然的方式,讓人們與你的 Windows 應用程式互動,補充甚至取代傳統以滑鼠、鍵盤、控制器或觸控為主的互動體驗。

這些指引與建議說明如何最佳地將語音辨識與語音轉語音系統整合到應用程式的互動體驗中。

如果你考慮在應用程式中支援語音互動,請問自己以下幾個問題:

  • 使用者可以透過語音採取哪些行動? 他們能在頁面間移動、呼叫指令,或以文字欄位、簡短筆記或長訊息輸入資料嗎?
  • 語音輸入是完成任務的好選擇嗎?
  • 使用者如何知道何時有語音輸入?
  • 應用程式是否總是在監聽,還是使用者需要採取行動才能讓應用程式進入聆聽模式?
  • 哪些片語會啟動一個行動或行為? 這些片語和動作需要在螢幕上列舉嗎?
  • 提示畫面、確認畫面和消歧義畫面,以及語音合成(TTS),是否需要?
  • 應用程式與使用者之間的互動對話框是什麼?
  • 在您的應用程式情境下,是否需要自訂或受限的詞彙(例如醫學、科學或地區)?
  • 需要網路連線嗎?

文字輸入

文字輸入可以從短形式輸入(如單一單字或片語)到長形式輸入(如多句、段落或連續口述)不等。 短輸入通常少於10秒,而長格式輸入會話可長達兩分鐘。 長版輸入可在無需使用者介入的情況下重新開始,營造出持續語音輸入的印象。

提供視覺提示,表示語音辨識已支援且使用者可用,並判斷使用者是否需要開啟。 例如,使用帶有麥克風字形的指令列按鈕(參見 指令列)來顯示可用性與狀態。

持續提供認可回饋,以減少在認可過程中明顯缺乏回應的情況。

讓使用者透過鍵盤輸入、消歧義提示、建議或額外的語音辨識來修訂辨識文字。

若偵測到非語音辨識裝置(如觸控或鍵盤)輸入,則停止辨識。 此輸入可能表示使用者已轉向其他任務,例如修正辨識文字或與其他表單欄位互動。

指定沒有語音輸入表示識別結束的時間長短。 這段時間後不要自動重新開始辨識,因為這通常表示使用者已經停止與你的應用程式互動。

在某些情況下,可能需要網路連線來支援語音辨識。 如果沒有,請關閉所有連續識別介面並終止識別會話。

指揮

語音輸入可以啟動動作、呼叫指令並完成任務。

如果空間允許,請考慮顯示目前應用程式情境中支援的回應,並附上有效輸入的範例。 這種方式減少了應用程式需要處理的回應,也消除了使用者的困惑。

試著把問題框架設計成能引出最具體的回答。 例如,「你今天想做什麼?」這個問題非常開放,且因為回答可能非常多樣,需要非常詳細的文法定義。 或者,「你想玩遊戲還是聽音樂?」會將回應限制在兩個有效答案之一,並使用相應簡單的語法定義。 簡短的文法更容易撰寫,也能產生更準確的辨識結果。

當語音辨識信心低時,請向使用者請求確認。 如果使用者的意圖不明確,最好先釐清,而不是主動做出非預期的行為。

提供視覺提示,表示語音辨識已支援且使用者可用,並判斷使用者是否需要開啟。 例如,使用帶有麥克風字形的指令列按鈕(參見 指令欄指引)來顯示可用性與狀態。

如果語音辨識開關通常不在視野中,可以考慮在應用程式的內容區顯示狀態指示器。

如果是使用者主動識別,建議使用內建的識別體驗以保持一致性。 內建體驗包含可自訂的畫面,包含提示、範例、消歧義、確認與錯誤。

螢幕會依據指定的限制條件而有所不同:

  • 預設文法(聽寫或網路搜尋)

    • 收聽畫面。
    • 思考界面。
    • 「聽到你說」 的畫面,還是錯誤的畫面?
  • 單字或片語列表,或 SRGS 文法檔案

    • 收聽畫面。
    • 如果使用者說的話可以被解讀為多種可能結果,那個畫面會顯示「 你說了嗎 」。
    • 「聽到你說」 的畫面,還是錯誤的畫面?

聆聽 畫面中,你可以:

  • 自訂標題文字。
  • 提供使用者能說出的範例文字。
  • 請說明是否顯示了 聽到你說 畫面。
  • 「聽到你說」 畫面中,把識別字串讀回給使用者。

以下圖片展示了使用 SRGS 定義約束的語音識別器內建識別流程範例。 在這個例子中,語音辨識是成功的。

基於 SGRS 文法檔案的約束初始辨識畫面

基於 SGRS 文法檔案的約束中間識別畫面

基於 SGRS 文法文件的限制的最終識別界面

永遠在傾聽

你的應用程式一啟動就能聽取並辨識語音輸入,無需使用者介入。

根據應用程式的情境自訂文法限制。 這種方法讓語音辨識體驗非常針對性強,且與當前任務相關,並減少錯誤。

「我能說什麼呢?」

啟用語音輸入後,幫助使用者發現應用程式能理解什麼,以及它能執行哪些動作。

若使用者啟用語音辨識,請考慮使用指令列或選單命令顯示當前情境中所有支援的單字與片語。

如果語音辨識一直開啟,可以考慮在每頁加上「我能說什麼?」這句話。 當使用者說出此片語時,請顯示所有在當前語境中所支持的單字與片語。 使用此詞語為使用者提供一種一致的方式來發現系統中的語音能力。

識別失敗

語音辨識可能會失效。 失敗發生在音訊品質不佳、識別器只偵測到部分片語,或完全偵測不到任何輸入時。

優雅地處理失敗,幫助使用者理解為何識別失敗,並持續恢復。

你的應用程式應該會通知使用者,識別器沒聽懂,需要再試一次。

考慮提供一個或多個支持的片語範例。 使用者更可能重複建議的片語,這會提升辨識成功率。

顯示潛在配對清單,供使用者選擇。 這種方式比重新進行識別程序更有效率。

務必支援替代輸入類型,這對於處理反覆辨識失敗特別有幫助。 例如,你可以建議使用者嘗試使用鍵盤,或用觸控或滑鼠從潛在配對列表中選擇。

利用內建的語音辨識體驗,因為它包含螢幕,告知使用者辨識失敗,並允許使用者再次嘗試辨識。

請聆聽並嘗試修正音訊輸入的問題。 語音辨識器能偵測可能影響語音辨識準確度的音訊品質問題。 你可以利用語音辨識器提供的資訊告知使用者問題,並在可能的情況下讓他們採取矯正行動。 例如,如果麥克風的音量設定太低,你可以提示使用者提高說話音量或調高麥克風音量。

Constraints

限制或文法定義語音辨識器能匹配的口語單字和片語。 你可以指定預設的網路服務文法,或是自行建立自訂文法,並隨應用程式安裝。

預定義文法

預設的語音輸入和網路搜尋文法為你的應用程式提供語音辨識,且不需要你自行建立文法。 當你使用這些文法時,遠端網路服務會進行語音辨識並將結果回傳給裝置。

  • 預設的自由文本聽寫語法會辨識使用者在特定語言中能說出的大多數單字和片語。 它優化了辨識短語的特性。 當你不想限制使用者可以說的內容時,可以使用自由發話聽寫功能。 典型用途包括製作筆記或口述訊息內容。
  • 網路搜尋文法和聽寫文法一樣,包含大量使用者可能說出的單字和片語。 不過,它優化了辨識人們在網路搜尋時常用的詞彙。

備註

由於預設的語音輸入和網路搜尋文法可能很大,且它們是線上(不在裝置上),速度可能不如安裝在裝置上的自訂文法那麼快。

這些預設文法可辨識最多 10 秒的語音輸入,且不需額外撰寫。 不過,它們確實需要連接到網路。

自訂文法

設計並撰寫自訂文法,並隨你的應用程式安裝。 該裝置透過自訂約束來執行語音辨識。

  • 程式化清單限制提供了一種輕量化的方法,透過使用單字或片語清單來建立簡單的文法。 列表限制對於辨識短小且獨特的片語效果良好。 明確指定文法中所有單字也能提升辨識準確度,因為語音辨識引擎只需處理語音以確認匹配。 你也可以程式化更新清單。

  • SRGS 文法是一種靜態文件,與程式列表限制不同,它使用 SRGS 1.0 版本所定義的 XML 格式。 SRGS 文法能讓你在單一辨識中捕捉多種語意,提供對語音辨識體驗最大的控制。

    以下是撰寫 SRGS 文法的一些建議:

    • 每個文法都要保持簡潔。 包含較少片語的文法通常比包含大量片語的較大文法更能提供更準確的辨識。 針對特定情境,擁有幾個較小的語法比整個應用程式使用單一語法要好。
    • 讓使用者知道每個應用程式情境該說什麼,並視需要啟用或停用文法。
    • 設計每個文法,讓使用者能以多種方式說出指令。 例如,使用 GARBAGE 規則來匹配你的文法未定義的語音輸入。 此規則允許使用者說出與你的應用程式無關的額外詞彙。 例如,「給我」、「還有」、「呃」、「也許」等等。
    • 使用 sapi:subset 元素來幫助匹配語音輸入。 此元素是 Microsoft 對 SRGS 規範的擴充,用以協助匹配部分片語。
    • 盡量避免在文法中定義只有一個音節的片語。 對於包含兩個或以上音節的片語,辨識往往更為準確。
    • 避免使用聽起來相似的詞語。 例如,像「hello」、「bellow」和「fellow」這類詞語可能會讓識別引擎混淆,導致辨識準確度下降。

備註

你使用哪種類型的限制,取決於你想要建立的辨識體驗的複雜度。 任何類型都可能是特定識別任務的最佳選擇,你也可能在應用程式中找到各種限制的用途。

自訂發音

如果你的應用程式包含特殊詞彙,包含不尋常或虛構詞彙,或是發音不常見的詞彙,你可能可以透過自訂發音來提升這些詞彙的辨識表現。

對於一小部分單字和片語,或是一小串不常用的單字和片語,可以在 SRGS 文法中建立自訂發音。 更多資訊請參見 代幣元素

對於較大的單字和片語清單,或常用的詞彙和片語,請建立獨立的發音詞彙文件。 更多資訊請參見 詞典與音標

正在測試

測試語音辨識的準確度以及任何支援的使用者介面,針對你的應用程式目標使用者進行測試。 這種方法能幫助你判斷語音互動體驗在應用程式中的效果如何。 例如,使用者是否因為應用程式不聽常見片語而獲得較差的辨識結果?

要麼修改文法以支持此片語,要麼提供使用者一份支援片語清單。 如果你已經提供了支援詞彙清單,務必確保使用者能輕易找到。

文字轉語音(TTS)

TTS 從純文字或 SSML 產生語音輸出。

試著設計禮貌且鼓勵的提示。

考慮是否應該閱讀長串文字。 聽簡訊是一回事,但聽一長串難以記住的搜尋結果又是另一回事。

提供媒體控制功能,讓使用者可以暫停或停止 TTS。

請聆聽所有 TTS 弦樂,確保它們聽起來清晰且自然。

  • 串聯不尋常的詞語序列或涉及部分號碼或標點符號的說話方式,可能導致片語變得難以理解。
  • 如果語調或節奏與母語者說某句話的方式不同,聽起來可能會顯得不自然。

你可以透過使用 SSML 取代純文字作為語音合成器的輸入來解決這兩個問題。 欲了解更多關於 SSML 的資訊,請參閱 「使用 SSML 控制合成語音 」及「 語音合成標記語言參考」。

範例