@ 沙漠- ant- labs/ clear
JavaScript 的在线语音增强。 单曲录音很吵 (平顶麦克风、未经处理的房间、交通)并返回播客准备的48千赫音频: 从精细的地皮上取出 DeepFilterNet 3 (英语),然后声音 向交付目标正常化。 一切都在本地运行,所以录音从不 离开设备或浏览器.
两条共用一条 Clear API : (英语)
@desert-ant-labs/clear(默认):一个WebAssembly输油管 LitteRT.js (法语) 推论 (XNNPACK默认加速CPU,可选WebGPU),用于 浏览器。 没有本地的依赖性,所以每个目标都有一个干净的进口建筑 多目标捆绑机(Next.js、Remix、SvelteKit、Nuxt),包括 浏览器捆绑和客户端-组件 SSR 通过这些框架 节点. 这是安全的 导入 服务器侧渲染时, 但 LiteRT.js 需要 浏览器( 或 Web Worker) 以初始化, 所以Clear.load()只运行推论 在浏览器中; 在平端节点中调用它 交给你/native。 。 。 .@desert-ant-labs/clear/native: 预建的本地核心( LiteRT on Linux, 核心ML在macOS上,用于 服务器侧推论 在节点。 没有@litertjs/core, (中文(简体) ), 没有建造工具,没有旗帜。 从纯服务器代码( API 路由、 服务器) 导入 动作,普通节点脚本). 不要从同样组件导入它 在浏览器中制作.
# Browser (default entry):
npm i @desert-ant-labs/clear @litertjs/core
# Server-side inference in Node (/native entry) needs no extra install:
npm i @desert-ant-labs/clear
使用量
import { Clear } from "@desert-ant-labs/clear"; // browser
// import { Clear } from "@desert-ant-labs/clear/native"; // server-side Node
const clear = await Clear.load(); // downloads and caches on first use
const result = await clear.enhance(samples, 48_000);
result.samples; // Float32Array, 48 kHz mono, whatever went in
result.measuredLUFS; // integrated loudness of the input
result.measuredTruePeakDBFS; // true peak of the output, after limiting
result.realtimeFactor; // above 1 is faster than real time
clear.dispose();
输入可以是 Float32Array 或简单的数组,以任何样本速率.
频道
输出为 默认单无论什么,模型都是单的,所以 保留一对立体声,每个频道(约1.8x单声道)都要通过推断 运行)。 每个频道通过一个条目 财务报告和审定财务报表 要求保留:
const stereo = await clear.enhance([left, right], 48_000, { channelMode: "preserve" });
stereo.channelCount; // 2
stereo.channels; // [Float32Array, Float32Array]
stereo.samples; // the first channel
离开 channelMode 单独(或设置为 "mono"之前的下调混合
增强,所以模型运行一次:
await clear.enhance([left, right], 48_000); // one channel out, one inference pass
主人公是关节:一个音响增益和一个限制信封横跨
所以它不会移动立体声图像. balanceChannelsLUFS 这是
故意例外,对一对其侧面记录在不同级别:
await clear.enhance([left, right], 48_000,
{ channelMode: "preserve", balanceChannelsLUFS: -20 });
掌握
默认情况下,输出会正常化到 Apple Podcasts 目标(-19 LUFS) ,使用 a -1.5 dBTP 上限,由外观前方限制器而不是转动 整个文件下来 以适应它最响亮的瞬间.
await clear.enhance(samples, 48_000, { targetLUFS: "spotify" }); // -14 LUFS
await clear.enhance(samples, 48_000, { targetLUFS: -23 }); // an explicit target
await clear.enhance(samples, 48_000, { targetLUFS: null }); // skip mastering
LOUDNESS_PRESETS 携带已公布的平台目标(applePodcasts, (中文(简体) ),
spotify, (中文(简体) ), youtube, (中文(简体) ), broadcast) (中文(简体) ). 另有两个接头:
peakCeilingDBFS (违约-1.5)和 maxGainDB (违约9),它如何约束
一个非常安静的输入被解除 这样模型的噪音地板就不会出现
带着它.
strength 将增强的信号与原信号相混合,因为
音效处理得太快 :
await clear.enhance(samples, 48_000, { strength: 0.7 });
outputSampleRate 设定交货率。 该型号一直运行在48千赫和
结果在出道时被重印,所以计分器和限制器仍然看到
其常数的计算率用于:
await clear.enhance(samples, 48_000, { outputSampleRate: 44_100 });
自我接待和进步
const clear = await Clear.load({
modelBaseUrl: "/assets/clear/", // browser: serve the files yourself
directory: "/var/cache/clear", // Node: adopt or download here
onProgress: (fraction) => console.log(fraction),
});
模型重播和修订被固定在这个 SDK 版本上,所以安装是 可再生产。 体重维持 拥抱 脸。 。 。 .
许可证
沙漠蚂蚁实验室 源头可破坏许可证。为大多数免费提供 应用软件和商务许可证必须规模化。 完整的术语在链接. 许可证发放: 许可@ desertant.com。 。 。 .
SDK的第三方通知: THIRD_PARTY_NOTICES.md。 。 。 .
权重第三方通知: THIRD_PARTY_NOTICES.md。 。 。 .