如何在新的V2 API中使用Google Translate TTS?

时间:2016-01-25 20:44:52

标签: text-to-speech google-translate

我曾经使用此网址调用Google Translate TTS下载音频文件: http://translate.google.com/translate_tts?tl=en&q=Hello+world

然而谷歌改变了工作方式,因此我无法再下载音频文件。 我已经注册了Google Translate API V2的免费试用版,但无法找到如何获取TTS音频文件。

有什么想法吗?

6 个答案:

答案 0 :(得分:11)

答案 1 :(得分:3)

文字转语音始终是一种“非官方”API,现在受到验证码保护以防止滥用。它从未作为Translate API的一部分进行宣传,目前Translate V2 API中没有TTS功能​​,付费或其他。

以下groups thread还有更多背景信息已经持续了一段时间。

答案 2 :(得分:2)

答案 3 :(得分:1)

我偶然发现了这个线程,并想提及@Alexandre Andrade,主要是因为他没有提交任何代码。

我是在react应用程序中完成的,但是相同的步骤适用于普通的Web项目。

我确实将this document添加到了我的头public / index.html,

<head>
...
  <meta name="referrer" content="no-referrer">
...
</head>

然后在我的组件中添加音频标签:

Javascript:

const playTTS = (text, lang) => {
   // Get the audio element
   const audioEl = document.getElementById('tts-audio');

   const url= `https://translate.google.com/translate_tts?ie=UTF-8&tl=${lang}&client=tw-ob&q=${text}`;

   // add the sound to the audio element
   audioEl.src = url;

   //For auto playing the sound
   audioEl.play();
};

html

...
<audio controls id="tts-audio"/>
...

然后,只需将函数与您的某些生命周期方法挂钩即可。由于我在react挂钩中编写了react代码,因此我在其中一个挂钩中添加了函数调用,以在加载组件时对其进行初始化。 (否则它将位于componentDidMount()函数中。)

希望这可以帮助任何人!

答案 4 :(得分:0)

这里是那些拼命尝试以HTML音频形式播放Google TTS的人:让我为您节省几个小时的时间,并告诉您如何做

假设我们有此链接: https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=en&q=I+love+coffee

如果您尝试通过给定的链接并使用<audio><iframe>,第三方库或Java脚本播放此音频...

var audio = new Audio('https://translate.google.com/translate_tts...'); audio.play();

...然后,您很快就会发现,由于引发错误404 ,上述方法均无效。

解决方案

显然,播放此TTS通用音频的唯一可能方法是利用包装在自定义<embed>中的<iframe>标签并为链接赋予唯一的版本号(这很重要,因为浏览器会进行缓存出于某种原因阻止音频播放)。

以下是我们示例的解决方案:(假设您有iframe#ttsiframe)

function playTTS(lang,sentence) {
    //get the iframe
    var iFrame = document.getElementById('ttsiframe');

    //remove its sandbox property
    iFrame.removeAttribute('sandbox');

    //this is your reference variable for the iframe body and head tag
    var iFrameBody;

    //get the body
    if (iFrame.contentDocument) { // FF
        iFrameBody = iFrame.contentDocument.getElementsByTagName('body')[0];
        iFrameHead = iFrame.contentDocument.getElementsByTagName('head')[0];
    }
    else if (iFrame.contentWindow) { // IE
        iFrameBody = iFrame.contentWindow.document.getElementsByTagName('body')[0];
        iFrameHead = iFrame.contentWindow.document.getElementsByTagName('head')[0];
    }
    else {
        iFrameBody = iFrame.contentDocument.body;
        iFrameHead = iFrame.contentDocument.head;
    }

    //generate link to Google Translate TTS using arguments (pay attention to random version number at the end)
    var link = 'https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=' + lang + '&q=' + sentence.replace(/ /g,'+').replace(/[.]/g,'') + '&rd=' + getRandomInt(0,50000000);

    //add embed element with our link
    iFrameBody.innerHTML = '<embed src="' + link + '" id="TTS">';

    //isolate iframe
    iFrame.setAttribute('sandbox','');
}

答案 5 :(得分:0)

您可以简单地使用链接:

Text to Speech