我正在制作一个需要音频和视觉翻译的语言应用。我曾想过使用谷歌翻译API,但根据this SO post,似乎"解释是谷歌限制了这项服务的使用。"
但是这篇SO帖子Google Text-To-Speech API表示我可以使用tl
和q
参数,例如http://translate.google.com/translate_tts?tl=zh-CN&q=Hello
来返回音频。这给了我一个奇怪的音译,用'" Hello"来说," Ha Low"而不是" Ni Hao"。
用户还声明"它会自动生成一个wav文件,您可以通过HTTP请求轻松获取该文件"。当我GET
使用jsonp
时(由于$.get()
或非jsonp请求已被阻止而需要使用此内容),我收到以下无法读取的错误:
代码:
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是否有标准端点来访问音频文件?如果没有,那么有效的方法是什么?
答案 0 :(得分:0)
这是一个迟到的回应...
我建议使用Jquery(或vanilla JavaScript)来执行此操作,而不是将其放在应用程序的控制器中。您提供的网址很好,但在您提出请求之前now you need to set the Referer
and User-Agent
headers。
您可以使用Jquery.get()从Google的TTS API下载mp3(您必须设置标题!)。然后,您可以data
方法从Jquery返回的#success
中create an HTML5 Audio object进行播放。
Hello
等单字查询的响应大小约为2-3kb,足够小。谷歌的API速度也非常快,因此,结合这两个因素,我根本不担心性能问题。请记住,浏览器也会缓存音频文件,因此任何后续的文字都会悬停在文字的上方。将使用缓存版本,而不是发送另一个请求。