2014-09-26 2 views
1

Я пытаюсь воспроизвести аудиофайл со второго х на второй. Я попытаюсь объяснить это лучше.воспроизводить аудио с х до унц.

У меня есть текст, и я хочу, чтобы звуковой файл воспроизводился, когда я нажимаю на слово. Дело в том, что я не хочу воспроизводить весь аудиофайл, а просто фрагмент звука, который говорит щелкнутое слово. Я хотел бы использовать один аудиофайл со всеми словами моего текста (ни одного аудиофайла для каждого слова) и извлечь часть звука, где сказано слово.

На данный момент у меня есть аудиофайл, и для каждого слова я знаю точную секунду, когда она начинается и когда она заканчивается.

Пример:

Мой текст: «Привет всем, как ты мне хорошо» Когда я нажимаю «все», я хочу получить фрагмент звука, когда он говорит «все».

JAVASCRIPT:

<script src="jquery-1.11.1.min.js"></script> 
<script> 

$(document).ready(function() { 
    $('#1').click(function(){ 
      //play audiofile from 0 sec to 1 sec 
     }); 
    $('#2').click(function(){ 
      //play audiofile from 1 sec to 2 sec 
     }); 
    $('#3').click(function(){ 
      //play audiofile from 2 sec to 3 sec 
     }); 
    $('#4').click(function(){ 
      //play audiofile from 3 sec to 4 sec 
     }); 

}); 
</script> 

HTML:

<body> 

<div><span id="1">Hello </span><span id="2">World! </span><span id="3">Life </span><span id="4">long</span></div> 

</body> 

Я уже использовал функции .play() и .pause(), но они не очень хорошо для меня, потому что я хочу, чтобы получить слова в случайном порядке.

Спасибо заранее!

+0

Каков ваш код? – Alex

+0

предоставляют больше информации, например, на каких секундах говорят какие слова. предоставить вашу структуру html ... – Alex

+0

Я добавил код! –

ответ

1

Добавить data-word к каждому элементу с классом 'слово':

<p> 
    <span class="word" data-word="hello" id="1">Hello </span><span class="word" data-word="world" id="2">World! </span><span class="word" data-word="life" id="3">Life </span><span class="word" data-word="long" id="4">long</span> 
</p> 

Затем в вашем jQuery напишите:

(function($) { 
    $(function() { 
    var audio = $('audio').get(0), 
     word_timings = { 
     'hello': {start: 0, end: 1}, 
     'world': {start: 1, end: 2}, 
     'life': {start: 2, end: 3}, 
     'long': {start: 4, end: 4} 
     }; 

    $('.word').click(function() { 
     var word = $(this).data('word'), 
     start = word_timings[word].start, 
     end = word_timings[word].end; 

     audio.pause().currentTime = start; 
     audio.play(); 
     $(audio).on('timeupdate', function() { 
     if (this.currentTime >= end) { 
      this.pause(); 
      $(audio).off('timeupdate'); 
     } 
     }); 

    }); 
    }); 
})(jQuery); 

В массиве word_timings вы можете определить, какое слово начинается и заканчивается на каком втором/время.

+0

Это прекрасно! Большое спасибо!! Единственное, что «audio.pause(). CurrentTime = start;» работает без ".pause()". Код, который работает: audio.currentTime = start; Действительно благодарю вас! –

+0

youre most welcome – Alex

0

попробовать:

function dynamicVoice(text){ 
 
    var msg = new SpeechSynthesisUtterance(text); 
 
window.speechSynthesis.speak(msg); 
 
    } 
 

 
dynamicVoice("Hello World");
`

браузер апи для текста озвучивать

+0

. Это хорошая идея, но во-первых: она не соответствует требованиям OPs точно, а во-вторых, не поддерживается всеми браузерами. – Alex

Смежные вопросы