javascript - Google Translate API 文本转语音

标签 javascript api audio google-api

我正在制作一个需要音频和视觉翻译的语言应用程序。我想过使用Google Translate API,但是根据this SO post ,似乎是“解释是谷歌限制了这项服务的使用”。

但是这个帖子,Google Text-To-Speech API ,说我可以使用 tlq 参数,例如 http://translate.google.com/translate_tts?tl=zh-CN&q=Hello 返回音频。这给了我一个奇怪的中文“Hello”音译,它是“Ha Low”而不是“Nihao”。

用户还表示“它将自动生成一个 wav 文件,您可以通过 HTTP 请求轻松获取该文件”。当我 GET 使用 jsonp (需要使用它,因为 $.get() 或非 jsonp 请求已被阻止)时,我得到以下内容无法读取的错误:

enter image description here

代码:

        var theApp = angular.module('myApp', []);
        theApp.controller('APICtrl', ['$scope', '$http',
            function($scope, $http) {
                var httpRequest = "http://translate.google.com/translate_tts?tl=" + "zh-CN" + "&q=" + "Hello";
                $http.jsonp(httpRequest) 
                    .success(function(data) {
                        console.log(data);
                    }
                );
            }
        ]);

所以我的问题是...Google 翻译 API 是否有一个标准端点来访问音频文件?如果没有,有什么好的方法可以做到这一点?

最佳答案

这是一个迟到的回复...

我建议使用 Jquery(或普通 JavaScript)来执行此操作,而不是将其放入应用程序的 Controller 中。您提供的网址很好,但是 now you need to set the Referer and User-Agent headers在您提出请求之前。

您可以使用Jquery.get()从 Google 的 TTS API 下载 mp3(您必须设置 header !)。然后,您可以create an HTML5 Audio object从 Jquery 在 #success 方法中返回的 data 中提取出来,然后播放它。

Hello 这样的单字查询的响应大小约为 2-3kb,足够小了。 Google 的 API 也非常快,因此将这两个因素结合起来,我根本不用担心性能。请记住,浏览器还将缓存音频文件,因此任何后续的“将鼠标悬停在单词上”都将使用缓存的版本,并且不会发送另一个请求。

关于javascript - Google Translate API 文本转语音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30585006/

相关文章:

javascript - 将参数传入另一个函数

javascript - 在 $(window).resize 上分隔 div

javascript - 使用jsPDF在服务器端保存pdf

javascript - 在 Google map 上标记位置

api - 有没有办法通过javascript在平板电脑上获得压力敏感度

javascript - 单击时切换音频?

java - javafx将无法找到我的.wav或.mp3文件

audio - ffmpeg,如何连接两个流,一个有音频,一个没有音频

javascript - 为 0 到 999 之间的数字或无输入制定 Vuetify 规则

http - 处理 HTTP 请求和响应