我想构建一个应用程序,在该应用程序中使用nodejs的text to speech IBM watson服务。以下是我的代码
var express=require("express");
var app = express();
var fs=require("fs");
var watson = require('watson-developer-cloud');
app.get("/",function(req,res){
var text_to_speech = watson.text_to_speech({
username: '6c1248f9-0de8-450c-8816-44a89c0e1cba',
password: 'NSkOgtjNeE5w',
version: 'v1'
});
var params = {
text: 'Turkish Prime Minister Binali Yildirim today reversed an earlier
offer of compensation to Russia for shooting down one of Moscow military
jets in November, media reported.',
voice: 'en-US_AllisonVoice',
accept: 'audio/wav'
};
//通过管道将合成文本传送到文件。
text_to_speech.synthesize(params)
.pipe(fs.createWriteStream('lorem_ipsum.wav'));
});
app.listen(9000,function(err) {
if (err) {
console.log('Error',err);
}
else{
console.log('Connected');
}
});
但是在这段代码中,它创建了一个要播放的.wav
文件,但我希望在浏览器中直接听到语音。我不想创建要播放的.wav
文件。如何使用nodejs完成此操作?
发布于 2018-07-24 05:00:09
这一行:.pipe(fs.createWriteStream('lorem_ipsum.wav'));
将始终通过管道将流的内容传输到一个文件。
要收听从浏览器播放的音频,您需要使用允许您访问扬声器(such as this one)的节点模块,并将流通过管道传输到该模块。
另一个选项/示例是this SDK for Watson speech services in the browser。您可以使用此SDK来实现您想要的功能,也可以使用类似的方法。
发布于 2018-02-01 20:21:40
Java解决方案(如果有帮助)
InputStream stream =service.synthesize(input, Voice.EN_ALLISON, AudioFormat.WAV).execute();
AudioPlayer.player.start(WaveUtils.reWriteWaveHeader(stream));
https://stackoverflow.com/questions/48356830
复制相似问题