將語音辨識與文字轉語音(也稱為 TTS,語音合成)直接整合進應用程式的使用者體驗中。
語音辨識 語音辨識將使用者所說的詞彙轉換成文字,用於表單輸入、文字聽寫、指定動作或指令,以及完成任務。 支援預先定義的自由文字聽寫與網頁搜尋文法,以及使用語音識別文法規範(SRGS)1.0 版撰寫的自訂文法。
語音合成器 TTS 使用語音合成引擎(語音)將文字串轉換為口語。 輸入字串可以是基本且無裝飾的文字,也可以是更複雜的語音合成標記語言(SSML)。 SSML 提供一種標準方式來控制語音輸出的特性,例如發音、音量、音高、速率或速度,以及強調。
其他語音相關元件:Windows 應用程式中的 Cortana 會使用自訂語音指令(語音或打字)將應用程式啟動到前景(應用程式會自動聚焦,就像從開始選單啟動一樣),或作為背景服務啟用(Cortana 保留焦點但會顯示應用程式的結果)。 請參考 Windows 應用程式中的 Cortana 互動。
語音互動設計
語音經過精心設計與實作,能成為使用者與應用程式互動的強大且愉快的方式,能補充甚至取代鍵盤、滑鼠、觸控與手勢。
這些指引與建議說明如何最佳地將語音辨識與語音轉語音系統整合到應用程式的互動體驗中。
如果你考慮在應用程式中支援語音互動:
- 透過言語可以採取哪些行動? 使用者能否在頁面間移動、呼叫指令,或以文字欄位、簡短筆記或長訊息的形式輸入資料?
- 語音輸入是完成任務的好選擇嗎?
- 使用者如何知道何時有語音輸入?
- 應用程式是否總是在監聽,還是使用者需要採取行動才能讓應用程式進入聆聽模式?
- 哪些片語會啟動一個行動或行為? 這些片語和動作需要在螢幕上列舉嗎?
- 提示畫面、確認畫面和消歧義畫面,以及語音合成(TTS),是否需要?
- 應用程式與使用者之間的互動對話框是什麼?
- 在您的應用程式情境下,是否需要自訂或受限的詞彙(例如醫學、科學或地區)?
- 需要網路連線嗎?
文字輸入
文字輸入的語音可以從短字(單字或片語)到長字(連續口述)不等。 短輸入時長不得超過10秒,而長輸入會話可長達兩分鐘。 (長格式輸入可在無需使用者介入的情況下重新啟動,營造連續語音輸入的印象。)
你應該提供視覺提示,表示語音辨識已支援且使用者可用,以及使用者是否需要開啟。 例如,帶有麥克風字形的指令列按鈕(見 指令條)可用來顯示可用性與狀態。
持續提供認可回饋,以減少在認可過程中明顯缺乏回應的情況。
讓使用者透過鍵盤輸入、消歧義提示、建議或額外的語音辨識來修訂辨識文字。
若偵測到非語音辨識裝置(如觸控或鍵盤)輸入,則停止辨識。 這很可能表示使用者已轉向其他任務,例如修正辨識文字或與其他表單欄位互動。
指定沒有語音輸入表示識別結束的時間長短。 在此期間後不要自動重新開始辨識,因為這通常表示使用者已停止與你的應用程式互動。
若網路連線無法使用,請停用所有持續識別介面並終止識別會話。 持續識別需要網路連線。
指揮
語音輸入可以啟動動作、呼叫指令並完成任務。
如果空間允許,請考慮顯示目前應用程式情境中支援的回應,並附上有效輸入的範例。 這減少了應用程式可能需要處理的回應,也消除了使用者的困惑。
試著讓你的問題框架能引出盡可能具體的回應。 例如,「你今天想做什麼?」這個問題非常開放,因為回答可能非常多元,需要非常詳細的文法定義。 或者,「你想玩遊戲還是聽音樂?」會將回應限制在兩個有效答案之一,並使用相應簡單的語法定義。 簡短的文法更容易撰寫,也能產生更準確的辨識結果。
當語音辨識信心低時,請向使用者請求確認。 如果使用者的意圖不明確,最好先釐清,而不是主動做出非預期的行為。
你應該提供視覺提示,表示語音辨識已支援且使用者可用,以及使用者是否需要開啟。 例如,帶有麥克風字形的指令列按鈕(參見 指令欄指引)可用來同時顯示可用性與狀態。
如果語音辨識開關通常不在視野中,可以考慮在應用程式的內容區顯示狀態指示器。
如果辨識是由使用者主動發起,建議使用內建的辨識體驗以保持一致性。 內建體驗包含可自訂的畫面,包含提示、範例、消歧義、確認與錯誤。
螢幕會依據指定的限制條件而有所不同:
預設文法(聽寫或網路搜尋)
- 收聽模式畫面。
- 思考界面。
- 是「聽到你說」畫面還是錯誤畫面。
單字或片語列表,或 SRGS 文法檔案
- 收聽模式畫面。
- 如果使用者說的話可以被解讀為多種可能結果,那個畫面會顯示「 你說了嗎 」。
- 是「聽到你說」畫面還是錯誤畫面。
在 聆聽 畫面中,您可以:
- 自訂標題文字。
- 提供使用者能說出的範例文字。
- 請說明是否顯示了 聽到你說 畫面。
- 在 「聽到你說」 畫面中,把識別字串讀回給使用者。
以下是語音識別器內建的識別流程範例,該流程使用 SRGS 定義的限制條件。 在這個例子中,語音辨識是成功的。
永遠在傾聽
你的應用程式一啟動就能聽取並辨識語音輸入,無需使用者介入。
你應該根據應用程式的情境自訂文法限制。 這讓語音辨識體驗非常針對性且與當前任務相關,並減少錯誤。
「我能說什麼呢?」
啟用語音輸入後,幫助使用者了解哪些內容及可執行的動作非常重要。
如果使用者啟用語音辨識功能,請考慮使用指令列或選單命令顯示目前情境中支援的所有單字和片語。
如果語音辨識一直開啟,可以考慮在每頁加上「我能說什麼?」這句話。 當使用者說出此片語時,請顯示所有在當前語境中所支持的單字與片語。 使用此詞語為使用者提供一種一致的方式來發現系統中的語音能力。
識別失敗
語音辨識會失敗。 故障發生在音訊品質不佳、僅辨識部分片語,或完全偵測不到任何輸入時。
優雅地處理失敗,幫助使用者理解為何識別失敗,並進行修復。
你的應用程式應該通知使用者他們沒被理解,需要再試一次。
考慮提供一個或多個支持的片語範例。 使用者更可能重複建議的片語,這會提升辨識成功率。
你應該顯示一份潛在配對清單,讓使用者從中選擇。 這比重新進行識別程序更有效率。
你應該始終支援替代輸入類型,這對於處理反覆識別失敗特別有幫助。 例如,你可以建議使用者嘗試使用鍵盤,或用觸控或滑鼠從潛在配對列表中選擇。
利用內建語音辨識體驗,因為它包含螢幕告知使用者辨識失敗,並允許使用者再次嘗試辨識。
請聆聽並嘗試修正音訊輸入的問題。 語音辨識器能偵測可能影響語音辨識準確度的音訊品質問題。 你可以利用語音辨識器提供的資訊告知使用者問題,並在可能的情況下讓他們採取糾正行動。 例如,如果麥克風的音量設定太低,你可以提示使用者提高說話音量或調高麥克風音量。
Constraints
限制或文法定義了語音辨識器可匹配的口語單字和片語。 你可以指定預先定義的網路服務文法,或者建立一個隨應用程式安裝的自訂文法。
預定義文法
預設的語音輸入和網路搜尋文法能為你的應用程式提供語音辨識,且不需要你自行撰寫文法。 使用這些文法時,語音辨識由遠端網路服務執行,結果會回傳至裝置
- 預設的自由文本聽寫語法能辨識使用者在特定語言中能說出的大多數單字和片語,並優化以辨識短語。 當你不想限制使用者能說的話時,自由文字聽寫很有用。 典型用途包括製作筆記或口述訊息內容。
- 網路搜尋文法和聽寫文法一樣,包含大量使用者可能說出的單字和片語。 然而,它優化了辨識人們在網路搜尋時常用的詞彙。
備註
由於預設的語音輸入和網路搜尋文法可能很大,且它們是線上的(不在裝置上),效能可能不如裝置上安裝自訂文法。
這些預設文法可用來辨識長達 10 秒的語音輸入,且不需你額外撰寫。 不過,它們確實需要連接到網路。
自訂文法
自訂文法由你設計並撰寫,並隨你的應用程式安裝。 語音辨識使用自訂約束於裝置上進行。
程式化清單限制提供了一種輕量級的方法,可以利用單字或片語清單來建立簡單的文法。 列表限制對於辨識短小且獨特的片語效果良好。 明確指定文法中所有單字也能提升辨識準確度,因為語音辨識引擎只需處理語音以確認匹配。 該清單也可以程式化更新。
SRGS 文法是一種靜態文件,與程式列表限制不同,它使用 SRGS 1.0 版本所定義的 XML 格式。 SRGS 文法能讓你在單一辨識中捕捉多種語意,提供對語音辨識體驗最大的控制。
以下是撰寫 SRGS 文法的一些建議:
- 每個文法都要保持簡潔。 包含較少片語的文法通常比包含大量片語的較大文法更能提供更準確的辨識。 針對特定情境,擁有幾個較小的語法比整個應用程式使用單一語法要好。
- 讓使用者知道每個應用程式情境該說什麼,並視需要啟用或停用文法。
- 設計每個文法,讓使用者能以多種方式說出指令。 例如,你可以用 GARBAGE 規則來匹配文法未定義的語音輸入。 這讓使用者能說出對你的應用程式毫無意義的額外詞彙。 例如,「給我」、「還有」、「呃」、「也許」等等。
- 使用 sapi:subset 元素來幫助匹配語音輸入。 這是 Microsoft 對 SRGS 規範的擴充,用以協助匹配部分片語。
- 盡量避免在文法中定義只有一個音節的片語。 對於包含兩個或以上音節的片語,辨識往往更為準確。
- 避免使用聽起來相似的詞語。 例如,像「hello」、「bellow」和「fellow」這類詞語可能會讓識別引擎混淆,導致辨識準確度下降。
備註
你使用哪種類型的約束類型,取決於你想建立的辨識體驗的複雜度。 任何一個都可能是特定識別任務的最佳選擇,你也可以在應用程式中找到各種限制的用途。
自訂發音
如果你的應用程式包含特殊詞彙,包含不尋常或虛構詞彙,或是發音不常見的詞彙,你可能可以透過自訂發音來提升這些詞彙的辨識表現。
對於一小串單字和片語,或是一小串不常用的單字和片語,你可以在 SRGS 文法中自訂發音。 更多資訊請參見 代幣元素 。
對於較大的單字和片語清單,或常用的單字和片語,你可以建立獨立的發音詞彙文件。 更多資訊請參見 詞典與音標 。
Testing
測試語音辨識的準確度以及任何支援的使用者介面,針對你的應用程式目標使用者進行測試。 這是判斷你應用程式中語音互動體驗效果的最佳方式。 例如,使用者是否因為應用程式沒有聆聽常見片語而獲得較差的辨識結果?
要麼修改文法以支持此片語,要麼提供使用者一份支援片語清單。 如果你已經提供了支持詞彙清單,請確保它容易被發現。
文字轉語音(TTS)
TTS 從純文字或 SSML 產生語音輸出。
試著設計禮貌且鼓勵的提示。
考慮是否應該閱讀長串文字。 聽簡訊是一回事,但聽一長串難以記住的搜尋結果又是另一回事。
你應該提供媒體控制,讓使用者可以暫停或停止 TTS。
你應該聆聽所有的 TTS 字串,以確保它們是清晰可懂且自然的。
- 串聯不尋常的詞語序列或涉及部分號碼或標點符號的說話方式,可能導致片語變得難以理解。
- 如果語調或節奏與母語者說某句話的方式不同,聽起來可能會顯得不自然。
這兩個問題都可以透過使用 SSML 取代純文字作為語音合成器的輸入來解決。 欲了解更多關於 SSML 的資訊,請參閱 「使用 SSML 控制合成語音 」及「 語音合成標記語言參考」。
本節其他條目
| 主題 | Description |
|---|---|
| 語音辨識 | 使用語音辨識來提供輸入、指定動作或指令,並完成任務。 |
| 指定語音識別語言 | 瞭解如何選取要用於語音辨識的已安裝語言。 |
| 定義自訂識別約束 | 學習如何定義並使用語音辨識的自訂約束。 |
| 啟用連續語音輸入 | 學習如何捕捉並辨識長格式、連續的語音輸入。 |
| 管理音訊輸入問題 | 學習如何管理因音訊輸入品質而導致語音辨識準確度的問題。 |
| 設定語音辨識超時設定 | 設定語音辨識器忽略靜默或難以辨識的聲音(如咿呀聲)並持續聆聽語音輸入的時間。 |
相關文章
範例