2017-03-25 2 views
0

문장을 받아 각 단어의 사운드 클립을 재생하는 프로그램을 작성하려고합니다. stackoverflow 및 javascript/html에 대한 새로운 기능이므로이 서식이 휴지통 인 점에 대해 사과드립니다. 단어가 방금 함께 연주 한 문제에 부딪혔다.이 문제를 해결하기 위해 .onended()를 추가했으나 처음 두 단어에 대해서만 고정시키고 루프를 사용하는 것은 효과가 없다. 어떤 도움을 주셔서 감사합니다. 이것은 내가 현재 가지고있는 것입니다 :차례대로 오디오 재생

<body> 
 
What would you like me to say? 
 
<input type="text" id="words"/> 
 
<script> 
 
document.getElementById('words').addEventListener('keypress', function (e) { 
 
    if (e.which === 13) { 
 
\t \t var sentence = document.getElementById("words").value; 
 
\t \t var splitted = sentence.split(" "); 
 
\t \t var length = splitted.length; 
 
\t \t var i = 1; 
 
\t \t var sp = new Audio (splitted[0] + '.m4a'); 
 
\t \t sp.play(); 
 
\t \t sp.onended=function(){ 
 
\t \t \t if(i<length){ 
 
\t \t \t var sp = new Audio (splitted[i] + '.m4a'); 
 
\t \t \t sp.play(); 
 
\t \t \t i++; 
 
\t \t \t } 
 
\t \t } 
 
    } 
 
});

그리고 이것은 내가 그들 모두를 반복 할 때 내가 전에 가지고 무엇을 그들은 모두 함께 연주 :

for(i=0;i<length;i++){ 
 
var sp = new Audio(splitted[i] + 'm4a'); 
 
sp.play(); 
 
}

+0

그냥 확인하십시오. Java가 관련되어 있습니까? 또는이 모든 JavaScript입니다. Java가 없으면 Java 언어 용 javasound 태그를 제거 할 수 있습니다. –

답변

0

다음 단어에 대한 오디오를 만들 때 var sp = new Audio (splitted[i] + '.m4a'), 새로운 pris tine 오디오 인스턴스가 만들어집니다. 따라서 두 번째 단어에는 .onended 처리기 집합이 없습니다. 그래서 처음 두 단어 만 재생합니다.

수정하려면 작성한 각 오디오에 대해 ended 수신기를 추가해야합니다.

+0

나는 당신이 의미하는 바를 이해하지 못합니다. 정교하거나 예를 들어 주시겠습니까? 수동으로 수행해야합니까? – Suoria

+0

당신의 대답은 내 뜻입니다. 새로운 오디오 ('var sp = new Audio (...)')를 만들 때마다'onended' 리스너를 적절하게 설정해야합니다. :) – Thai

0

내가 맞으면 연설 할 텍스트를 찾고 계십니까? 그런 다음 반응이있는 음성을 제안 해주십시오 .JS. 이 자바 스크립트 라이브러리는 입력 필드에서 데이터를 가져 와서 각 음절에 별도의 음성을 만들지 않고도 음성으로 변환 할 수 있습니다. 그것이 쉬운 방법입니다.

리소스 : responsivevoice.org

+0

그러나 나는 내 목소리를 사용하고 싶다. 그것이 불분명하면 죄송합니다. – Suoria

0

나는 재귀 함수를 사용하여 수정 프로그램을 발견했다 :

document.getElementById('words').addEventListener('keypress', function (e) { 
 
    if (e.which === 13) { 
 
\t \t var sentence = document.getElementById("words").value; 
 
\t \t var splitted = sentence.split(" "); 
 
\t \t var length = splitted.length; 
 
\t \t var i = 0; 
 
\t \t testFunction(); 
 
\t \t function testFunction(){ 
 
\t \t \t if(i<length){ 
 
\t \t \t \t var sp = new Audio (splitted[i] + '.m4a'); 
 
\t \t \t \t sp.play(); 
 
\t \t \t \t i++; 
 
\t \t \t \t sp.onended=function(){ 
 
\t \t \t \t \t testFunction(); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t } 
 
    } 
 
});

어쨌든 도움을 주셔서 감사합니다!