1

webkitSpeechRecognition を使用してテキストを書き起こそうとしています。私はこの例を見つけました:

https://developers.google.com/web/updates/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API?hl=en

そしてそれを自分のサイトに採用しました。これは、特定の条件下でうまく機能します。ただし、基本的には、人々が議論している間、文字起こしを「オン」のままにしたいだけです。

次のように、目的のためにコードを簡略化しました。

//Speech Transcription
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;

// initiated text recognition
recognition.onstart = function() {
    recognizing = true;
    ignore_onend = false;

}

//
recognition.onresult = function(event) {
    var interim_transcript = '';


    for (var i = event.resultIndex; i < event.results.length; ++i) {
        if (event.results[i].isFinal) {
            final_transcript += event.results[i][0].transcript;
        } else {
            interim_transcript += event.results[i][0].transcript;
        }
    }

    final_transcript = capitalize(final_transcript);

    // update final transcript
    enter.innerHTML = linebreak(final_transcript);

    // update temp transcript
    interim_enter.innerHTML = linebreak(interim_transcript);


}

recognition.onerror = function(event) { }

recognition.onend = function() {
    recognizing = false;
    if (ignore_onend) {
        return;
    }
}


// formatting the text
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>');
}

var first_char = /\S/;
function capitalize(s) {
  return s.replace(first_char, function(m) { return m.toUpperCase(); });
}

// trigger the transcription
function startButton(event) {
    final_transcript = '';
    recognition.start();    
}

2 秒から 5 分間は正常に動作しますが、必然的にランダムに停止するようです。ここで質問に関するコメントを見ました:

WebkitSpeechRecognition が録音をランダムに停止する

これは、 Obj3ctiv3_C_88が考え出した解決策を意味します。ただし、説明されていることを実装する方法がわかりませんでした。

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2