我使用 webapi MediaRecorder 来捕获语音。
var options = {mimeType: "audio/webm;codecs=opus", audioBitsPerSecond:16000};
mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder.addEventListener("dataavailable", function(event) {
var reader = new FileReader();
reader.addEventListener("loadend", function() {
var int8View = new Int8Array(reader.result);
});
reader.readAsArrayBuffer(event.data);
});
mediaRecorder.start(200);
所以每 200 毫秒,我会得到一个包含音频剪辑的 blob。该数据的 int8View 如下所示:
-5,-127,36,84,-128,123,-125,37,35,-109,-94,120,111,-110,40,-93,-7,77,35,-62,83,-36,- 12,47,127,47,-75,-35,89,55,65,-75,-106,96,-86,30,118,37,51,-28,-2,-38,124,-95,102,-91, -109,……
我的问题是如何获得每个采样点的幅度或该剪辑的平均幅度?我的目的是用它来检测语音与静音。
剪辑是用 opus 编码的,所以我假设将每个数字的绝对值相加是行不通的,对吧?
谢谢!