2010-10-18 18 views
7

Voglio solo sapere se c'è qualche build in librerie o librerie esterne in Java o C# che mi permetta di prendere un file audio e analizzarlo ed estrarre il testo da esso.Converti audio in testo

Ho bisogno di fare un'applicazione per farlo, ma non so da dove posso iniziare.

+0

sicuramente non integrato. Considero che desideri estendere le tue domande alle librerie che puoi usare da Java o C#. – Thilo

+0

Grazie Mr. Thilo, ok se conosci qualche libreria esterna di C# o Java che può fare quello che voglio sarò apprezzato se mi dici, Grazie in anticipo –

+0

Questo potrebbe aiutare http://java.sun.com/ prodotti/java-media/speech/reference/codesamples/index.html –

risposta

1

È possibile utilizzare SoX (il coltellino svizzero dei programmi di elaborazione del suono) per convertire il file audio in un file di testo con valori numerici corrispondenti alla frequenza/volume del suono.

L'ho eseguito per un progetto precedente ma non conosco le esatte opzioni di comando.

Ecco un link al progetto: http://sox.sourceforge.net/Main/HomePage

7

Ecco un esempio completo utilizzando C# e System.Speech

Il codice può essere diviso in 2 parti principali:

configurazione dell'oggetto SpeechRecognitionEngine (e gli elementi necessari) gestione degli eventi SpeechRecognized e SpeechHypothesized.

Fase 1: Configurazione della SpeechRecognitionEngine

_speechRecognitionEngine = new SpeechRecognitionEngine(); 
_speechRecognitionEngine.SetInputToDefaultAudioDevice(); 
_dictationGrammar = new DictationGrammar(); 
_speechRecognitionEngine.LoadGrammar(_dictationGrammar); 
_speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); 

A questo punto l'oggetto è pronto per iniziare a trascrivere l'audio dal microfono. Devi comunque gestire alcuni eventi per poter accedere effettivamente ai risultati.

Fase 2: Gestione delle SpeechRecognitionEngine Eventi

_speechRecognitionEngine.SpeechRecognized - = new EventHandler (SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized - = new EventHandler (SpeechHypothesizing);

_speechRecognitionEngine.SpeechRecognized + = new EventHandler (SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized + = new EventHandler (SpeechHypothesizing);

vuoto SpeechHypothesizing privato (object sender, SpeechHypothesizedEventArgs e) { /// in tempo reale i risultati dal motore stringa realTimeResults = e.Result.Testo; }

private void SpeechRecognized (object sender, SpeechRecognizedEventArgs e) { risposta /// finale dalla stringa del motore finalAnswer = e.Result.Text; }

Questo è tutto. Se si desidera utilizzare un file wav preregistrato al posto di un microfono, si può usare

_speechRecognitionEngine.SetInputToWaveFile (pathToTargetWavFile);

anziché

_speechRecognitionEngine.SetInputToDefaultAudioDevice();

Ci sono un sacco di opzioni diverse in queste classi e vale la pena esplorare in modo più dettagliato.

http://ellismis.com/2012/03/17/converting-or-transcribing-audio-to-text-using-c-and-net-system-speech/