Skip to content

Commit fbff9ec

Browse files
committed
updated test for VAD + split test.html into js, css, etc.
1 parent f04a5c8 commit fbff9ec

File tree

4 files changed

+422
-287
lines changed

4 files changed

+422
-287
lines changed

test-commons.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
//NOTE: load this after DOM or with ready-state check
2+
3+
function debugInfo(source, data){
4+
console.log(source, data);
5+
}
6+
7+
function showLogMessage(msg, data){
8+
var info = (typeof data == "object")? (data.name && data.message? (data.name + " - " + data.message) : JSON.stringify(data)) : data;
9+
logElement.textContent += "\n" + (new Date().toLocaleTimeString()) + " - " + (msg + " - " + info);
10+
logElement.scrollTo(0, logElement.scrollHeight);
11+
}
12+
13+
function vibrate(pattern){
14+
if (typeof window.navigator.vibrate == "function"){
15+
window.navigator.vibrate(pattern);
16+
}
17+
}
18+
19+
function addWaveToPage(wavAudio, targetEle){
20+
var audioEle = document.createElement("audio");
21+
audioEle.src = window.URL.createObjectURL((wavAudio.constructor.name == "Blob")? wavAudio : (new Blob([wavAudio], { type: "audio/wav" })));
22+
audioEle.setAttribute("controls", "controls");
23+
var audioBox = document.createElement("div");
24+
audioBox.appendChild(audioEle);
25+
if (!targetEle) targetEle = document.getElementById("mainView") || document.body;
26+
targetEle.appendChild(audioBox);
27+
}
28+
29+
var fixedPlots = {
30+
1: {
31+
graph: (new uPlot.lazy.AutoSeries(document.getElementById('chart1'), 150, {
32+
rememberMax: true
33+
})),
34+
use: (document.getElementById("usePlot1")? document.getElementById("usePlot1").checked : true)
35+
},
36+
2: {
37+
graph: (new uPlot.lazy.AutoSeries(document.getElementById('chart2'), 150, {
38+
rememberMax: true
39+
}, {
40+
showAxisX: false
41+
})),
42+
use: (document.getElementById("usePlot2")? document.getElementById("usePlot2").checked : true)
43+
},
44+
3: {
45+
graph: (new uPlot.lazy.AutoSeries(document.getElementById('chart3'), 50, {
46+
//rememberMax: true
47+
}, {
48+
yRange: [-0.1, 1.1]
49+
})),
50+
use: (document.getElementById("usePlot3")? document.getElementById("usePlot3").checked : true)
51+
}
52+
}
53+
function usePlot(index, ele){
54+
var p = fixedPlots[index];
55+
if (p){
56+
p.use = ele.checked;
57+
var container = document.getElementById("chart" + index);
58+
if (container) container.style.display = p.use? "" : "none";
59+
}
60+
}
61+
uPlot.lazy.colorPalette[0] = "#ceff1a"; //default color for first line in graph
62+
63+
function addChartContainerToPage(){
64+
var ele = document.createElement("div");
65+
ele.className = "chart";
66+
(document.getElementById("mainView") || document.body).appendChild(ele);
67+
return ele;
68+
}
69+
function plotData(data, plotIndex){
70+
var p = fixedPlots[plotIndex];
71+
if (p){
72+
if (p.use){
73+
p.graph.addValues(data);
74+
p.graph.draw();
75+
}
76+
}else{
77+
var ele = addChartContainerToPage();
78+
var x = uPlot.lazy.createSequence(0, data.length);
79+
uPlot.lazy.plot({
80+
targetElement: ele,
81+
showPoints: false,
82+
strokeWidth: 1,
83+
data: [x, data]
84+
});
85+
}
86+
}

