2012-03-30 58 views
1

我一直试图使用发现的Web应用程序大声朗读文本的程序here(http://www.ispeech.org/text.to.speech .demo.php)。这是一个演示文本到语音转换程序,运行良好,速度相对较快。我想要做的是制作一个Python程序,将文本输入到应用程序,然后输出结果。在这种情况下,结果会很好。 Python有没有办法做到这一点,比如像一个图书馆?如果没有,是否有可能通过其他方式做到这一点?我查看了iSpeech API(发现here),但唯一的问题是有免费使用的数量有限(我相信它是200)。虽然这个程序只是用了几次,但我宁愿能够使用200次以上的服务。另外,如果这种解决方案不切实际,任何人都可以指导我走向另一个选择?聆听Web应用程序的输出

@ AKX我目前正在使用eSpeak,它运作良好。它只是,听起来不太好,很难说有时会说什么。

+0

您的问题是关于如何使用python生成文本到语音 - >文件,或者是关于如何通过Web应用程序传递内容的问题?我不确定要回答的方法。 – jdi 2012-03-30 22:21:53

+0

有两种方法可以实现这一点: 1.如何使用Python生成清晰的语音 或 2.使用Python来流式处理已完成此操作的Web应用程序的输出。 – Xyene 2012-03-30 22:23:11

回答

2

好的。我找到了一个办法,似乎很好。感谢所有帮助过的人!下面是我使用的代码:

from urllib import quote_plus 

def speak(text): 
    import pydshow 
    words = text.split() 
    temp = [] 
    stuff = [] 
    while words: 
     temp.append(words.pop(0)) 
     if len(temp) == 24: 
      stuff.append(' '.join(temp)) 
      temp = [] 
    stuff.append(' '.join(temp)) 
    for i in stuff: 
     pydshow.PlayFileWait('http://api.ispeech.org/api/rest?apikey=8d1e2e5d3909929860aede288d6b974e&format=mp3&action=convert&voice=ukenglishmale&text='+quote_plus(i)) 

if __name__ == '__main__': 
     speak('Hello. This is a text-to speech test.') 

我觉得这是理想的,因为它使用的API,但它使用的是用于演示程序的API密钥。因此,它永远不会耗尽。关键是8d1e2e5d3909929860aede288d6b974e

实际上,你可以在工作中测试这种没有计划,通过键入以下到您的地址栏:

http://api.ispeech.org/api/rest?apikey=8d1e2e5d3909929860aede288d6b974e&format=mp3&action=convert&voice=ukenglishmale&text= 

其次是你想说的文字。您还可以调整语言,在此情况下,将ukenglishmale更改为iSpeech提供的其他内容。例如,ukenglishfemale。这会说同样的文字,但以一种女性化的声音。

注意:Pydshow是我的DirectShow封装。你可以使用你的。

3

如果使用iSpeech不是必需的,有一个体面的(它肯定不是因为美丽的铰接尽可能多的商业解决方案)开放源代码的文本到语音的解决方案可称为eSpeak

它可以从命令行(Python使用subprocess)或作为共享库使用。它似乎也有一个Python wrapper (python-espeak)它。

希望这会有所帮助。

+0

目前正在使用eSpeak,并且效果很好。它只是,听起来不太好,很难说有时会说什么。 – Xyene 2012-04-06 17:59:26

1

您的应用程序的流程是这样的:

  1. 客户端:用户输入文本转换成表格,并提交表单服务器
  2. 服务器的请求:可能是Python或任何语言/框架你要。接收带有文本的http请求。
  3. 服务器:运行纯文本语音转换为纯python库或通过运行一个子进程到一个实用程序,可以生成语音为wav/mp3/aiff /等
  4. 服务器:通过流文件发回HTTP响应MIME类型向客户
  5. 客户端:接收HTTP响应和播放内容

具体有关步骤3的...

我没有上最善于表达的开源演讲任何具体的提醒综合软件可用,但我可以说它没有必须是纯粹的蟒蛇,甚至是蟒蛇。大多数这些软件包都有某种形式的命令行实用程序来获取stdin或文件并生成一个音频文件作为输出。您只需将此实用程序作为子进程启动即可生成该文件,然后将该文件传回您的http响应中。

如果您决定使用现有的通过API(iSpeech)提供文本到语音的Web服务,则步骤3将替换为向iSpeech发出您自己的服务器端http请求,接收响应,并将该响应转发回原始客户端请求,如代理。我想说的好处是无需维护您自己的语音合成解决方案或从开源获得更高的质量......但缺点是您的响应时间可能会稍微延长一些,因为您的服务器具有先制作自己的外部http请求并下载数据。