【问题标题】:Text to Speech (TTS) software for Scripts WAV or MP3 ouput用于脚本 WAV 或 MP3 输出的文本到语音 (TTS) 软件
【发布时间】:2012-04-20 06:47:45
【问题描述】:

我问了这个问题on SuperUser,但它被置若罔闻。希望我能在这里吸引更多的观众。

我正在寻找像ScriptVox 这样的低成本(或免费)解决方案,只有更好的引擎。也就是说,阅读脚本并将字符分配给语音。我已经阅读了here 的帖子,但即使是那些我也必须连接 wav 文件。不是我不喜欢 Audacity,而是它很耗时。我正在考虑编写自己的代码,但我确信必须有一个解决方案。有什么建议吗?

【问题讨论】:

  • 你知道哪些编程语言?
  • 我希望找到已经写好的东西。我是一个代码猴子,自从 BASIC 有行号以来就一直在编程。然而,C# 是我开发的报酬。
  • 查看我的帖子。有一个可以轻松适应 .NET 的 VB 解决方案。如果你想要一些已经写好的东西,那么你会想去别处看看。 Stack Overflow 用于编程问题。

标签: audio windows-7 text-to-speech


【解决方案1】:

我会使用微软的文字转语音引擎。他们有一个简单的例子来说明如何做你正在寻找的东西:

http://msdn.microsoft.com/en-us/library/ms717065(v=vs.85).aspx

使用该示例代码,您可以说出一些文本并将其转储到 WAV 文件中。从那里,如果您需要转换为 MP3 等格式,您可以使用 FFMPEG。

【讨论】:

    【解决方案2】:

    Brad's answer 非常棒,因为它包含您正在寻找的内容。 但是,它缺少您在问题勘误表中表达的偏好的一个基础:C# 中的实现。

    Here's a full tutorial 以访问托管代码中的语音 API。完全归功于 Blake Niemyjski 和 Microsoft 的相关团队,以下是重点,因为指向原始文章的链接已失效,这似乎是直接从 Microsoft 借来的:

    以下链接(给计算机一个声音)将引导您访问 Microsoft 网站将向您展示如何创建项目并获得 在 VB .Net 或 c# 中启动并运行基本文本到语音应用程序 时间!

    SAPI

    SAPI 是让应用程序访问语音的语音 API 识别和文本到语音(TTS)引擎。本文着重于 TTS。对于 TTS,SAPI 将文本作为输入并使用 TTS 引擎 将该文本作为语音输出。这与使用的技术相同 Windows 辅助工具,讲述人。每个版本的 Windows 因为 XP 附带了 SAPI 和英文 TTS 引擎。

    TTS 让用户的耳朵发挥作用。它允许应用程序发送 无需用户的眼睛或手即可向用户提供信息。 这是一个非常强大的输出选项,在 个人电脑。

    在托管应用程序中使用 TTS 需要三个步骤:

    1. 创建互操作 DLL

    由于 SAPI 是一个 COM 组件,因此需要一个互操作 DLL 才能从 托管应用程序。要创建它,请在 Visual Studio 中打开项目。 选择项目菜单并单击添加引用。选择 COM 选项卡, 在列表中选择“Microsoft Speech Object Library”,然后单击“确定”。 这些步骤将此引用添加到您的项目并创建一个 Interop.SpeechLib.dll 与可执行文件位于同一文件夹中。这 互操作 DLL 必须始终与您的 .exe 位于同一文件夹中才能正常工作 正确。

    1. 引用互操作命名空间

    在您的应用程序中包含此命名空间。在 C# 中,添加“使用 SpeechLib;"; i在VB中,添加“导入SpeechLib”。

    1. 调用 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)
    

    我觉得布拉德的回答让我在这里找到了正确的解决方案(因此,他比我更值得称赞),但这应该是你遗漏的最后一块。您现在应该能够将 WAV 文件写入从托管代码中的 C++ solution 复制,然后从那里复制 transcode 到您想要的格式。

    【讨论】:

      【解决方案3】:

      如果让程序访问互联网是可以接受的,那么您可以使用iSpeech

      您可以使用他们的API,但不幸的是,每天只能使用 200 次。

      他们的 API 还允许在查询后附加 format=(wav|mp3),让您以所需的两种格式获取声音。

      【讨论】:

      • C# 可以通过 COM 访问 DirectShow 或使用另一个 .NET 库。
      • 因为它的完整性而选择的答案,它对我来说是独一无二的(我知道微软的文本到语音引擎)
      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-29
        • 1970-01-01
        • 2010-12-09
        • 1970-01-01
        • 2013-01-18
        • 2019-05-13
        • 1970-01-01
        相关资源
        最近更新 更多