2016-12-03 2 views
1

webKitSpeechRecongizer를 사용하여 텍스트 변환기에 음성을 만들고 있는데,이 API에 대한 자습서를 잘 읽었지 만 반환 된 텍스트를 얻지 못하고 이 오류 ("Uncaught TypeError : 'length'of undefined (...) '속성을 읽을 수 없습니다.).이 오류 (단지 학생)에 대해 알지 못합니다. 어떤 도움을 주시면 감사하겠습니다. 아래는 텍스트 변환기에 대한 음성 코드입니다. 연설 변환기 Uncaught TypeError : undefined (...)의 'length'속성을 읽을 수 없습니다.

<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> 
+1

'event.results' : 여기

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!'; } } 

는 바이올린입니까? – Other

+0

@Skyrocker 어디서? –

답변

2

Wov, 나는 실제로 들어 본 적이 텍스트에하지만 내가 지금 일하고있어 보인다. https://jsfiddle.net/mehmetb/afd1jn2L/

+0

Mehmet Baker, 저를 구해 주신 것을 감사드립니다. 반환 된 텍스트를 가져 와서 다른 용도로 사용하는 방법이 있다는 것을 알았습니다. 그 일을하는 법을 알고 계셨습니까? –

+0

이벤트를 console.logged했을 때 속성을 보았습니다 isFinal이라는 이름입니다. 모든 결과 이벤트에서이를 확인할 수 있으며, true로 설정된 경우 음성 입력이 끝났다고 추측 할 수 있습니다. –

관련 문제