Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak definiować i używać ograniczeń niestandardowych do rozpoznawania mowy w aplikacji Zestaw SDK do aplikacji systemu Windows.
Ważne
Rozpoznawanie mowy wymaga tożsamości pakietu MSIX. Interfejsy API Windows.Media.SpeechRecognition są dostępne tylko wtedy, gdy aplikacja działa z identyfikatorem pakietu (spakietowana lub spakietowana z lokalizacją zewnętrzną). Aplikacje rozpakowane nie mogą używać tych interfejsów API.
Kluczowe interfejsy API
- SpeechRecognitionTopicConstraint
- SpeechRecognitionListConstraint
- SpeechRecognitionGrammarFileConstraint
Przegląd
Rozpoznawanie mowy wymaga co najmniej jednego ograniczenia do zdefiniowania rozpoznawalnego słownictwa. Jeśli nie określisz ograniczenia, zostanie użyta wstępnie zdefiniowana gramatyka dyktowania. Zobacz Rozpoznawanie mowy.
SpeechRecognizer.Constraints Użyj właściwości , aby dodać ograniczenia do rozpoznawania mowy. Dostępne są trzy typy ograniczeń:
- SpeechRecognitionTopicConstraint — ograniczenie oparte na wstępnie zdefiniowanej gramatyce (dyktowaniu lub wyszukiwaniu w Internecie).
- SpeechRecognitionListConstraint — ograniczenie oparte na liście słów lub fraz.
- SpeechRecognitionGrammarFileConstraint — ograniczenie zdefiniowane w pliku specyfikacji gramatyki rozpoznawania mowy (SRGS).
Każdy rozpoznawacz mowy może mieć jeden zestaw ograniczeń. Następujące kombinacje są prawidłowe:
- Ograniczenie pojedynczego tematu (dyktowanie lub wyszukiwanie w Internecie)
- Ograniczenie pojedynczego tematu połączone z ograniczeniem listy
- Kombinacja ograniczeń listy i/lub ograniczeń pliku gramatycznego
Ważne
Wywołaj metodę SpeechRecognizer.CompileConstraintsAsync , aby skompilować ograniczenia przed rozpoczęciem procesu rozpoznawania.
Określ gramatykę wyszukiwania internetowego (SpeechRecognitionTopicConstraint)
private async void WeatherSearch_Click(object sender, RoutedEventArgs e)
{
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
var webSearchGrammar = new Windows.Media.SpeechRecognition.SpeechRecognitionTopicConstraint(
Windows.Media.SpeechRecognition.SpeechRecognitionScenario.WebSearch, "webSearch");
speechRecognizer.UIOptions.AudiblePrompt = "Say what you want to search for...";
speechRecognizer.UIOptions.ExampleText = @"Ex. 'weather for London'";
speechRecognizer.Constraints.Add(webSearchGrammar);
await speechRecognizer.CompileConstraintsAsync();
Windows.Media.SpeechRecognition.SpeechRecognitionResult result =
await speechRecognizer.RecognizeWithUIAsync();
resultTextBlock.Text = result.Text;
}
Definiowanie ograniczenia listy programowej (SpeechRecognitionListConstraint)
Ograniczenia listowe to prosty sposób tworzenia prostych gramatyk na podstawie listy wyrazów lub fraz. Ograniczenie listy dobrze sprawdza się w przypadku rozpoznawania krótkich, odrębnych fraz:
private async void YesOrNo_Click(object sender, RoutedEventArgs e)
{
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
string[] responses = { "Yes", "No" };
var listConstraint = new Windows.Media.SpeechRecognition.SpeechRecognitionListConstraint(
responses, "yesOrNo");
speechRecognizer.UIOptions.ExampleText = @"Ex. 'yes', 'no'";
speechRecognizer.Constraints.Add(listConstraint);
await speechRecognizer.CompileConstraintsAsync();
Windows.Media.SpeechRecognition.SpeechRecognitionResult result =
await speechRecognizer.RecognizeWithUIAsync();
resultTextBlock.Text = result.Text;
}
Określ ograniczenie gramatyki SRGS (SpeechRecognitionGrammarFileConstraint)
Gramatyki SRGS zapewniają pełny zestaw funkcji złożonych interakcji głosowych, w tym określanie kolejności, w jakiej słowa muszą być wypowiadane, łączenia wyrazów z wielu list, łączenia z innymi gramatykami i używania interpretacji semantycznej:
private async void Colors_Click(object sender, RoutedEventArgs e)
{
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
var storageFile = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(
new Uri("ms-appx:///Colors.grxml"));
var grammarFileConstraint =
new Windows.Media.SpeechRecognition.SpeechRecognitionGrammarFileConstraint(
storageFile, "colors");
speechRecognizer.UIOptions.ExampleText = @"Ex. 'blue background', 'green text'";
speechRecognizer.Constraints.Add(grammarFileConstraint);
await speechRecognizer.CompileConstraintsAsync();
Windows.Media.SpeechRecognition.SpeechRecognitionResult result =
await speechRecognizer.RecognizeWithUIAsync();
resultTextBlock.Text = result.Text;
}
.grxml Użyj rozszerzenia pliku dla dokumentów gramatycznych opartych na formacie XML, które są zgodne z regułami SRGS. Ustaw dla pliku opcję Akcja kompilacji na Zawartość, a opcję Kopiuj do katalogu wyjściowego na Kopiuj zawsze.
Aby uzyskać więcej informacji na temat elementów i atrybutów SRGS, zobacz dokumentację XML gramatyki SRGS.
Zarządzanie ograniczeniami
Po załadowaniu kolekcji ograniczeń można włączyć lub wyłączyć poszczególne ograniczenia, ustawiając IsEnabled właściwość na true lub false. Wartość domyślna to true.
Ładowanie ograniczeń raz, a następnie włączenie lub wyłączenie ich w razie potrzeby jest bardziej wydajne niż ładowanie, zwalnianie i kompilowanie ograniczeń dla każdej operacji rozpoznawania.
Ograniczenie liczby aktywnych ograniczeń poprawia zarówno wydajność, jak i dokładność rozpoznawania mowy. Zdecyduj, które ograniczenia mają być włączone na podstawie fraz, których aplikacja może oczekiwać w bieżącym kontekście.