test-resampler-static.html

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<!doctype html>
2+
<html lang="en-us">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
<title>SEPIA Web Audio Resampler Test</title>
8+
9+
<script src="src/visualization/uPlot.iife.min.js"></script>
10+
<script src="src/visualization/uPlot-lazy.min.js"></script>
11+
<script src="src/visualization/uPlot-lazy-heatmap.min.js"></script>
12+
<link rel="stylesheet" href="src/visualization/uPlot.min.css">
13+
14+
<script src="src/polyfills/audioworklet-polyfill.js"></script>
15+
<script type="text/javascript" src="src/processor.js"></script>
16+
17+
<script type="text/javascript" src="src/resources/pcm-convert.js"></script>
18+
<script type="text/javascript" src="src/resources/fir-filter-resampler.js"></script>
19+
20+
<link rel="stylesheet" type="text/css" href="tests.css">
21+
<style></style>
22+
</head>
23+
<body>
24+
<div id="mainView">
25+
<h1>SEPIA Web Audio Resampler</h1>
26+
<button onclick="testResampler();">Test Speex Resampler</button>
27+
<button onclick="testResampler2();">Test FIR Resampler</button>
28+
<!--<div id="chart3" class="chart"></div>-->
29+
</div>
30+
<script type='text/javascript' src="test-commons.js"></script>
31+
<script type='text/javascript'>
32+
33+
//set correct modules folder
34+
SepiaFW.webAudio.defaultProcessorOptions.moduleFolder = "src/modules";
35+
36+
function testResampler(obj, quality){
37+
if (!obj) obj = {};
38+
if (!quality) quality = 0;
39+
var smallBuff;
40+
var smallBuffRes;
41+
var testFile = "test-sounds/chatter_counting.wav";
42+
var testFileSampleRate = 24000;
43+
SepiaFW.webAudio.readFileAsBuffer(testFile, function(arrayBuffer){
44+
var buff = new Int16Array(arrayBuffer); //new Uint8Array(arrayBuffer);
45+
//var buff = new Int16Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]);
46+
//buff = buff.map(function(num){ return (num / 17) * 32767; });
47+
buff = buff.slice(40000, 60000);
48+
//smallBuff = buff.slice(40000, 60000);
49+
smallBuff = buff;
50+
/*smallBuff = pcmConvert(buff, {
51+
channels: 1,
52+
interleaved: false,
53+
dtype: 'int16',
54+
endianness: 'le'
55+
}, {
56+
dtype: 'int8'
57+
});*/
58+
plotData(smallBuff);
59+
SepiaFW.webAudio.resampleBufferViaSpeex(smallBuff, testFileSampleRate, 16000, 1, quality, function(r){
60+
smallBuffRes = r.samples[0];
61+
/*smallBuffRes = pcmConvert(r.samples[0], {
62+
channels: 1,
63+
interleaved: false,
64+
dtype: 'uint8',
65+
endianness: 'le'
66+
}, {
67+
channels: 1,
68+
interleaved: false,
69+
dtype: 'float32',
70+
endianness: 'le'
71+
});*/
72+
plotData(smallBuffRes);
73+
obj.a = smallBuff;
74+
obj.b = smallBuffRes;
75+
});
76+
}, console.error);
77+
return obj;
78+
}
79+
function testResampler2(){
80+
//FirFilterResampler
81+
var buff = new Float32Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]);
82+
buff = [...buff, ...buff, ...buff];
83+
buff = buff.map(function(num){ return (num - 9)/17; });
84+
plotData(buff);
85+
86+
var resampler = new FirFilterResampler().getProcessor(48000, 16000, 127); //inputSampleRate, targetSampleRate, minSampleSize (filter size is Min(127, odd(minSampleSize)))
87+
console.log("filterArray", resampler.filterArray);
88+
if (resampler.filterArray) plotData(resampler.filterArray);
89+
90+
var buffRes = resampler.process(buff);
91+
92+
plotData(buffRes);
93+
return {a: buff, b: buffRes};
94+
}
95+
</script>
96+
</body>
97+
</html>

0 commit comments

Comments
 (0)