从 x 到 y 秒播放音频
Posted
技术标签:
【中文标题】从 x 到 y 秒播放音频【英文标题】:play audio from x to y seconds 【发布时间】:2014-09-26 09:24:19 【问题描述】:我正在尝试将音频文件从第二个 x 播放到第二个 y。我会尝试以更好的方式解释它。
我有一个文本,我希望在单击一个单词时播放一个音频文件。关键是我不想播放整个音频文件,而只是播放点击单词的一段音频。 我想使用包含我文本中所有单词的单个音频文件(不是每个单词的单个音频文件)并提取说出单词的音频部分。
目前我有音频文件,对于每个单词,我都知道它开始和结束的确切秒数。
例子:
我的文字是:“大家好,你们好吗?我很好。” 当我点击“每个人”时,我想在它说“每个人”时获得一段音频。
<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() 函数,但它们对我不好,因为我想随机获取单词。
提前谢谢你!
【问题讨论】:
到目前为止你的代码是什么? 提供更多信息,例如说了什么秒数。提供你的 html 结构... 查看我的更新答案 您是否创建了音频元素?请将其添加到您的标记中 【参考方案1】:将data-word
添加到每个带有“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
中,您可以定义哪个单词在什么秒/时间开始和结束。
【讨论】:
完美!非常感谢你!!唯一的就是“audio.pause().currentTime = start;”无需“.pause()”即可工作。有效的代码是:audio.currentTime = start;真的谢谢你!【参考方案2】:尝试:
function dynamicVoice(text)
var msg = new SpeechSynthesisUtterance(text);
window.speechSynthesis.speak(msg);
dynamicVoice("Hello World");
`
文本到语音的浏览器api
【讨论】:
这是个好主意,但首先:它不完全满足 OPs 要求,其次不是所有浏览器都广泛支持以上是关于从 x 到 y 秒播放音频的主要内容,如果未能解决你的问题,请参考以下文章