cha*_*har 18 .net c# speech-recognition speech-to-text voice-recognition
我需要一个API或库(最好是免费的),它将通过麦克风将语音/语音转换为文本(字符串).
另外,我需要一个可以进行文本到语音转换的API或库.
我想使用C#和.NET,但其他语言就足够了.
谢谢.
Sha*_*zim 15
您可以使用CMU Sphinx,因为它是非常开放和可扩展的解决方案,我认为它可以在客户端和服务器端使用:
http://cmusphinx.sourceforge.net/
如果您正在寻找Microsoft桌面解决方案,那么您可以使用SAPI:
http://msdn.microsoft.com/en-us/magazine/cc163663.aspx
在服务器端,您可以使用Microsoft统一通信,但也要考虑许可:
http://www.microsoft.com/uc/en/gb/default.aspx
更新:
这个帖子也有一些很好的参考:
bul*_*ous 11
以下是使用C#和System.Speech从语音转换为文本的完整示例
代码可分为两个主要部分:
配置处理SpeechRecognized和SpeechHypothesized事件的SpeechRecognitionEngine对象(及其所需元素).
第1步:配置SpeechRecognitionEngine
_speechRecognitionEngine = new SpeechRecognitionEngine();
_speechRecognitionEngine.SetInputToDefaultAudioDevice();
_dictationGrammar = new DictationGrammar();
_speechRecognitionEngine.LoadGrammar(_dictationGrammar);
_speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
Run Code Online (Sandbox Code Playgroud)
此时,您的对象已准备好开始从麦克风转录音频.您需要处理一些事件,以便实际访问结果.
第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){///来自引擎字符串的实时结果realTimeResults = e.Result.Text; }
private void SpeechRecognized(object sender,SpeechRecognizedEventArgs e){///来自引擎字符串finalAnswer = e.Result.Text的最终答案; }
而已.如果您想使用预先录制的.wav文件而不是麦克风,则可以使用
_speechRecognitionEngine.SetInputToWaveFile(pathToTargetWavFile);
代替
_speechRecognitionEngine.SetInputToDefaultAudioDevice();
这些课程中有许多不同的选项,值得更详细地探讨.