Uncaught TypeError: Cannot read property 'length' of undefined(…)

Uncaught TypeError: Cannot read property 'length' of undefined(…)

我正在使用 webKitSpeechRecongizer 创建一个语音到文本转换器,我很好地遵循了关于这个的教程 API 但是我没有得到返回的文本,我得到了这个错误 ("Uncaught TypeError: Cannot read property 'length' of undefined(…)" )。我不知道这个错误是什么(只是一个学生)。任何帮助都将是 appreciated.Below 是语音到文本转换器的代码。 语音到文本转换器

<style type="text/css">
    body{
        font-family: Arial;
    }
    #result{
        height: 200px;
        border: 1px solid #ccc;
        padding: 10px;
        box-shadow: 0 0 10px 0 #bbb;
        margin-bottom: 30px;
        font-size: 14px;
        line-height: 25px;
    }   

    button{

        font-size: 20px;
        position: absolute;
        top: 240px;
        left: 50%;
    }
</style>

</head>
<body>
<h4 align="center">Speech to text convertor</h4>
<div id = "result"></div>
<button onclick="startConverting();"><i class = "fa fa-microphone">      </i></button>
<script type="text/javascript">

var r = document.getElementById('result');

function startConverting (){


    if('webkitSpeechRecognition' in window){
    var speechRecognizer = new webkitSpeechRecognition();   
    speechRecognizer.continuous = true;
    speechRecognizer.interimResults = true;
    speechRecognizer.lang = "en-GB";
    speechRecognizer.start();

    var finalTranscripts = '';

    speechRecognizer.onresult = function (event){
        var interimTranscripts = '';

        for(var i = event.resultIndex; i < event.result.length; i++){
            var transcript = event.results[i][0].transcript;
            transcript.replace("\n", "<br>");
            if (event.results[i].isFinal){
                finalTranscripts += transcript;
            }else{
                interimTranscripts += transcript;
            }
        }
        r.innerHTML = finalTranscripts + '<span style = "color:#999">' +  interimTranscripts + '</span>';
    };

    speechRecognizer.onerror = function (event){

    };
}else{
    r.innerHTML = 'Your browser is not supported.If Google chrome,please upgrade!';
}



}



</script>
</body>
</html>

Wov,我实际上从未听说过它,但似乎我现在可以使用它了。

var r = document.getElementById('result');
var btn = document.getElementById('btn');

btn.addEventListener('click', startConverting);

function startConverting() {
  if ('webkitSpeechRecognition' in window) {
    var speechRecognizer = new webkitSpeechRecognition();

    speechRecognizer.continuous = true;
    speechRecognizer.interimResults = true;
    speechRecognizer.lang = "en-GB";
    speechRecognizer.start();

    speechRecognizer.onresult = function(event) {
      if (event.results.length) {
        r.innerHTML = event.results[0][0].transcript;
      }
    };

    speechRecognizer.onerror = function(event) {

    };
  } else {
    r.innerHTML = 'Your browser is not supported.If Google chrome,please upgrade!';
  }
}

这里是fiddle:https://jsfiddle.net/mehmetb/afd1jn2L/