我需要一个 API 或库(最好是免费的),它将通过麦克风将语音/语音转换为文本(字符串)。
此外,我将需要一个 API 或库来进行文本到语音的转换。
我想使用 C# 和 .NET,但其他语言就足够了。
谢谢。
我需要一个 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
更新:
这个线程也有一些很好的参考:
这是一个使用 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 为 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 问题。
每个 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;
对于文本到语音的转换,您必须遵循 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++
音乐节开放,请勾选此项