2017-07-18 14 views
0

SpeechSynthesis APIを使用してWebアプリケーションを作成し、スタートボタンをクリックしてからプログラムを実行してから、AndroidおよびiOSデバイスでユーザーの聴き取りを開始しようとしています。ユーザーはプログラムを実行するために何かを話すことができました。その後、3秒ごとにオーディオファイルを再生できます。以下は私のコードです。私の論理は間違っていますか?クリック後にプログラムを起動してサウンドを聞くことができません。AndroidとSafariデバイスでSpeechSynthesis APIを起動する

このSpeechSynthesis APIはAndroidとiOSデバイスをサポートすることができますが、「サウンドスタートイベント」などのイベントを見たときにSafari Mobileはサポートされません。彼らの関係は何ですか?私は本当に混乱した。 SpeechRecognition APIはChromeブラウザのみをサポートしていますが、サウンドスタートのようなイベントをユーザーにする必要はありませんか?

ありがとうございました。ほんとうにありがとう。

<p id="msg" align="center"></p> 

    <script> 
     var utterance = new SpeechSynthesisUtterance("Hello"); 
     //window.speechSynthesis.speak(utterance); 

     var supportMsg = document.getElementById('msg'); 

     if ('speechSynthesis' in window) 
     { 
      supportMsg.innerHTML = 'Your browser <strong>supports</strong> speech synthesis.'; 
      console.log("Hi"); 

      utterance.onstart = function(event) 
      { 
       console.log('Hhhh') 
      }; 


      var playList = ["1_hello", "2_how_old", "3_what_did_you_make"]; 
      var dir = "sound/"; 
      var extention = ".wav"; 
      audio.src = dir + playList[audioIndex] + extention; 
      audio.load(); 

      var audioIndex = 0; 
      setTimeout(function(){audio.play();}, 1000); 


      window.speechSynthesis.speak(utterance); 

     } 
     else 
     { 



      supportMsg.innerHTML = 'Sorry your browser <strong>does not support</strong> speech synthesis.<br>Try this in <a href="https://www.google.co.uk/intl/en/chrome/browser/canary.html">Chrome Canary</a>.'; 
     } 

     //window.speechSynthesis(utterance); 

    </script> 
    <div class="container"> 
     <button id="runProgram" onclick='utterance.onstart();' 
     class="runProgram-button">Start</button> 
    </div> 

答えて

0

これは機能しますか?

function playAudio() { 
 
    var msg = new SpeechSynthesisUtterance('Help me with this code please?'); 
 
    msg.pitch = 0; 
 
    msg.rate = .6; 
 
    window.speechSynthesis.speak(msg); 
 

 

 

 
    var msg = new SpeechSynthesisUtterance(); 
 
    var voices = window.speechSynthesis.getVoices(); 
 
    msg.voice = voices[10]; // Note: some voices don't support altering params 
 
    msg.voiceURI = 'native'; 
 
    msg.volume = 1; // 0 to 1 
 
    msg.rate = 1.2; // 0.1 to 10 
 
    msg.pitch = 2; //0 to 2 
 
    msg.text = 'Sure. This code plays "Hello World" for you'; 
 
    msg.lang = 'en-US'; 
 

 
    msg.onend = function(e) { 
 
    var msg1 = new SpeechSynthesisUtterance('Now code plays audios for you'); 
 
    msg1.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Whisper'; })[0]; 
 
    msg1.pitch = 2; //0 to 2 
 
    msg1.rate= 1.2; //0 to 2 
 
    // start your audio loop. 
 
    speechSynthesis.speak(msg1); 
 
    console.log('Finished in ' + e.elapsedTime + ' seconds.'); 
 
    }; 
 

 
    speechSynthesis.speak(msg); 
 
}
<div class="container"> 
 
    <button id="runProgram" onclick='playAudio();' class="runProgram-button">Start</button> 
 
</div>

+0

私は、これは変に聞こえる場合でもそうだと思います。これは良いヒントです。あまりにもアレックスありがとう。このAPIを私たちがannyangのためにやったように動作させるようにします。あなたは私がonClick = 'window.speechSynthesis.soundstart()'を作ることができると思いますか?また、SpeechSynthesis APIとSpeechRecognition APIの関係は何ですか? Cuz SpeechSynthesisはAndroidとSafariをサポートしていますが、SpeechRecognitionはChromeのみをサポートしています。 – Johnny

+0

いいえ。「SoundStart」は、ITが完了したときにITが「onend」のように発声を開始すると起動するイベントです。彼らはあなたが直接発動する方法ではありません。 'speechSynthesis.speak'は、話し始めたときに' SoundStart'を起動します。両方のAPIは、ドラフトステータスで** **実験中**です。グーグルは、回復についての残りの部分にジャンプしているだけです。 –

+0

返信ありがとう、Alexander。そうですか。 ITを使って話すのではなく、ピッチやレートのようなオーディオファイルを調整できるかどうかは疑問です。 – Johnny

関連する問題