0
我正在做下采样48hkz到16khz。要做到这一点,我需要一个过滤器来防止混淆。 WebAudio API已经filters,而这正是我要寻找:BiQuadFilters vs MyOwnFilter - Javascript WebAudio API
biquadFilter = context.createBiquadFilter();
biquadFilter.type = "lowpass";
biquadFilter.frequency.value = 12000;
biquadFilter.Q.value = 3;
,但我可以用这个简单的算法使这个:
//Order 3 - Indirect form 2
var a_coef = [1.000000000000000, -0.965779713179161, 0.582644165984302 , -0.106017056545330];
var b_coef = [0.063855924532476, 0.191567773597429, 0.191567773597429, 0.063855924532476];
var z1 = 0; var z2 = 0; var z3 = 0; var z0 = 0;
for (var i = 0; i < buffer.length; i++) {
z0 = buffer[i] + a_coef[1] * z1-a_coef[2] * z2-a_coef[3] * z3;
buffer[i] = b_coef[0] * z0 + b_coef[1] * z1+b_coef[2] * z2 + b_coef[3] * z3;
z3 = z2; z2 = z1; z1 = z0;
};
哪种方式消耗更多的资源? BiquadFilters在本地代码中被翻译?是最有效的方法吗?
所以尽管“myownfilter”的操作简单。 WebAudioAPI的过滤器将始终在“结果与资源消耗”关系中做得更好。 – carduh
你能否给我一些链接,我可以证明WAAPI的哪些部分是用本机代码写的? @OskarEriksson – carduh
当然可以! BiquadNode(以及其他API)可以在这里找到:https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp&sq=package :铬 –