这是WebRTC的 AEC3(声回声取消. 3) 的端口库
WebAssembly 和 JavaScript, 这样可以执行回声取消任意
而不是相信任何回声取消 getUserMedia 联合国
来.
由此衍生出来的Google WebRTC 执行程序在3 Clause 下 BSD 许可证,因此这个库的编译版本属于同一范围 执照 此库本身提供的少量胶质代码下方 所谓“0-clause BSD许可证”并不要求归属. 此外,WebRTC使用的图书馆组件也属于Apache 2许可.
API 密码
包含 webrtcaec3.js,或导入或要求将该库作为模块。 一旦
库已装入, WebRtcAec3 函数返回对一个
WebRtcAec3 模块实例。 与一个 WebRtcAec3 模块实例 AEC3, (中文(简体) ),
AEC3.AEC3 是 AEC3 实例的构建器,使用三个参数:
样本率,以及渲染(输出)和捕获的通道数
(输入)溪流相分出. AEC3 库本身是同步的,所以如果你
需要同步, 在 WebWorker 中使用 .
综合起来:
const AEC3 = await WebRtcAec3();
const aec = new AEC3(sampleRate, outputChannels, inputChannels);
请注意,并非所有抽样率都会奏效。 事实上,大多数不会。 基本上,使用
48000。 。 。 .
AEC3实例揭示出三种方法: analyze, (中文(简体) ), processSize,以及
process启用 analyze 用于分析渲染(输出)数据:
aec.analyze(outputData /* Float32Array[] */);
使用 process 用于处理捕获(输入)数据,取消回声。 它存着
将数据处理成输出缓冲器,您必须提供。 你用得着
processSize 以获得输出缓冲器每个通道的必要大小.
const bufSz = aec.processSize(inputData);
const outBuf = [new Float32Array(bufSz)]; // one per channel
aec.process(outBuf, inputData /* Float32Array[] */);
... do something with outBuf ...
analyze, (中文(简体) ), processSize,以及 process 每个选择都使用可选“选项”
参数,特别是输入数据的样本率。 如果
输入数据的样本率与样本率不符
AEC3 实例已经创建,将重新被复制 .
关于每种方法的进一步文献,见类型文件.