HTML5 语音输入和谷歌翻译文本到语音,Chrome 中的问题

Posted

技术标签:

【中文标题】HTML5 语音输入和谷歌翻译文本到语音,Chrome 中的问题【英文标题】:HTML5 speech input and Google Translate text-to-speech, problem in Chrome 【发布时间】:2011-05-18 20:52:02 【问题描述】:

我正在创建一个语音/文本备忘录 Web 应用程序。 这里:http://gustavstromberg.se/sandbox/html5/localstorage/看它的源码(很短,大部分都是css)

这是:

据我所知,语音识别仅适用于 chrome。 本地存储,将笔记存储为文本。 谷歌翻译文本到语音。

一切正常,但在不同的浏览器中。语音输入完美,仅在 chrome 中。文字转语音可在 safari 中使用。

要将备忘录动态加载到音频中>我使用的源元素:

$("#spokenmemory").html("<source src='http://translate.google.com/translate_tts?tl=en&q="+localStorage['memory']+"' />");

(localStorage['memory'] 包含我存储的文本备忘录)

要使用我使用的 google 文本转语音功能播放我最近保存的备忘录:

$("#listenplay").click(function()
    $("#spokenmemory")[0].play();
);

(spokenmemory 是我的音频标签的 id 属性)

这无法在 chrome 中播放,但如果我在单独的浏览器选项卡中访问翻译链接(例如:http://translate.google.com/translate_tts?tl=en&q=Japan,并且我的文本备忘录是“日本”),然后返回我的网站并重新加载页面(保存相同的文本备忘录“日本”),播放正常。多么奇怪,多么令人讨厌!

有人知道这种奇怪的行为吗?

【问题讨论】:

【参考方案1】:

这是因为 google 限制了某些类型的请求,以防止服务过载。因此,当您的浏览器尝试获取音频文件时,它不会被获取。一旦您访问翻译链接,音频文件就会被提取并被缓存,这就是播放工作的原因(假设文本备忘录相同)。这是我的观察,但我不太确定。

当我使用 CURL 获取文件时,这是我得到的响应:


403. 这是一个错误。

您的客户端无权从此服务器获取 URL /translate_tts?q=hello


【讨论】:

【参考方案2】:

我很努力地尝试了古斯塔夫,这是我经过一番研究和测试后发现的。

Chrome 似乎无法流式传输 mp3(谷歌返回的格式)。我能想象的唯一解决方案是将文件(cURL?)发送到您的服务器,然后将其呈现给用户。我假设当 Google 发布官方 API 时,也会有某种格式选项。

http://code.google.com/p/chromium/issues/detail?id=45152

http://www.trygve-lie.com/blog/entry/html_5_audio_element_and(是的,播放按钮与背景颜色相同,时髦)

【讨论】:

以上是关于HTML5 语音输入和谷歌翻译文本到语音,Chrome 中的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在网络上使用谷歌语音到文本

html HTML5音频+语音到文本...一旦启用麦克风和语音识别,请说“facebook”,“hack”或“what is my name”

如何实现HTML5语音识别功能

如何从谷歌文本到 PHP 中的语音 API 中的 URL 参数获取性别声音?

如何将谷歌翻译的语音保存至电脑中

这是我第同样三次问了,请看好是文字直接转换语音,不是文本转换语音(不用root没有病毒没有带广告直