我在 SuperUser 上问过这个问题,但它被置若罔闻。希望我能在这里得到更多的观众。
我正在寻找像ScriptVox这样的低成本(或免费)解决方案,只有更好的引擎。也就是说,阅读脚本并将字符分配给语音。我在这里读过这篇文章,但即使有那些我也必须连接 wav 文件。不是我不喜欢 Audacity,而是它很耗时。我正在考虑编写自己的代码,但我确信必须有一个解决方案。有什么建议么?
我在 SuperUser 上问过这个问题,但它被置若罔闻。希望我能在这里得到更多的观众。
我正在寻找像ScriptVox这样的低成本(或免费)解决方案,只有更好的引擎。也就是说,阅读脚本并将字符分配给语音。我在这里读过这篇文章,但即使有那些我也必须连接 wav 文件。不是我不喜欢 Audacity,而是它很耗时。我正在考虑编写自己的代码,但我确信必须有一个解决方案。有什么建议么?
我会使用微软的文字转语音引擎。他们有一个简单的例子来说明如何做你正在寻找的东西:
http://msdn.microsoft.com/en-us/library/ms717065(v=vs.85).aspx
使用该示例代码,您可以说出一些文本并将其转储到 WAV 文件中。从那里,如果您需要转换为 MP3 等格式,您可以使用 FFMPEG。
布拉德的答案非常棒,因为它包含您正在寻找的内容。但是,它缺少您在问题勘误表中表达的偏好的一个基础:C# 中的实现。
这是获取托管代码中语音 API 访问权限的完整教程。完全归功于 Blake Niemyjski 和 Microsoft 的相关团队,这里有一些突出的部分,因为原始文章的链接已经失效,这似乎是直接从 Microsoft 借来的:
以下链接(给计算机一个声音)将引导您到一个 Microsoft 站点,该站点将向您展示如何创建一个项目,并立即在 VB .Net 或 c# 中启动和运行基本的文本到语音应用程序!
SAPI
SAPI 是一种语音 API,可让应用程序访问语音识别和文本转语音 (TTS) 引擎。本文重点介绍 TTS。对于 TTS,SAPI 将文本作为输入,并使用 TTS 引擎将该文本作为语音输出。这与 Windows 辅助工具“讲述人”使用的技术相同。自 XP 以来的每个 Windows 版本都附带 SAPI 和英文 TTS 引擎。
TTS 让用户的耳朵发挥作用。它允许应用程序向用户发送信息,而无需用户的眼睛或手。这是一个非常强大的输出选项,在 PC 上不经常使用。
在托管应用程序中使用 TTS 需要三个步骤:
- 创建互操作 DLL
由于 SAPI 是一个 COM 组件,因此需要一个互操作 DLL 才能从托管应用程序中使用它。要创建它,请在 Visual Studio 中打开项目。选择项目菜单并单击添加引用。选择 COM 选项卡,在列表中选择“Microsoft Speech Object Library”,然后单击“确定”。这些步骤将此引用添加到您的项目,并在与您的可执行文件相同的文件夹中创建一个 Interop.SpeechLib.dll。此互操作 DLL 必须始终与您的 .exe 位于同一文件夹中才能正常工作。
- 引用互操作命名空间
在您的应用程序中包含此命名空间。在 C# 中,添加“使用 SpeechLib;”;i 在 VB 中,添加“导入 SpeechLib”。
- 调用说话()
创建一个 SpVoice 对象并调用 Speak():
视觉 C#
SpVoice voice = new SpVoice(); voice.Speak("Hello World!", SpeechVoiceSpeakFlags.SVSFDefault);
视觉基础
voice = New SpVoice voice.Speak("Hello World!", SpeechVoiceSpeakFlags.SVSFDefault)
我觉得布拉德的回答让我在这里找到了正确的解决方案(因此,他比我更值得称赞),但这应该是你遗漏的最后一块。您现在应该能够在托管代码中复制从C++ 解决方案写入的 WAV 文件,并从那里转码为您想要的格式。
http://en.wikipedia.org/wiki/Comparison_of_speech_synthesizers
这就是我所拥有的。
谷歌翻译使用 eSpeak http://support.google.com/translate/