Приложение NodeJS с использованием ffmpeg для создания файлов ogg из mp3 и mp4. Если исходный файл является широкополосным, Watson Speech to Text принимает файл без проблем. Если исходный файл является узкополосным, Watson Speech to Text не может прочитать файл 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.
Проверено как с реальными узкополосными файлами, так и с просьбой Watson прочитать широкополосный файл ogg (созданный из mp4) как узкополосный. То же сообщение об ошибке. Что мне не хватает?