정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 인식을 최적화하도록 로드된 문법 관리

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1만

인식할 문법 집합을 로드하면 앱이 SpeechGrammarEnabled() 속성을 true 또는 false로 설정하여 인식 작업을 위해 사용할 문법들을 관리할 수 있습니다. 기본 설정은 true입니다. 보통 각 인식 작업을 위해 문법을 로드했다가 언로드하는 것보다 일단 문법을 로드하고 필요에 따라 활성화하거나 비활성화하는 것이 더 효율적입니다. 이 방법이 문법을 로드했다가 언로드하는 것보다 SpeechGrammarEnabled() 속성을 설정하는 데 프로세서 리소스와 시간을 덜 소비합니다.

음성 입력에 대한 일치 항목을 찾기 위해 음성 인식기가 검색해야 하는 데이터의 양을 제한할 수 있도록 인식에 사용할 문법의 수를 제한하세요. 이렇게 하면 음성 인식의 성능과 정확도가 모두 향상됩니다. 현재 인식 작업의 상황에서 앱이 예상하는 구를 기반으로 사용할 문법을 결정할 수 있습니다.

예를 들어 현재 앱 상황이 사용자가 말하는 색상을 표시하는 것이라면 동물 이름을 인식하는 문법을 사용할 필요가 없습니다. 앱이 표시할 색상을 알아야 하는 상황에서 동물 이름을 인식하는 것은 아무 의미가 없습니다.

인식 작업에 사용할 문법을 결정할 때는 반드시 사용자가 인식 작업을 위해 말할 수 있는 내용을 알도록 준비를 시켜야 합니다. 이렇게 해야 사용되는 문법과 일치할 수 있는 구를 사용자가 말할 가능성이 높아집니다. SpeechRecognizerUISettings() 속성을 사용하여 설정할 수 있는 SpeechRecognizerUISettings 열거형의 SpeechRecognizerUISettingsExampleText()SpeechRecognizerUISettingsListenText() 멤버를 사용하여 말할 수 있는 내용을 요구하는 메시지를 사용자에게 표시할 수 있습니다. 자세한 내용은 Windows Phone 8의 프롬프트, 확인 및 명확성 옵션 제공를 참조하세요.

다음 예제에서는 사용자에게 과일, 색상, 동물 이름을 차례로 말하도록 요구하는 앱에서 발췌한 내용을 보여 줍니다. 예제에서는 앱의 이 부분에 필요한 문법을 만들어 로드합니다. 예제에서는 각 인식 작업에 앞서 앱이 과일 이름을 예상할 때 동물 이름이 인식되지 않는 등 문법을 선택적으로 활성화 및 비활성화합니다. 그런 다음 앱에서는 사용자에게 말을 하도록 요구하고 인식을 시작하기 전에 들을 것으로 예상되는 내용을 사용자에게 알려 줍니다.

private async void EnableDisable_Click(object sender, RoutedEventArgs e)
{
  // Initialize a SpeechRecognizerUI object.
  SpeechRecognizerUI recoWithUI = new SpeechRecognizerUI();

  // Create string arrays to use in grammars.
  string[] fruit = { "apple", "peach", "banana" };
  string[] colors = { "red", "green", "blue" };
  string[] animals = { "dog", "cat", "fish" };

  //Create list grammars from the string arrays and add them to the grammar set.
  //Grammars are enabled by default.
  recoWithUI.Recognizer.Grammars.AddGrammarFromList("fruitList", fruit);
  recoWithUI.Recognizer.Grammars.AddGrammarFromList("colorList", colors);
  recoWithUI.Recognizer.Grammars.AddGrammarFromList("animalList", animals);

  // RECOGNIZE FRUIT: Disable grammars for colors and animals. Only the fruit grammar is enabled.
  recoWithUI.Recognizer.Grammars["colorList"].Enabled = false;
  recoWithUI.Recognizer.Grammars["animalList"].Enabled = false;

  // Prompt the user to say a fruit.
  recoWithUI.Settings.ListenText = "Say a fruit";
  recoWithUI.Settings.ExampleText = " 'apple', 'peach', 'banana' ";

  // Load the grammar set and start recognition for fruits.
  SpeechRecognitionUIResult recoFruit = await recoWithUI.RecognizeWithUIAsync();

  // RECOGNIZE COLORS: Disable the fruit grammar, enable the color grammar. 
  // Only the color grammar is enabled.
  recoWithUI.Recognizer.Grammars["fruitList"].Enabled = false;
  recoWithUI.Recognizer.Grammars["colorList"].Enabled = true;

  // Prompt the user to say a color.
  recoWithUI.Settings.ListenText = "Say a color";
  recoWithUI.Settings.ExampleText = " 'red', 'green', 'blue' ";

  // Start recognition for colors.
  SpeechRecognitionUIResult recoColors = await recoWithUI.RecognizeWithUIAsync();

  // RECOGNIZE ANIMALS: Disable the color grammar, enable the animals grammar. 
  // Only the animals grammar is enabled.
  recoWithUI.Recognizer.Grammars["colorList"].Enabled = false;
  recoWithUI.Recognizer.Grammars["animalList"].Enabled = true;

  // Prompt the user to say an animal.
  recoWithUI.Settings.ListenText = "Say an animal";
  recoWithUI.Settings.ExampleText = " 'cat', 'dog', 'fish' ";

  // Start recognition for animals.
  SpeechRecognitionUIResult recoAnimals = await recoWithUI.RecognizeWithUIAsync();
}

표시: