Как добавить заголовок в файл WAV? - PullRequest
0 голосов
/ 10 марта 2019

Я отправляю аудиоданные, хранящиеся в виде большого двоичного объекта, на мой бэкэнд (узел / экспресс).Когда я сохраняю файл как .wav и пытаюсь использовать его в пакете SpeechRecogition в python, он выдает ошибку, говорящую, что «файл не начинается с RIFF id».Итак, как я могу добавить заголовки в мой BLOB-файл, прежде чем сохранить его, чтобы он был правильно отформатирован. WAV-файл?При необходимости я могу предоставить код.

файл node.js

var multer = require('multer');
var fs = require('fs'); //use the file system so we can save files
var uniqid = require('uniqid');
var spawn = require('child_process').spawn;
const storage = multer.memoryStorage()
var upload = multer({ storage: storage });

router.post('/api/test', upload.single('upl'), function (req, res) {

   console.log(req.file);
   console.log(req.file.buffer);

   var id = uniqid();
   fs.writeFileSync(id+".wav", Buffer.from(new Uint8Array(req.file.buffer))); //write file to server as .wav file

   const scriptPath = 'handleAudio.py'
   const process = spawn('python3', [__dirname+"/../"+scriptPath, "/home/bitnami/projects/sample/"+id+".wav", req.file.originalname, 'True']); //throws error about header in .wav

});

Также у меня был этот же пример работы с конечной точкой php, которая только что сохранила большой двоичный объект в файл с расширением .wavи файл Python принял его.Что может отличаться в move_uploaded_file в php и что я делаю выше с узлом?

1 Ответ

0 голосов
/ 10 марта 2019

Каждый файл .wav нуждается в заголовке, указанном в формате файла WAVE, доступном здесь . Хотя вы можете создать заголовок самостоятельно, гораздо проще просто использовать правильную библиотеку, чтобы выполнить работу за вас.

Один пример - node-wav , который имеет хороший API для записи файлов WAVE из необработанных данных PCM (что у вас есть в данный момент). Пример кода приведен в документации по node-wav.

...