added changes on checking similarity

This commit is contained in:
kicap1992
2022-03-21 00:07:28 +08:00
parent 638f0a9aee
commit 9da68fbc38
172 changed files with 99465 additions and 49 deletions

View File

@ -34,8 +34,12 @@
throw new TypeError("Cannot call a class as a function");
}
}
var Recorder = exports.Recorder = (function () {
function Recorder(source, cfg) {
var _this = this;
@ -88,7 +92,8 @@
record(e.data.buffer);
break;
case 'exportWAV':
exportWAV(e.data.type);
console.log(e.currentTarget.sampleRate);
exportWAV(e.data.type,e.currentTarget.sampleRate);
break;
case 'getBuffer':
getBuffer();
@ -111,8 +116,34 @@
}
recLength += inputBuffer[0].length;
}
function downsampleBuffer(buffer, rate) {
if (rate == sampleRate) {
return buffer;
}
if (rate > sampleRate) {
throw "downsampling rate show be smaller than original sample rate";
}
var sampleRateRatio = sampleRate / rate;
var newLength = Math.round(buffer.length / sampleRateRatio);
var result = new Float32Array(newLength);
var offsetResult = 0;
var offsetBuffer = 0;
while (offsetResult < result.length) {
var nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);
var accum = 0, count = 0;
for (var i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i++) {
accum += buffer[i];
count++;
}
result[offsetResult] = accum / count;
offsetResult++;
offsetBuffer = nextOffsetBuffer;
}
return result;
}
function exportWAV(type) {
function exportWAV(type,sampleRate) {
var buffers = [];
for (var channel = 0; channel < numChannels; channel++) {
buffers.push(mergeBuffers(recBuffers[channel], recLength));
@ -123,7 +154,11 @@
} else {
interleaved = buffers[0];
}
var dataview = encodeWAV(interleaved);
var downsampledBuffer = downsampleBuffer(interleaved, sampleRate);
var dataview = encodeWAV(downsampledBuffer);
/* var dataview = encodeWAV(interleaved); */
var audioBlob = new Blob([dataview], { type: type });
self.postMessage({ command: 'exportWAV', data: audioBlob });
@ -172,6 +207,10 @@
inputIndex++;
}
return result;
/* var result = new Float32Array(inputL.length); */
/* for (var i = 0; i < inputL.length; ++i) */
/* result[i] = 0.5 * (inputL[i] + inputR[i]); */
/* return result; */
}
function floatTo16BitPCM(output, offset, input) {