2010-10-18 95 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/