问题
我的应用程序(莫尔斯电码翻译器)接受用户输入,并将文本转换为声音,以便在路线上播放。但是,我当前的应用程序只会播放一个声音,即使多次调用该方法也不会播放更多声音。并且它从节点进程而不是在客户机上播放它。我觉得这需要创建某种类型的音频流,然后将其作为响应的一部分发送给用户,但我需要一些关于如何做到这一点的指针。
编辑
看起来这并不是特别容易,所以我猜作弊的方法只是为每个声音提供一个音频文件,然后为这些给定的声音呈现一个音频元素。我很想看到一个不平凡的例子,说明如何通过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。
1条答案
按热度按时间qvtsj1bj1#
我知道这已经晚了几年。这主要是为了其他可能遇到这种情况的用户。您可能需要查看我们针对此https://www.audiostack.ai/的API
我会说你会有一个类似参数https://docs.audiostack.ai/docs/dynamic-creative-optimisation-dco的东西,我们称之为个性化参数,但你可以有一个莫尔斯码的列表,然后当莫尔斯码发送时,你会听到与莫尔斯码相关的音频。
您仍然需要托管一个节点服务器来提供此服务,但我们构建此服务器是为了抽象动态提供音频的挑战-正如本文作者所观察到的那样,这可能非常棘手。