web-dev-qa-db-ja.com

PHP with Google Translate)でのテキスト読み上げ

wordsspeechに変換しようとしています。

今まで私はこれを試しました:

<?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>

こんにちは、オーディオプレーヤーが出力されています。しかし、ファイルは再生されず、フォルダーにも作成されませんか?

12
Sankalp Mishra
  1. アクセスしようとしている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で指定する必要があることがわかります。これは、私が試したすべての文で機能しましたが、この変数を変更します。

  2. もう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);
    }

?>
12
kube

見つけた:

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などにすることができます。

4
Tan Nguyen

改善されたバージョン:

// ~~~ 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>";
       }
3
HamZa

このサービスを無料で利用することはできません。

無料の割り当てはありますか?いいえ、Google翻訳APIは有料サービスとしてのみ利用できます。詳細については、価格とサポートをご覧ください。ただし、Googleウェブサイト翻訳ガジェットを提供しています。このガジェットは無料でウェブサイトを翻訳します。

チェック API FAQを翻訳

この非公式の使用方法の詳細については、 Techcrunch をご覧ください。

2
Hrvoje Golcic

以下の簡単なコードを使用することもできます。コードをエコーするだけで結果が得られます。このコードでは、ファイルを保存したり、権限の問題を取得したりする必要はありません。

 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>";
1
Arijit Aich

作成し忘れたためファイルが作成されていません。以下のコードを使用してファイルを作成してください。

$file = "audio/".$file.".mp3";
$ourFileHandle = fopen($file, 'w') or die("can't open file");
0
Yogesh Suthar