谷歌翻译TTS问题

时间:2011-05-20 06:16:10

标签: html5 audio text-to-speech google-translate

我正在测试一个简单的HTML文件,其中包含:

<audio src="http://translate.google.com/translate_tts?tl=en&q=A+simple_text+to+voice+demonstration." controls autoplay>

使用Chrome v11.0.696.68和FF v4.0.1。我正在通过代理服务器,它不起作用。没有播放任何内容,点击播放按钮在Chrome中无效。在FF中它闪烁然后显示一个&#39; X&#39;在控制之上。错误日志不会显示任何内容。

所以我打破了这些步骤:

  1. 在任一浏览器中输入网址

  2. wget -q -U Mozilla -O /tmp/tts.mp3" http://translate.google.com/translate_tts?tl = en&amp; q =欢迎+到+我们的+精彩+文本+至+声音+示范&#34。给我一个在两个浏览器上都能正常运行的文件。

  3. 如果我从本地网络服务器提供此文件,它可以正常工作(即不通过代理服务器)。即src =&#34; http://localhost/tts.mp3"

  4. 我很难过。如果代理是问题,那么wget和地址栏访问不应该工作。如果src是一个URL是问题,那么它不应该从我的本地服务器工作。

    任何线索?建议?

2 个答案:

答案 0 :(得分:4)

这种方式无效的原因很可能是因为translate.google.com限制某些类型的请求以防止服务过载。例如,如果您使用没有“-U Mozilla”用户代理选项的wget,您将获得HTTP 404,因为该服务限制来自wget的默认用户代理字符串的响应。

在您的情况下,看起来发生的事情是,如果请求中包含HTTP Referrer,则translate.google.com将返回HTTP 404。从命令行运行wget时,没有引用者。当您在网页中使用音频标签时,在请求翻译时会提供HTTP Referrer。我刚刚尝试了以下内容并获得了404.

wget --referer="http://foo.com" -U Mozilla -O /tmp/tts.mp3 "http://translate.google.com/translate_tts?tl=en&q=Welcome+to+our+fantastic+text+to+voice+demonstration

但是,如果你取出--referer选项,它就可以了。

答案 1 :(得分:3)

该服务在这里工作(11-NOV-2011),但限制为100个字符。您可以将文本拆分为100个char块,下载每个块的mp3结果,然后加入最终Mp3文件的块。