语音/语音到文本
我需要一个API或库(最好是免费的),它将通过麦克风将语音/语音转换为文本(字符串)。
另外,我需要一个可以进行文本到语音转换的API或库。
我想使用C#和.NET,但其他语言就足够了。
谢谢。
您可以使用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
更新:
这个post也有一些很好的参考:
C#语音识别 – 这是用户所说的吗?
以下是使用C#和System.Speech从语音转换为文本的完整示例
代码可分为两个主要部分:
配置处理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){///来自引擎字符串的实时结果realTimeResults = e.Result.Text; }
private void SpeechRecognized(object sender,SpeechRecognizedEventArgs e){///来自引擎字符串finalAnswer = e.Result.Text的最终答案; }
而已。 如果您想使用预先录制的.wav文件而不是麦克风,则可以使用
_speechRecognitionEngine.SetInputToWaveFile(pathToTargetWavFile);
代替
_speechRecognitionEngine.SetInputToDefaultAudioDevice();
这些课程中有许多不同的选项,值得更详细地探讨。
请参阅使用c ++调用和使用Windows语音识别
哪个说:
Microsoft为Windows的客户端和服务器版本提供语音识别引擎。 两者都可以用C ++或.NET语言编程。 用C ++编程的传统API称为SAPI。 客户端和服务器语音的.NET框架名称是System.Speech和Microsoft.Speech。
SAPI文档 – http://msdn.microsoft.com/en-us/library/ms723627(VS.85).aspx
用于客户端识别的.NET命名空间是System.Speech – http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx 。 Windows Vista和7包括语音引擎。
用于服务器识别的.NET命名空间是Microsoft.Speech,10.2版本的完整SDK可从http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-获取。 90a294a5c9a4 。 语音引擎是免费下载的。
很多早期的问题已经解决了这个问题。 请参阅基于语音识别的原型 ,语音识别和语音合成入门 ,以及SAPI和Windows 7问题的示例。
对于文本到语音转换,您必须遵循3个步骤:
1.添加System.Speech参考。
2.添加标题:
使用System.Speech;
使用System.Speech.Synthesis;
3.添加以下代码,其中textBox1是文本框的默认名称。
SpeechSynthesizer speaker = new SpeechSynthesizer(); speaker.Rate = 1; speaker.Volume = 100; speaker.Speak(textBox1.Text);
I'd like to use C# and .NET, but other languages will suffice.
如果您对C++
Festival开放,请检查此项
每个Windows操作系统中都有一个用于Text2Speach的内置DLL。 你会在c:\ Programs \ Shared Folders \ Microsoft Shared \ Speech \ sapi.dll(sAPI – speach api)中找到相应的dll – 我不太确定路径 – 但无论如何你可以搜索sapi.dll。
之后,您可以使用以下代码段
SpVoice oVoice = new SpVoice(); oVoice.Voice = oVoice.GetVoices("","").Item(0); // 0 indicating what kind of speaker you want oVoice.Volume = 50; oVoice.Speak("hello world", SpeechVoiceSpeakFlags.SVSFDefault); oVoice = null;