2014-09-26 81 views
1

我試圖播放從第二個x到第二個y的音頻文件。我會嘗試以更好的方式解釋它。播放從x到y秒的音頻

我有一個文本,我想要一個音頻文件播放,當我點擊一個字。重點是我不想播放整個音頻文件,而只是播放單詞的音頻片段。 我想用我的文本中的所有單詞(每個單詞不是單個音頻文件)使用單個音頻文件,並提取單詞所在的音頻部分。

目前我有音頻文件,每個單詞我知道確切的第二個開始時和結束時。

例子:

我的文字是:「嗨,大家你好我好」 當我點擊「所有人」時,我想在它說「每個人」時獲得一段音頻。

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 2014-09-26 09:26:56

+0

提供了更多的信息,比如幾秒鐘說什麼話。提供您的html結構... – Alex 2014-09-26 09:29:38

+0

我添加了代碼! – 2014-09-26 09:43:44

回答

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; 真的謝謝你! – 2014-09-26 13:55:17

+0

非常歡迎 – Alex 2014-09-26 13:58:30

0

嘗試:

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

 
dynamicVoice("Hello World");
`

瀏覽器的API的文本到語音

+0

這是一個不錯的主意,但首先:它完全不符合OP的要求,其次並沒有得到所有瀏覽器的廣泛支持 – Alex 2014-09-26 09:57:40