wordsをspeechに変換しようとしています。
今まで私はこれを試しました:
<?php
$text = "Hello this is a test for voice api of google";
// Name of the MP3 file generated using the MD5 hash
$file = md5($text);
// Save the MP3 file in this folder with the .mp3 extension
$file = "audio/" . $file .".mp3";
if($file) {
echo "created";
} else {
echo "not created";
}
// If the MP3 file exists, do not create a new request
if (!file_exists($file)) {
$mp3 = file_get_contents(
'http://translate.google.com/translate_tts?q=' . $text);
echo "hello";
file_put_contents($file, $mp3);
} else {
echo "hii";
}
?>
私のhtmlファイルで:
<audio controls="controls" autoplay="autoplay">
<source src="<?php echo $file; ?>" type="audio/mp3" />
</audio>
こんにちは、オーディオプレーヤーが出力されています。しかし、ファイルは再生されず、フォルダーにも作成されませんか?
アクセスしようとしているURLに問題があります。壊れています !あなたは最初に試してみるべきだった。 FFコンソールで見つけた新しいURLは次のとおりです。
http://translate.google.com/translate_tts?ie=UTF-8&q=Hello&tl=en&total=1&idx=0&textlen=5&prev=input
単一の単語の場合こんにちは。そして、言語とテキストの長さをtextlenで指定する必要があることがわかります。これは、私が試したすべての文で機能しましたが、この変数を変更します。
もう1つの問題は、テキストをurlencode()する必要があることです。そうしないと、アクセントと句読点のバグが発生します。したがって、MP3をダウンロードする行は次のようになります。
// Language of the sentence
$lang = "fr";
$mp3 = file_get_contents(
'http://translate.google.com/translate_tts?ie=UTF-8&q='. urlencode($text) .'&tl='. $lang .'&total=1&idx=0&textlen=5&prev=input');
したがって、完全なコードは次のようになります。
<?php
$text = "Bonjour, comment allez vous ?";
// Yes French is a beautiful language.
$lang = "fr";
// MP3 filename generated using MD5 hash
// Added things to prevent bug if you want same sentence in two different languages
$file = md5($lang."?".urlencode($text));
// Save MP3 file in folder with .mp3 extension
$file = "audio/" . $file . ".mp3";
// Check folder exists, if not create it, else verify CHMOD
if (!is_dir("audio/"))
mkdir("audio/");
else
if (substr(sprintf('%o', fileperms('audio/')), -4) != "0777")
chmod("audio/", 0777);
// If MP3 file exists do not create new request
if (!file_exists($file))
{
// Download content
$mp3 = file_get_contents(
'http://translate.google.com/translate_tts?ie=UTF-8&q='. urlencode($text) .'&tl='. $lang .'&total=1&idx=0&textlen=5&prev=input');
file_put_contents($file, $mp3);
}
?>
見つけた:
https://translate.google.com.vn/translate_tts?ie=UTF-8&client=tw-ob&q=ANYTHING_TEXT&tl=YOUR_LANGUAGE_CODE
重要:client=tw-ob
YOUR_LANGUAGE_CODE
en、us、uk、viなどにすることができます。
改善されたバージョン:
// ~~~ Credits to kube ~~~
$text = "Hello this is a test for voice api of google";
$text = urlencode($text);
$lang = urldecode("en");
$file = "audio/" . md5($text) .".mp3";
if (!file_exists($file) || filesize($file) == 0) {
$mp3 = file_get_contents('http://translate.google.com/translate_tts?ie=UTF-8&q='.$text.'&tl='.$lang.'&total=2&idx=0&textlen='.strlen($text).'&prev=input');
if(file_put_contents($file, $mp3)){
echo "Saved<br>";
}else{
echo "Wasn't able to save it !<br>";
}
} else {
echo "Already exist<br>";
}
このサービスを無料で利用することはできません。
無料の割り当てはありますか?いいえ、Google翻訳APIは有料サービスとしてのみ利用できます。詳細については、価格とサポートをご覧ください。ただし、Googleウェブサイト翻訳ガジェットを提供しています。このガジェットは無料でウェブサイトを翻訳します。
チェック API FAQを翻訳
この非公式の使用方法の詳細については、 Techcrunch をご覧ください。
以下の簡単なコードを使用することもできます。コードをエコーするだけで結果が得られます。このコードでは、ファイルを保存したり、権限の問題を取得したりする必要はありません。
echo "<iframe hidden src='http://translate.google.com/translate_tts?ie=UTF-8&q=Welcome%20back%20".$jvm['firstname']."&tl=en&total=2&idx=0&textlen=5&prev=input'></iframe>";
作成し忘れたためファイルが作成されていません。以下のコードを使用してファイルを作成してください。
$file = "audio/".$file.".mp3";
$ourFileHandle = fopen($file, 'w') or die("can't open file");