Oto cały przykład za pomocą C# i System.Speech do przetwarzania mowy na tekst
Kod może być podzielona na 2 części:
konfigurujących przedmiotu SpeechRecognitionEngine (oraz wymaganej elementy) obsługa zdarzeń SpeechRecognized i SpeechHypothesized.
Krok 1: Konfiguracja SpeechRecognitionEngine
_speechRecognitionEngine = new SpeechRecognitionEngine();
_speechRecognitionEngine.SetInputToDefaultAudioDevice();
_dictationGrammar = new DictationGrammar();
_speechRecognitionEngine.LoadGrammar(_dictationGrammar);
_speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
W tym momencie Twój obiekt jest gotowy do zapisywania dźwięku z mikrofonu. Musisz jednak zająć się niektórymi zdarzeniami, aby faktycznie uzyskać dostęp do wyników.
Etap 2: obsługę zdarzeń SpeechRecognitionEngine
_speechRecognitionEngine.SpeechRecognized - = nowy Podprogram (SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized - = new EventHandler (SpeechHypothesizing);
_speechRecognitionEngine.SpeechRecognized + = new EventHandler (SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized + = new EventHandler (SpeechHypothesizing);
private void SpeechHypothesizing (object sender, SpeechHypothesizedEventArgs e) {/// wyniki w czasie rzeczywistym z silnika ciąg realTimeResults = e.Result.Text; }
private void SpeechRecognized (object sender, SpeechRecognizedEventArgs e) { /// ostateczna odpowiedź z ciągiem silnika finalAnswer = e.Result.Text; }
To wszystko. Jeśli chcesz użyć wstępnie nagrany plik .wav zamiast mikrofonu, należy użyć
_speechRecognitionEngine.SetInputToWaveFile (pathToTargetWavFile);
zamiast
_speechRecognitionEngine.SetInputToDefaultAudioDevice();
Istnieje kilka różnych opcji w tych klasach i warto je poznać bardziej szczegółowo.
http://ellismis.com/2012/03/17/converting-or-transcribing-audio-to-text-using-c-and-net-system-speech/
To jest ścieżka dla Win7 C: \ Windows \ System32 \ Speech \ Common –
mowy na tekst ... nie na odwrót. –
@RobHay "Dodatkowo będę potrzebował API lub biblioteki, która może wykonywać konwersję tekstu", więc myślę, że moja odpowiedź jest - przynajmniej - częściowo poprawna. –