-2

私はこの段落を持っています

少女の背中に彫られた天使の羽のタトゥーは、暴走しているティナ・フォンテーヌという15歳の女子高生を警官に突きつけた。数日のうちに、ティナの事件は、彼女の死の恐ろしい性質だけでなく、彼女が表現するようになったものについて、カナダ全土の見出しになりました.

クリックで私のウェブサイトで再生したい!これまでのところ、これは私の最高のコードですが、100 文字を超える文字を処理できないと言われています。

var audio = new Audio(); 
audio.src ='http://translate.google.com/translate_tts?ie=utf-8&tl=en&q=Hello%20World.'; 
audio.play();

提案はありますか?jquery / Javascript / PHPのみを使用

4

1 に答える 1

1
function say( text ){
  if('speechSynthesis' in window) { // Chrome only !!

    var speech = new SpeechSynthesisUtterance( text );
    speech.lang = 'en-US';
    window.speechSynthesis.speak(speech);

  } else { // Other browsers !!

     // Use AJAX (with GET) to a .php to file_get_contents
     // generate the <100 by <100 charaters audio files, and nest in callbacks

  }
}


say("A tattoo of angel wings can handle more than 100 characters");

elseコードの部分

$("#playButton").click(function(){
    var string = encodeURIComponent( $("textarea").val() );
    // TODO: split 100+ string into chunks of rightly punctuated sentences.
    $.ajax({
        data: { text: string },
        success : function(d) {
            var audio = new Audio();
            audio.src = "data:audio/mpeg;base64,"+d;
            audio.play();
            audio.onended = function() {
                alert("Ended playing first part");
                // TODO : if we have chunks, play the next one!
            }
        }
    });
});

PHPは次のよ​​うになります:(同じページ内(上部)に配置できます!)

<?php 
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['text']) && isset($_GET['lang'])) {
    $voice = file_get_contents("http://translate.google.com/translate_tts?q=". $_GET['text'] ."&tl=". $_GET['lang'] ."&ie=UTF-8");
    echo base64_encode( $voice );
    exit;
}
?>

文字列を部分に適切に分割するには、「文字列を JavaScript で文に分割する」に似た質問を探すことができます。

于 2015-04-09T07:53:45.983 に答える