我只是想知道Java或C#中的库或外部库是否有任何构建,它允许我获取音频文件并解析它并从中提取文本。
我需要申请这样做,但我不知道从哪里可以开始。
答案 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();
这些课程中有许多不同的选项,值得更详细地探讨。
答案 2 :(得分:1)
对于Java,似乎有一个来自Sun的解决方案:javax.speech.recognition
答案 3 :(得分:1)
您可以使用SoX(声音处理程序的瑞士军刀)将音频文件转换为文本文件,其数值对应于声音频率/音量。
我已经为之前的项目做过,但不知道确切的命令选项。
以下是该项目的链接:http://sox.sourceforge.net/Main/HomePage
答案 4 :(得分:0)
您可以查看Microsoft Speech API。我认为他们提供的SDK可以用于您的目标。