11

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

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

4

5 回答 5

12

以下是您的一些选择:

于 2010-10-18T11:27:50.083 回答
8

这是一个使用 C# 和 System.Speech 的完整示例

代码可以分为2个主要部分:

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

步骤 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(object sender, SpeechHypothesizedEventArgs e) { ///来自引擎的实时结果 string realTimeResults = e.Result.Text; }

private void SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { ///来自引擎字符串的最终答案 finalAnswer = e.Result.Text; }

而已。如果您想使用预先录制的 .wav 文件而不是麦克风,您可以使用

_speechRecognitionEngine.SetInputToWaveFile(pathToTargetWavFile);

代替

_speechRecognitionEngine.SetInputToDefaultAudioDevice();

这些课程中有很多不同的选项,值得更详细地探索。

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

于 2012-03-17T17:09:48.313 回答
1

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

于 2010-10-18T13:35:50.900 回答
1

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

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

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

于 2012-01-10T23:46:07.533 回答
1

您可以检查Microsoft Speech API。我认为他们提供了一个 SDK,您可以将其用于您的目标。

于 2010-10-18T11:14:09.393 回答