Google Translate API文字转语音

时间:2015-06-01 23:30:56

标签: javascript api audio google-api

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

但是这篇SO帖子Google Text-To-Speech API表示我可以使用tlq参数,例如http://translate.google.com/translate_tts?tl=zh-CN&q=Hello来返回音频。这给了我一个奇怪的音译,用'" Hello"来说," Ha Low"而不是" Ni Hao"。

用户还声明"它会自动生成一个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是否有标准端点来访问音频文件?如果没有,那么有效的方法是什么?

1 个答案:

答案 0 :(得分:0)

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

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

您可以使用Jquery.get()从Google的TTS API下载mp3(您必须设置标题!)。然后,您可以data方法从Jquery返回的#successcreate an HTML5 Audio object进行播放。

Hello等单字查询的响应大小约为2-3kb,足够小。谷歌的API速度也非常快,因此,结合这两个因素,我根本不担心性能问题。请记住,浏览器也会缓存音频文件,因此任何后续的文字都会悬停在文字的上方。将使用缓存版本,而不是发送另一个请求。