私は以前、Google Translate TTSを呼び出して、次のURLを使用してオーディオファイルをダウンロードしました: http://translate.google.com/translate_tts?tl=en&q=Hello+world !
ただし、Googleは動作方法を変更したため、オーディオファイルをダウンロードできなくなりました。 Google Translate API V2の無料トライアルに登録しましたが、TTSオーディオファイルを取得する方法が見つかりません。
何か案が?
Text-to-speechは常に「非公式」のAPIでしたが、現在では不正使用を防ぐためにキャプチャ保護されています。 Translate APIの一部として宣伝されたことはなく、現在、Translate V2 APIには有料またはその他のTTS機能はありません。
しばらくの間続いていた次の グループスレッド には、もう少し背景があります。
ここでは、Google TTSをHTMLのオーディオとして再生しようと必死になっている人たちを紹介します:数時間節約して、その方法を教えてください。
このリンクがあるとしましょう: https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=en&q=I+love+coffee
リンクを指定して_<audio>
_、_<iframe>
_を使用してこのオーディオを再生しようとすると、サードパーティのライブラリを使用するか、JavaScriptで再生すると...
var audio = new Audio('https://translate.google.com/translate_tts...'); audio.play();
...その後、前述の方法がError 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','');
}
_
あなたは単にリンクを使うことができます: