В настоящее время я пытался использовать текст в речи
System.Speech и Microsoft.Speech
я могу использовать только Microsoft.Speech, потому что System.Speech не работает, если язык по умолчанию не английский.
Сначала я попытался использовать этот код для получения текста из моего голоса.
public void Recognize()
{
using ( SpeechSynthesizer Synthesizer = new SpeechSynthesizer() )
{
// Text To Speech
Synthesizer.SetOutputToDefaultAudioDevice();
//Synthesizer.Speak( "Test" );
using ( SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine() )
{
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>( OnSpeechRecognized );
recognizer.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>( OnLoadGrammarCompleted );
recognizer.SetInputToDefaultAudioDevice();
recognizer.LoadGrammar( new Grammar( "Resources/Grammar.xml" )
{
Enabled = true
} );
Console.WriteLine( "Recognize()" );
RecognitionResult result = recognizer.Recognize( TimeSpan.FromSeconds( 3 ) );
if ( result != null )
{
Console.WriteLine( "Result => " + result.Text );
}
else
{
Console.WriteLine( "Text is not on list" );
}
}
}
}
и я заметил, что если предложение (или слово) в моей речи не содержится в Списке в элементах грамматики, оно не будет применено к результату.
поэтому я искал об этой проблеме и, наконец, нашел этот код.
public Grammar GrammarWithDictation()
{
GrammarBuilder builder = new GrammarBuilder();
builder.Append( "begin" );
builder.AppendDictation( "spelling" );
builder.Append( "end" );
Grammar grammarWithDictation = new Grammar( builder );
grammarWithDictation.Name = "Grammar with Dictation";
return grammarWithDictation;
}
Итак, я применил его к своему коду следующим образом.
public void Recognize()
{
using ( SpeechSynthesizer Synthesizer = new SpeechSynthesizer() )
{
// Text To Speech
Synthesizer.SetOutputToDefaultAudioDevice();
//Synthesizer.Speak( "Test" );
using ( SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine() )
{
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>( OnSpeechRecognized );
recognizer.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>( OnLoadGrammarCompleted );
recognizer.SetInputToDefaultAudioDevice();
//recognizer.LoadGrammar( new Grammar( "Resources/Grammar.xml" )
//{
// Enabled = true
//} );
recognizer.LoadGrammarAsync( GrammarWithDictation() );
Console.WriteLine( "Recognize()" );
RecognitionResult result = recognizer.Recognize( TimeSpan.FromSeconds( 3 ) );
if ( result != null )
{
Console.WriteLine( "Result => " + result.Text );
}
else
{
Console.WriteLine( "No Results." );
}
}
}
}
и это не работает.
Так вот в чем суть этой длинной статьи.
Как я могу получить целое предложение в своей речи с Microsoft.Speech?
это возможно? или мне нужно использовать другие вещи для этого?