语音/语音到文本[关闭]

Posted

技术标签:

【中文标题】语音/语音到文本[关闭]【英文标题】:Voice/Speech to text [closed] 【发布时间】:2011-06-08 07:51:50 【问题描述】:

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

此外,我还需要一个 API 或库来进行文本转语音。

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

谢谢。

【问题讨论】:

【参考方案1】:

您可以使用 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# Speech Recognition - Is this what the user said?

【讨论】:

刚刚更新了一个链接的答案。 如果您只需要在 Windows Server 上进行语音识别,则不需要 UCS。您可以下载免费的 Microsoft 语音平台 - microsoft.com/downloads/en/…。 我不知道,谢谢你的帖子,看起来很有趣。【参考方案2】:

这是一个使用 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 -= new EventHandler(SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized -= new EventHandler(SpeechHypothesizing);

_speechRecognitionEngine.SpeechRecognized += new EventHandler(SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized += new EventHandler(SpeechHypothesizing);

private void SpeechHypothesizing(对象发送者, SpeechHypothesizedEventArgs e) ///来自引擎的实时结果 字符串 realTimeResults = e.Result.Text;

private void SpeechRecognized(对象发送者,SpeechRecognizedEventArgs e) ///来自引擎字符串的最终答案 finalAnswer = e.结果.文本;

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

_speechRecognitionEngine.SetInputToWaveFile(pathToTargetWavFile);

而不是

_speechRecognitionEngine.SetInputToDefaultAudioDevice();

这些课程中有很多不同的选项,值得更详细地探索。

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

【讨论】:

我们可以将 SpeechRecognitionEngine 用于使用 MONO 框架的 android 应用程序吗??? 不。为此需要一些 Visual Studio。 @bulltorious 不正确。 Mono 是一个适用于 .NET 的 Linux 模拟器,所以是的,它适用于 Mono。 另外:Visual Studio 是一种 IDE,而不是一种编程语言。【参考方案3】:

见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 recognition、getting started with speech recognition and speech synthesis 和 SAPI and Windows 7 Problem。

【讨论】:

【参考方案4】:

I'd like to use C# and .NET, but other languages will suffice. 如果您对C++ 开放Festival,请勾选此项

【讨论】:

【参考方案5】:

每个 Windows 操作系统中都有一个用于 Text2Speach 的内置 DLL。您将在 c:\Programs\Shared Folders\Microsoft Shared\Speech\sapi.dll (sAPI - speach api) 中找到相应的 dll - 我不太确定路径 - 但无论如何您都可以搜索 sapi.dll。

之后你可以使用下面的代码sn -p

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;

【讨论】:

这是Win7 C:\Windows\System32\Speech\Common的路径 Speech to Text... 不是相反。 @RobHay “另外,我需要一个 API 或库来进行文本转语音”,所以我认为我的回答是 - 至少 - 部分正确。【参考方案6】:

对于文本到语音的转换,您必须遵循 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);

【讨论】:

完美运行,这应该是一个可以接受的答案;) 除非它与问题的方向相反;这不是语音到文本,而是显示文本到语音。

以上是关于语音/语音到文本[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

iPhone的语音到文本API? [关闭]

iPhone - 用于文本到语音功能的 API [关闭]

安卓手机怎么关闭 文本转语音选项?

iPhone上的文字转语音[关闭]

是否有接受基于 IPA 的音标的文本转语音软件? [关闭]

如何关闭金立手机的语音播报功能?