Мне нужно загрузить в веб-сервис аудиофайл, записанный с помощью cordova-plugin-audioinput.Мне нужно использовать этот плагин, а не основной, потому что audioinput поддерживает аудио формат wav, единственный принятый веб-сервисом.
Действия «остановить запись» и «загрузить» должны запускаться, когда молчаниеобнаружен (это задача, для которой мне нужна помощь).
Я думаю, что мне придется каким-то образом работать с осциллограммой, чтобы обнаружить тишину, поэтому научиться читать аудиоданные в реальном времени во время записи.пытаюсь реализовать следующий пример:
https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize
Вот мой код:
audioinput.start({
sampleRate: 24000,
fileUrl: cordova.file.cacheDirectory + 'test.wav',
streamToWebAudio: true
});
const audioCtx = audioinput.getAudioContext();
const analyser = audioCtx.createAnalyser();
analyser.fftSize = 2048;
var bufferLength = analyser.fftSize;
var dataArray = new Uint8Array(bufferLength);
let dataArray;
function draw () {
requestAnimationFrame(draw);
dataArray = new Uint8Array(bufferLength);
analyser.getByteTimeDomainData(dataArray);
console.log(dataArray);
// ... draw the waveform ...
// ... or detect silence ...
}
draw();
К сожалению, результат заключается в том, что в функции draw ()все элементы audioData имеют значение 128.
Я тестирую на устройстве (OnePlus 6 с Android 9, но это должно работать и на iOS).
Спасибо!