2010-10-18 16 views
7

Po prostu chcę wiedzieć, czy istnieją jakieś wbudowane biblioteki lub biblioteki zewnętrzne w Javie lub C#, które pozwalają mi pobrać plik audio i przeanalizować go i wyodrębnić z niego tekst.Konwersja audio do tekstu

Muszę złożyć wniosek, aby to zrobić, ale nie wiem skąd mogę zacząć.

+0

zdecydowanie nie jest wbudowany. Rozumiem, że chcesz przedłużyć swoje pytania do bibliotek, których możesz używać z Javy lub C#. – Thilo

+0

Dzięki, panie Thilo, ok, jeśli znasz jakieś zewnętrzne biblioteki C# lub Java, które mogą robić to, co chcę, będę wdzięczny, jeśli mi powiesz, Dzięki z góry –

+0

To może pomóc http://java.sun.com/ products/java-media/speech/reference/codesamples/index.html –

Odpowiedz

1

Możesz użyć SoX (szwajcarski scyzoryk programów do przetwarzania dźwięku), aby przekonwertować plik audio do pliku tekstowego z wartościami numerycznymi odpowiadającymi częstotliwości/głośności dźwięku.

Zrobiłem to dla poprzedniego projektu, ale nie znam dokładnych opcji polecenia.

jest łącze z projektem: http://sox.sourceforge.net/Main/HomePage

7

Oto cały przykład za pomocą C# i System.Speech

Kod może być podzielona na 2 części:

konfigurujących przedmiotu SpeechRecognitionEngine (i jego wymagane elementy) obsługa zdarzeń SpeechRecognized i SpeechHossesized.

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.Tekst; }

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/