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

ggazkfy8  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(168)

问题

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

编辑

看起来这并不是特别容易,所以我猜作弊的方法只是为每个声音提供一个音频文件,然后为这些给定的声音呈现一个音频元素。我很想看到一个不平凡的例子,说明如何通过Node.js动态地制作音频。

结构

在我的服务器中,我试图调用短音频爆发的功能,但只有一个声音被唤起。
Server.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 });
});

playSound.js

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;
  }
}

我知道这个解决方案并不理想,但我希望创建一个简单的http://morsecode.scphillips.com/translator.html版本来学习nodejs。

qvtsj1bj

qvtsj1bj1#

我知道这已经晚了几年。这主要是为了其他可能遇到这种情况的用户。您可能需要查看我们针对此https://www.audiostack.ai/的API
我会说你会有一个类似参数https://docs.audiostack.ai/docs/dynamic-creative-optimisation-dco的东西,我们称之为个性化参数,但你可以有一个莫尔斯码的列表,然后当莫尔斯码发送时,你会听到与莫尔斯码相关的音频。
您仍然需要托管一个节点服务器来提供此服务,但我们构建此服务器是为了抽象动态提供音频的挑战-正如本文作者所观察到的那样,这可能非常棘手。

相关问题