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”