指定語音辨識器語言
了解如何選擇用於語音辨識的已安裝語言。
重要 API:SupportedTopicLanguages、SupportedGrammarLanguages、Language
在這裡,我們列舉系統上安裝的語言,確定哪種語言是預設語言,並選擇不同的語言進行識別。
先決條件:
本主題以語音辨識為基礎。
您應該對語音辨識和辨識約束有基本的了解。
如果您是開發 Windows 應用程式的新手,請瀏覽這些主題以熟悉此處討論的技術。
使用者體驗指南:
如需設計實用且引人入勝的語音啟用應用程式的實用秘訣,請參閱 語音設計指南 。
確定預設語言
語音辨識器使用系統語音語言作為其預設辨識語言。 此語言由使用者在裝置設定>系統>語音>語音語言螢幕上設定。
我們透過檢查 SystemSpeechLanguage 靜態屬性來識別預設語言。
var language = SpeechRecognizer.SystemSpeechLanguage;
確認已安裝的語言
已安裝的語言可能會因裝置而異。 如果您相依於特定條件約束,您應該確認語言是否存在。
注意安裝新的語言套件之後,需要重新啟動。 如果不支援指定的語言或尚未完成安裝,就會引發錯誤碼SPERR_NOT_FOUND (0x8004503a) 的例外狀況。
透過檢查 SpeechRecognizer 類別的兩個靜態屬性之一來確定裝置上支援的語言:
SupportedTopicLanguages - 與預先定義聽寫和 Web 搜尋語法一起使用的語言物件的集合。
SupportedGrammarLanguages - 與清單約束或語音辨識語法規範 (SRGS) 檔案一起使用的語言物件的集合。
指定語言
若要指定語言,請在 SpeechRecognizer 建構函式中傳遞 Language 物件。
在這裡,我們會將「en-US」指定為辨識語言。
var language = new Windows.Globalization.Language("en-US");
var recognizer = new SpeechRecognizer(language);
備註
可以透過將 SpeechRecognitionTopicConstraint 新增至 SpeechRecognizer 的 Constraints 集合,然後呼叫 CompileConstraintsAsync 來配置主題約束。 如果未使用支援的主題語言初始化識別器,則傳回 TopicLanguageNotSupported 的 SpeechRecognitionResultStatus。
透過將 SpeechRecognitionListConstraint 新增至 SpeechRecognizer 的 Constraints 集合,然後呼叫 CompileConstraintsAsync 來配置清單約束。 您無法直接指定自訂清單的語言。 相反地,清單會使用辨識器的語言來處理。
SRGS 語法是由 SpeechRecognitionGrammarFileConstraint 類別所表示的開放標準 XML 格式。 不同於自訂清單,您可以在 SRGS 標記中指定文法的語言。 如果識別器未初始化為與 SRGS 標記相同的語言,CompileConstraintsAsync 會失敗,並且 SpeechRecognitionResultStatus 為 TopicLanguageNotSupported。
相關文章
範例