Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一个接一个地播放音频_Javascript_Html_Audio_Javasound - Fatal编程技术网

Javascript 一个接一个地播放音频

Javascript 一个接一个地播放音频,javascript,html,audio,javasound,Javascript,Html,Audio,Javasound,我试图写一个程序,将采取一个句子,并发挥每个单词的声音剪辑。我对stackoverflow和javascript/html非常陌生,所以很抱歉,这种格式是垃圾。我遇到了一个问题,即单词只是一起玩,为了解决这个问题,我添加了一个.onended(),但这只解决了前两个单词的问题,而使用循环是不起作用的。谢谢你的帮助。这就是我目前拥有的: 你想让我说什么? document.getElementById('words')。addEventListener('keypress',函数(e){ 如果

我试图写一个程序,将采取一个句子,并发挥每个单词的声音剪辑。我对stackoverflow和javascript/html非常陌生,所以很抱歉,这种格式是垃圾。我遇到了一个问题,即单词只是一起玩,为了解决这个问题,我添加了一个.onended(),但这只解决了前两个单词的问题,而使用循环是不起作用的。谢谢你的帮助。这就是我目前拥有的:


你想让我说什么?
document.getElementById('words')。addEventListener('keypress',函数(e){
如果(e.which==13){
var语句=document.getElementById(“words”).value;
var splitted=句子分割(“”);
变量长度=拆分的.length;
var i=1;
var sp=新音频(拆分的[0]+'.m4a');
sp.play();
sp.onended=函数(){

如果(i为下一个单词创建音频时,
var sp=new audio(拆分的[i]+'.m4a')
,则会创建一个新的原始音频实例。因此,第二个单词没有
.oneded
处理程序集。这就是它只播放前两个单词的原因


要解决此问题,您必须为您创建的每个音频添加一个
结束的
侦听器。

如果我是对的,您是在寻找文本到语音。然后让我建议您使用responsiveVoiceJS。此javascript库可以从您的输入字段获取数据,并将其转换为语音,而无需为每个音节创建单独的语音。这就是简单的方式


资源:responsivevoice.org

我发现了一个使用递归函数的修复程序:

document.getElementById('words').addEventListener('keypress',函数(e){
如果(e.which==13){
var语句=document.getElementById(“words”).value;
var splitted=句子分割(“”);
变量长度=拆分的.length;
var i=0;
testFunction();
函数testFunction(){

如果(我不太明白你的意思,请你详细说明或举个例子好吗?必须手动完成吗?你的答案就是我的意思。每次你创建一个新音频(
var sp=new audio(…)
)时,你必须正确地设置一个
合一的
侦听器。:)但是,我想用我的声音。如果不清楚,很抱歉。只是检查一下。是否涉及Java?或者这都是JavaScript。如果没有Java,您可以删除javasound标记,因为这是Java语言的标记。