Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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 使用Node.js创建动态音频_Javascript_Node.js_Audio - Fatal编程技术网

Javascript 使用Node.js创建动态音频

Javascript 使用Node.js创建动态音频,javascript,node.js,audio,Javascript,Node.js,Audio,问题 我的应用程序(摩尔斯电码翻译程序)接受用户输入,并将文本转换成声音,以便按照路线播放。但是,我当前的应用程序将只播放一个声音,即使多次调用该方法,也不会播放更多声音。它从节点进程播放,但不在客户端播放。我觉得这需要创建某种类型的音频流,然后将其作为响应的一部分发送给用户,但我需要一些如何做到这一点的指针 编辑 这似乎不是特别容易,所以我想作弊的方法就是为每个声音创建一个音频文件,然后为这些给定的声音渲染一个音频元素。我想看一个非平凡的例子,说明如何通过Node.js动态制作音频 结构 在我

问题

我的应用程序(摩尔斯电码翻译程序)接受用户输入,并将文本转换成声音,以便按照路线播放。但是,我当前的应用程序将只播放一个声音,即使多次调用该方法,也不会播放更多声音。它从节点进程播放,但不在客户端播放。我觉得这需要创建某种类型的音频流,然后将其作为响应的一部分发送给用户,但我需要一些如何做到这一点的指针

编辑

这似乎不是特别容易,所以我想作弊的方法就是为每个声音创建一个音频文件,然后为这些给定的声音渲染一个音频元素。我想看一个非平凡的例子,说明如何通过Node.js动态制作音频

结构

在我的服务器中,我尝试调用短音频爆发的函数,但只会引发一个声音

Server.js
我意识到这个解决方案并不理想,但我希望创建一个简单版本的for learning nodejs

听起来您不想在服务器上的nodejs中播放声音,而是想在客户端机器上向发送请求的客户端播放声音,作为响应的一部分?没错。我不知道该怎么做。我觉得这需要创建某种类型的音频流,然后将其作为响应的一部分发送给用户。这是我第一次尝试制作音频。然而,我对如何做到这一点持开放态度。在我看来,要么我必须多次提供
-
的音频剪辑,要么我必须创建一个音频流,然后再提供。生成动态音频剪辑可能比音频流容易,你应该先尝试一下。当然,可能更容易的是,为
-
提供两个静态声音文件,并在客户端使用。如果您不想搜索这样的库或找不到库,或者认为两个请求的事情太复杂,这就是第二种方法的目的-只需动态播放多个、单个声音(来自两个文件
dit.mp3
dah.mp3
)使用客户端javascript。这可能更简单,但只适用于现代浏览器,用户无法下载他们的morse声音文件。请自行决定需要什么、想学什么(一般是node还是js?)以及什么更有趣。
var express    = require('express'),
    jade       = require('jade'),
    bodyParser = require('body-parser'),
    morseCode  = require('./lib/translateMorseCode'),
    playSound  = require('./lib/playSound'),
    sfx        = require('sfx'),
    app        = express();

app.use(bodyParser.urlencoded({ extended: true })); 

app.set('view engine', 'jade');
app.set('views', './views');

app.get('/', function(req, res) {
  res.render('index');
});

app.get('/translation', function(req, res) {
  var untranslated = req.query.input_text
  var translated = morseCode.translate(untranslated);
  var sounds = playSound.convert(translated);

  for (var i = 0; i < sounds.length; i++) {
     sounds[i]();
  }

  res.render('translation', { output: translated });
});
var sfx = require('sfx');

module.exports = {
  convert: function(translation) {
    var audioOutput = [];

    translation.split("").forEach(function(sound) {
        if (sound === ".") {
            audioOutput.push(function() { sfx.ping() });
        } else if (sound === '-') {
            audioOutput.push(function() { sfx.blow() });
        } else {
            audioOutput.push(function() { sfx.blow() });
        }
    });

    return audioOutput;
  }
}