У меня есть браузерное приложение, которое записывает голос пользователя через микрофон и экспортирует в файл WAV с помощью рекордера. js. Я думаю, что преобразовать это в URL-адрес данных и отправить его на узел. Затем я пытаюсь отправить аудиосигнал в Microsoft Azure Speaker Recognition API, но всегда получаю «Неверный формат звука: не файл WAVE - нет заголовка RIFF».
Есть ли способ добавить заголовок RIFF или что-то есть в рекордере. js или преобразовании в base64 и из base64, который удаляет эти заголовки? Есть ли способ добавить их обратно?
Код: INDEX. HTML
rec.exportWAV(function (blob) {
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function () {
base64 = reader.result;
console.log(base64)
$.ajax({
type: "POST",
url: '/addVoiceToProfile',
data: { userId: '', voiceId: "XXX-XXX", voice: base64, sampleRate: audioContext.sampleRate / 1000 },
success: function (results) {
console.log(results)
}
})
}
})
ПУТЬ УЗЛА:
app.post('/addVoiceToProfile', function(req, res){
var voicedata = req.body.voice;
var base64Data = voicedata.replace(/^data:([A-Za-z-+/]+);base64,/, '');
addVoicesToProfile(base64Data, req.body.voiceId).then(function(results){
res.send(results)
})
})
addVoicesToProfile:
function addVoicesToProfile(voice, id, user){
return new Promise(function (resolve, reject) {
var url = AzureParameters.endPoint+"/spid/v1.0/verificationProfiles/"+id+"/enroll";
request({
url:url,
headers:{'Content-Type':'audio/wave', 'Ocp-Apim-Subscription-Key':AzureParameters.key},
body: Buffer.from(voice, 'base64').toString('binary'),
method: "POST",
json: true
}, function(err, response, body){
if(err) return reject(err);
return resolve(body)
})
})
}