我问了这个问题on SuperUser,但它被置若罔闻。希望我能在这里获得更多的观众。
我正在寻找一种低成本(或免费)解决方案,例如ScriptVox只有更好的引擎。也就是说,读入脚本并将字符分配给语音。我已经阅读了帖子here,但即使是那些我必须连接wav文件的帖子。并不是我不喜欢Audacity,而是耗费时间。我正在考虑写自己的,但我确信必须有一个解决方案。有什么建议吗?
答案 0 :(得分:10)
我会使用微软的文字转语音引擎。他们有一个简单的例子来说明如何正确地找到你想要的东西:
http://msdn.microsoft.com/en-us/library/ms717065(v=vs.85).aspx
使用该示例代码,您可以说一些文本并将其转储到WAV文件中。从那里,如果你需要转换为MP3等格式,你可以使用FFMPEG。
答案 1 :(得分:5)
Brad's answer非常棒,因为它包含了您正在寻找的内容。 然而,它缺少一个你在问题勘误中表达了偏好的基础:C#中的一个实现。
Here's a full tutorial可以访问托管代码中的Speech API。充分归功于Blake Niemyjski和微软的相应团队,这里有一些重要的部分,因为原始文章的链接已经死了,这似乎是直接从微软借来的:
以下链接(给计算机发出声音)将引导您进入 Microsoft网站将向您展示如何创建项目并获取 基本的文本到语音应用程序在VB .Net或c#中启动和运行 时间!
SAPI
SAPI是一种语音API,可让应用程序访问语音 识别和文本到语音(TTS)引擎。本文重点介绍 TTS。对于TTS,SAPI将文本作为输入并使用TTS引擎 将该文本输出为语音。这与使用的技术相同 Windows辅助功能工具,讲述者。每个版本的Windows 因为XP附带了SAPI和英语TTS引擎。
TTS让用户的耳朵开始工作。它允许应用程序发送 在不需要用户的眼睛或手的情况下向用户提供信息。 这是一个非常强大的输出选项,通常不会被使用 的个人电脑。
在托管应用程序中使用TTS需要三个步骤:
- 创建互操作DLL
醇>由于SAPI是一个COM组件,因此需要一个互操作DLL来使用它 托管应用。要创建它,请在Visual Studio中打开该项目。 选择Project菜单,然后单击Add Reference。选择COM选项卡, 在列表中选择“Microsoft语音对象库”,然后单击“确定”。 这些步骤将此引用添加到您的项目并创建一个 Interop.SpeechLib.dll与可执行文件位于同一文件夹中。这个 互操作DLL必须始终与.exe工作在同一文件夹中 正确。
- 引用interop命名空间
醇>在您的应用程序中包含此命名空间。在C#中,添加“using SpeechLib;“;在VB中,添加”Imports SpeechLib“。
- 致电Speak()
醇>创建一个SpVoice对象并调用Speak():
Visual C#
SpVoice voice = new SpVoice(); voice.Speak("Hello World!", SpeechVoiceSpeakFlags.SVSFDefault);
Visual Basic
voice = New SpVoice voice.Speak("Hello World!", SpeechVoiceSpeakFlags.SVSFDefault)
我觉得布拉德的回答让我在这里找到了正确的解决方案(因此,他比我更值得信任),但这应该是你失踪的最后一件事。您现在应该能够从托管代码中的C++ solution复制WAV文件,并从那里transcode复制到您想要的格式。
答案 2 :(得分:3)
如果可以使用程序访问互联网,则可以使用iSpeech。
您可以使用他们的API,但不幸的是,每天限制使用200次。
他们的API还允许在查询后附加format=(wav|mp3)
,允许您以所需格式获取声音。
答案 3 :(得分:1)
http://en.wikipedia.org/wiki/Comparison_of_speech_synthesizers
这就是我所拥有的一切。
Google翻译使用eSpeak http://support.google.com/translate/