Обрезка появляется в выходном mp3 из функции request.pipe при выполнении запроса к API AVS

Я разработал nodejs-клиент, который заменяет Javaclient, предоставленный примером кода AVS (Alexa Voice Service).

Используемый код выполняет пост-запрос и передает выходной файл mp3 в файл. Но много раз вывод mp3 не завершен, и он ломается с конца, а иногда и с начала. Так, например. желаемая длительность mp3-файла составляет 9 с, иногда выходной файл имеет длину 8 с или 6 с, или полный 9 с.

Его случайное поведение.

Код, используемый для создания запроса API и перенаправления o/p в файл, показан ниже. Дайте мне знать, что здесь не так, я новичок в запросе трубопровода.

var options = {
url: 'https://access-alexa-na.amazon.com/v1/avs/speechrecognizer/recognize',
headers:{
  'Content-Type':'multipart/form-data',
  'Transfer-Encoding':'chunked'
},
formData: formData
};

var destination = fs.createWriteStream(path.join(__dirname,outputfile));

//request.debug = 1;
request.post(options, function optionalCallback(err, httpResponse, body)     {
  //console.log(httpResponse);
  if(body.length < 100){
    console.log(body);
  }
  console.log("\n\r----Processing Done to ("+outputfile+")----");
  if(loadingInt!=null)clearInterval(loadingInt);
  process.exit();
  if (err) {
    return console.error('upload failed:', err);
  }
  //console.log('Upload successful!  Server responded with:', body);
}).auth(null, null, true, token)
.pipe(destination);

Я поднял это с парнями AVS, но они рассказали о проблеме с кодом, и не их API.

1 ответ

Проблема заключается в process.exit() вызов. Не уверен, почему это вообще там. exit вызов иногда выходит из вашего процесса до завершения трубопровода.

Другие вопросы по тегам