2013-06-03 6 views
1

System.Speech.Recognition.Choices 클래스로 작업 중이며 주어진 음성 세션에 대해 가능한 선택 사항을 제시 할 수있는 방법이 필요합니다. 여기서는 올바른 용어를 모르겠습니다.음성 인식 중에 나머지 유효한 선택 사항을 볼 수 있습니까?

예를 들어 선택 사항이 "열", "테미 트"및 "꺼짐"인 경우 세 가지를 모두 표시하고 싶습니다. 사용자가 "th"사운드를 시작하면 처음 두 개만 표시하고 다른 사용자는 계속 선택을 취소합니다. 기본적으로 가능한 나머지 선택 사항을 표시하고 싶습니다.

이것이 가능합니까?

감사합니다. 에릭

답변

2

문법에 따라 System.Speech.Recognition.RecognitionResult에는 가장 높은 신뢰도로 인식에 대한 대안 인 정렬 된 인식 목록이 표시되는 Alternate 속성이 있어야합니다. 많은 음성 인식 응용 프로그램은 가능한 잘못된 인식을 명확하게하기 위해이 기능을 사용합니다. (일부 시나리오에서 잘 작동)

// Handle the SpeechRecognized event. 
void SpeechRecognizedHandler(object sender, SpeechRecognizedEventArgs e) 
{ 
    if (e.Result == null) return; 

    // Display the recognition alternates for the result. 
    foreach (RecognizedPhrase phrase in e.Result.Alternates) 
    { 
    Console.WriteLine(" alt({0}) {1}", phrase.Confidence, phrase.Text); 
    } 
} 

또 다른 가능한 해결책은 (이것은 위의 일 예를 잘 작동하지 않을 것입니다) 와일드 카드 역할을하기 위해 문법에서 쓰레기 규칙을 사용하는 것입니다. 다음은 와일드 카드 (GARBAGE 규칙이라고도 함) 때문에 "내 메시지 보내기"와 같은 것을 인식합니다.

<rule id="WildcardExample" scope="private"> 
    <item>open</item> 
    <ruleref special="GARBAGE"/> 
    <item>message</item> 
    <ruleref special="GARBAGE"/>  
</rule> 

또 다른 옵션은 문법에 선택 사항 (one-of 태그 사용)을 지정하고 대체 코드를 사용하는 것입니다. 예를 들어 :

<rule id="ListExample" scope="private"> 
    <item>I'd like a</item> 
    <one-of> 
     <item>chocolate</item> 
     <item>coco</item> 
     <item>vanilla</item> 
    </one-of> 
    <item>please</item> 
</rule> 

사용자가 당신이 묻는 대화 상자를 표시해야하는 경우 확인하고 볼 수 번갈아에 대한 신뢰 값을 사용할 수 있습니다 "나는 초콜릿을 좀주세요"라고하면 "당신이 초콜릿을 원했다 코코 야? "

  • Decent MSDN link for Grammar elements
  • (비록 잘 전혀 기록되지 않음) 귀하의 마지막 옵션

      // Handle the SpeechRecognized event. 
          void SpeechRecognizedHandler(object sender, SpeechRecognizedEventArgs e) 
          { 
           if (e.Result == null) return; 
      
           // Display the recognition alternates for the result. 
           foreach (RecognizedPhrase phrase in e.Result.Alternates) 
           { 
           if (.2 > Math.Abs(e.Result.Confidence-phrase.Confidence && phrase.Text.Equals("coco")) 
           { 
            //Set chocolate or coco grammar/rule 
            Console.WriteLine(" Did you mean chocolate or coco?"); 
            break; 
           } 
           } 
          } 
      
      Hypothesis events를 사용하는 것입니다. 음성 엔진은 기본적으로 인식 결과를 생성하는 과정에서이 콜백을 호출합니다. 위의 TH 예제에 맞을 것입니다. 그러나 실제로 이러한 이벤트를 따라 잡는 UI를 디자인하는 것은 어렵지만 좋은 (일명 느리지 만) 사용자 경험을 제공합니다.