2011-01-13 163 views
15

我需要一个将通过麦克风将语音/语音转换为文本(字符串)的API或库(最好是免费的)。语音/语音到文本

此外,我将需要一个可以进行文本到语音转换的API或库。

我想使用C#和.NET,但其他语言就足够了。

谢谢。

回答

0

I'd like to use C# and .NET, but other languages will suffice.检查这一点,如果你是开放的C++Festival

0

有一个内置的DLL在每一个Windows操作系统的Text2Speach。你会在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; 
+0

这是Win7的C中的路径:\ WINDOWS \ SYSTEM32 \语音\共同 – 2011-01-13 07:36:23

+0

语音到文本...不是周围的其他方式。 – 2011-09-12 07:32:51

+1

@RobHay“此外,我需要一个API或库,可以做文本到语音”,所以我想我的答案是 - 至少 - 部分正确。 – 2012-07-28 12:12:07

13

您可以使用CMU狮身人面像,因为它是相当开放的,可扩展的解决方案,我认为它可以在客户端和服务器端使用:

http://cmusphinx.sourceforge.net/

如果你正在寻找一个微软的桌面解决方案,那么你可以使用SAPI:

http://msdn.microsoft.com/en-us/magazine/cc163663.aspx

在服务器端,您可以使用Microsoft统一通信,但不考虑发牌,以及:

http://www.microsoft.com/uc/en/gb/default.aspx

更新:

此线程也有一些很好的参考:

C# Speech Recognition - Is this what the user said?

1

请参阅Using c++ to call and use Windows Speech Recognition

其中说:

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上获得。语音引擎是免费下载的。

很多早期的问题都解决了这个问题。例如参见Prototype based on speech recognitiongetting started with speech recognition and speech synthesisSAPI and Windows 7 Problem

1

对于文本到语音转换,你必须遵循三个步骤:

1.增加System.Speech参考。

2.Add Headers:

using System.Speech;

using System.Speech.Synthesis;

3.添加以下代码,其中textBox1是文本框的默认名称。

  SpeechSynthesizer speaker = new SpeechSynthesizer(); 
      speaker.Rate = 1; 
      speaker.Volume = 100; 
      speaker.Speak(textBox1.Text); 
9

下面是使用C#和System.Speech用于从语音转换成文本

的代码可以被划分为两个主要部分的完整例如:

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

步骤1:配置SpeechRecognitionEngine

_speechRecognitionEngine = new SpeechRecognitionEngine(); 
_speechRecognitionEngine.SetInputToDefaultAudioDevice(); 
_dictationGrammar = new DictationGrammar(); 
_speechRecognitionEngine.LoadGrammar(_dictationGrammar); 
_speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); 

在这一点上你的对象是准备开始从麦克风录制音频。您需要处理一些事件,以便实际访问结果。

步骤2:处理所述SpeechRecognitionEngine活动

_speechRecognitionEngine.SpeechRecognized - =新的EventHandler(SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized - = new EventHandler(SpeechHypothesizing);

_speechRecognitionEngine.SpeechRecognized + = new EventHandler(SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized + = new EventHandler(SpeechHypothesizing);从发动机 串realTimeResults = e.Result.Text

私人无效SpeechHypothesizing(对象发件人, SpeechHypothesizedEventArgs E){ ///实时结果; }

私人无效SpeechRecognized(对象发件人,SpeechRecognizedEventArgs e)从发动机串finalAnswer = e.Result.Text { ///最终答案; }

就是这样。如果你想使用一个预先录制的.wav文件,而不是一个麦克风,你可以使用

_speechRecognitionEngine.SetInputToWaveFile(pathToTargetWavFile);

,而不是

_speechRecognitionEngine。SetInputToDefaultAudioDevice();

在这些类中有一堆不同的选项,它们值得探索更多细节。

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