NodeJS应用程序使用ffmpeg从mp3 & mp4创建ogg文件。如果源文件是宽带的,沃森语音文本接收文件没有任何问题。如果源文件是窄带的,沃森语音到文本无法读取ogg文件。我已经测试了来自ffmpeg的输出,窄带ogg文件具有与mp3文件相同的音频内容(例如,我可以听它,也可以听到相同的人)。是的,预先,我正在更改对Watson的调用,以正确指定模型和content_type。守则如下:
exports.createTranscript = function(req, res, next)
{ var _name = getNameBase(req.body.movie);
var _type = getType(req.body.movie);
var _voice = (_type == "mp4") ? "en-US_BroadbandModel" : "en-US_NarrowbandModel" ;
var _contentType = (_type == "mp4") ? "audio/ogg" : "audio/basic" ;
var _audio = process.cwd()+"/HTML/movies/"+_name+'ogg';
var transcriptFile = process.cwd()+"/HTML/movies/"+_name+'json';
speech_to_text.createSession({model: _voice}, function(error, session) {
if (error) {console.log('error:', error);}
else
{
var params = { content_type: _contentType, continuous: true,
audio: fs.createReadStream(_audio),
session_id: session.session_id
};
speech_to_text.recognize(params, function(error, transcript) {
if (error) {console.log('error:', error);}
else
{ fs.writeFile(transcriptFile, JSON.stringify(transcript), function(err) {if (err) {console.log(err);}});
res.send(transcript);
}
});
}
});
}_type要么是mp3 (电话录音窄带),要么是mp4 (宽带) model: _voice被跟踪以确保正确的设置,content_type: _contentType已经被跟踪以确保正确的设置。
任何ogg文件提交到带有窄带设置的文本的语音文件都会失败,用实际的窄带文件进行Error: No speech detected for 30s.测试,并要求沃森将宽带ogg文件(从mp4创建)读取为窄带。同样的错误信息。我遗漏了什么?
发布于 2017-01-18 23:50:24
沃森演讲到文本的文档在这一点上令人困惑。文档这里表明,当使用窄带模型时,content_type应该设置为audio/basic。那是不正确的。在本例中,入站音频文件是窄带文件,但它是ogg文件,因此content_type仍然应该是audio/ogg。这一变化就解决了这个问题。
https://stackoverflow.com/questions/41729725
复制相似问题