用于脚本WAV或MP3输出的文本到语音(TTS)软件

时间:2012-04-06 17:39:43

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

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

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

4 个答案:

答案 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需要三个步骤:

     
      
  1. 创建互操作DLL
  2.         

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

         
        
    1. 引用interop命名空间
    2.         

      在您的应用程序中包含此命名空间。在C#中,添加“using   SpeechLib;“;在VB中,添加”Imports SpeechLib“。

           
          
      1. 致电Speak()
      2.         

        创建一个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)