将音频转换为文本

时间:2010-10-18 10:41:45

标签: c# java speech-recognition audio-processing

我只是想知道Java或C#中的库或外部库是否有任何构建,它允许我获取音频文件并解析它并从中提取文本。

我需要申请这样做,但我不知道从哪里可以开始。

5 个答案:

答案 0 :(得分:10)

答案 1 :(得分:7)

以下是使用C#和System.Speech

的完整示例

代码可分为两个主要部分:

配置SpeechRecognitionEngine对象(及其必需元素) 处理SpeechRecognized和SpeechHypothesized事件。

第1步:配置SpeechRecognitionEngine

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

此时,您的对象已准备好开始从麦克风转录音频。但是,您需要处理某些事件,以便实际访问结果。

第2步:处理SpeechRecognitionEngine事件

  

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

     

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

     

private void SpeechHypothesizing(对象发送者,   SpeechHypothesizedEventArgs e){   ///来自引擎的实时结果   string realTimeResults = e.Result.Text; }

     

private void 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/

答案 2 :(得分:1)

对于Java,似乎有一个来自Sun的解决方案:javax.speech.recognition

答案 3 :(得分:1)

您可以使用SoX(声音处理程序的瑞士军刀)将音频文件转换为文本文件,其数值对应于声音频率/音量。

我已经为之前的项目做过,但不知道确切的命令选项。

以下是该项目的链接:http://sox.sourceforge.net/Main/HomePage

答案 4 :(得分:0)

您可以查看Microsoft Speech API。我认为他们提供的SDK可以用于您的目标。