2010-10-18 127 views
7

我只想知道在Java或C#中的庫或外部庫中是否存在任何內容,這些庫允許我獲取音頻文件並解析它並從中提取文本。將音頻轉換爲文本

我需要做一個應用程序來這樣做,但我不知道從哪裏開始。

+0

絕對不是內置的。我認爲您希望將您的問題擴展到可以從Java或C#使用的庫。 – Thilo 2010-10-18 10:46:23

+0

感謝Thilo先生,好吧,如果你知道任何C#或Java的外部庫可以做我想做的事情,我將不勝感激,如果你告訴我,在此先感謝 – 2010-10-18 10:56:54

+0

這可能有助於http://java.sun.com/ products/java-media/speech/reference/codesamples/index.html – 2010-10-18 11:02:18

回答

1

您可以使用SoX(聲音處理程序的瑞士軍刀)將音頻文件轉換爲具有對應於聲音頻率/音量的數值的文本文件。

我已經完成了以前的項目,但不知道確切的命令選項。

下面是該項目的鏈接:http://sox.sourceforge.net/Main/HomePage

7

下面是使用C#和System.Speech一個完整的例子

的代碼可以被分成2個主要部分:

配置SpeechRecognitionEngine對象(及其必需的元素) 處理SpeechRecognized和SpeechHypothesized事件。

步驟1:配置SpeechRecognitionEngine

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

在這一點上你的對象是準備開始從麥克風錄製音頻。您需要處理一些事件,以便實際訪問結果。

步驟2:處理所述SpeechRecognitionEngine活動

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

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

私人無效SpeechHypothesizing(對象發件人, SpeechHypothesizedEventArgs E){ ///實時結果從發動機 串realTimeResults = e.Result。文本; }

私人無效SpeechRecognized(對象發件人,SpeechRecognizedEventArgs e)從發動機串finalAnswer = e.Result.Text { ///最終答案; }

就是這樣。如果你想使用一個預先錄製的.wav文件,而不是一個麥克風,你可以使用

_speechRecognitionEngine.SetInputToWaveFile(pathToTargetWavFile);

代替

_speechRecognitionEngine.SetInputToDefaultAudioDevice();

在這些類中有一堆不同的選項,它們值得探索更多細節。

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