我正在尝试使用 C# 语言设计一个文本编辑器,并为普通文件功能实现语音识别,这是否可以实现。如果我重复之前提出的问题,我感到非常抱歉。我只想知道是否有办法使用 C# 将语音转换为文本。你的帮助真的很有价值。等待回复。提前致谢。
5 回答
您可以使用尝试 SharpSphinx AC# 版本的 Sphinx-4 http://sourceforge.net/p/cmusphinx/discussion/sphinx4-sightings/thread/5953c635/?limit=50
这是一个使用 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();
这些课程中有很多不同的选项,值得更详细地探索。
如果我没记错的话,Microsoft Speech SDK支持语音转文本。
然后是LumenVox 语音引擎。
还有iSpeech API,它可以作为网络服务用于语音识别。