windows7 플랫폼에서 System.Speech.Recognition.SpeechRecognitionEngine을 사용하여 음성을 텍스트로 변환 할 수 있습니다. SpeechRecognitionEngine이 SpeechRecognized 이벤트를 트리거하면 다른 대체 단어를 얻을 수 있습니다. choise에 대한 사용자에게 이러한 단어를 보여줍니다. 내가 SpeechRecognitionEngine 인스턴스를 초기화 할 때 그런데 SAPI 음성 인식 결과의 대체물을 얻으려면 어떻게해야합니까
void engine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (this.SpeechRecognized != null)
{
this.SpeechRecognized(this, new RecognizedResultEventArgs
{
Text = e.Result.Text,
Alternates = new ReadOnlyCollection<string>(e.Result.Alternates.Select(p => p.Text).ToList())
});
}
}
은 내가 대신 사용 "DictationGrammar"일부 specifical 단어를로드 할.
내 프로그램은 때때로 XP 플랫폼에서 실행해야합니다. 그래서 sapi5.1을 사용하여 xp 운영 체제에서 실행될 특정 버티션을 원합니다.
나는 sapi 5.1 문서의 일부를 읽었으며 그 다음에는 그것을 알게되었다 : sapi5.1에서 "명령 및 제어"방법을 사용할 수있다. 그러나 "Result.Alternates()"메서드는 "명령 및 제어"를 사용할 때 사용할 수 없습니다. 그렇다면 SpeechRecognitionEngine과 동일한 효과를 어떻게 얻을 수 있습니까?
나는 다음 코드를 시도하고 컴 우유 공급이 :public void RecoContext_Recognition(int StreamNumber, object StreamPosition, SpeechRecognitionType RecognitionType, ISpeechRecoResult Result)
{
ISpeechPhraseProperty oItem;
oItem = Result.PhraseInfo.Properties.Item(0);
if ((System.Decimal)Result.PhraseInfo.GrammarId == grammarId)
{
if (this.SpeechRecognized != null)
{
RecognizedResultEventArgs e = new RecognizedResultEventArgs();
e.Text = oItem.Name;
// The following code throws an exception
ISpeechPhraseAlternates alternates = Result.Alternates(10);
List<string> s = new List<string>();
foreach (ISpeechPhraseAlternate item in alternates)
{
s.Add(item.RecoResult.PhraseInfo.Properties.Item(0).Name);
}
e.Alternates = new ReadOnlyCollection<string>(s);
this.SpeechRecognized(this, e);
}
}
}
COM의 방법으로 사용 SAPI에 의해 대체를 얻을 수있는 방법이 있나요 감사는?.
감사합니다. 그러나 System.Speech.Recognition.SpeechRecognitionEngine 클래스는 단어 범위를 재구성하고 대체 할 수 있습니다. –
이것은 Sapi 5.3에 추가 되었기 때문에. 그러나 Sapi 5.3에서도 대체물을 물어볼 수 있지만 원본 Reco 만 얻을 수 있습니다. –
답장을 보내 주셔서 감사합니다, Eric. –