1

私はときに、ユーザーの一時停止を検出し、停止を認識せずに、再び話し始めるしようとしています。これは私がユーザーの講演やページへの出力にそれをするときを検出するように設定コードです:ユーザーがSpeechRecognition APIを話す時間を検出しますか?

//set up vars 
 
var final_transcript; 
 
var recognizing = false; 
 
//check if using chrome and up to date 
 
if ('webkitSpeechRecognition' in window) { 
 
//init 
 
    var recognition = new webkitSpeechRecognition(); 
 

 
    recognition.continuous = true; 
 
    recognition.interimResults = true; 
 

 
    recognition.onstart = function() { 
 
    recognizing = true; 
 
    }; 
 
//if there is error somewhere 
 
    recognition.onerror = function(event) { 
 
    console.log(event.error); 
 
    }; 
 

 

 
    recognition.onend = function() { 
 
    recognizing = false; 
 
    }; 
 
//after giving the spech 
 
    recognition.onresult = function(event) { 
 
    var interim_transcript = ''; 
 
    for (var i = event.resultIndex; i < event.results.length; ++i) { 
 
     if (event.results[i].isFinal) { 
 
     // finilize and show the compleated text 
 
     final_transcript += event.results[i][0].transcript; 
 
     } else { 
 
     // run the speech and output it 
 
     interim_transcript += event.results[i][0].transcript; 
 

 
     } 
 
    } 
 
    final_transcript = capitalize(final_transcript); 
 
    final_span.innerHTML = linebreak(final_transcript); 
 
    interim_span.innerHTML = linebreak(interim_transcript); 
 

 
    }; 
 
} 
 

 
var two_line = /\n\n/g; 
 
var one_line = /\n/g; 
 
function linebreak(s) { 
 
    return s.replace(two_line, '<p></p>').replace(one_line, '<br>'); 
 
} 
 

 
function capitalize(s) { 
 
    return s.replace(s.substr(0,1), function(m) { return m.toUpperCase(); }); 
 
} 
 

 
function startDictation(event) { 
 
    if (recognizing) { 
 
    recognition.stop(); 
 
    return; 
 
    } 
 
    final_transcript = ''; 
 
    recognition.lang = 'en'; 
 
    recognition.start(); 
 
} 
 
//startDictation();
<div id="results"> 
 
     <span id="final_span" class="final"></span> 
 
     <span id="interim_span" class="interim"></span> 
 

 
    </div>

したがって、ユーザーが一時停止し、彼は一時停止した時間の長さを検出する方法があります?

答えて

1

これは完全な答えはありませんが、それはスタートです。

https://jsfiddle.net/persianturtle/7uygdyy1/1/

私はノイズの少ない地域にあった場合、それが再び発火するかどうonspeechstartイベントは一度だけ発生させ、またはかはわかりません。

複数回発生する場合は、speech startspeech end時間を保存して、そこから無音期間を把握できるので、これは非常に簡単になります。それonspeechstartは一度だけ発生させた場合

は、あなたはおそらく平均的な音声区間指定されたテキストを取得し、そこから沈黙を把握する方法を見つけることができます。

言葉がキャプチャされるたびに発射イベントは、しかし、があります:onresult

基本的な考え方はの音声データを入力できるactivityの配列を定義してから、その後の無音期間を分析することです。

コード:

let activity = [] 

recognition.onresult = event => { 
    console.log(event) 
    activity.push('Ended:' + event.timeStamp) 
} 

recognition.onspeechstart = event => { 
    activity.push('Started:' + event.timeStamp) 
} 

recognition.onend = event => { 
    console.log(activity) 
} 
+0

これは素晴らしい作品が、私は最後の問題を持って、私は「終了」をクリックしたときにテキストを表示したいと思います。だから、これは私がhttps://jsfiddle.net/rp45c1rw/を試みたもので、私はwindow.end機能にはconsole.logを追加し、それもwindow.endに表示持つ方法があるので、未定義返さ?この作品 – Mohammed

+0

:https://jsfiddle.net/persianturtle/7uygdyy1/2/私は何を探していた –

+1

はあなたに感謝します – Mohammed

関連する問題