@audio/denoise-debreath

中文文档
0.4.0发布于 2026/10/08MITTypeScriptES Module近 30 天下载 1707

De-breath: breaths between phrases taken down, told by their length, level and the pauses either side; the room and the speech stay

原始使用文档

@audio/denoise-debreath npm MIT

De-breath: breaths between phrases taken down, told by their length, level and the pauses either side; the room and the speech stay

npm install @audio/denoise-debreath
import debreath from '@audio/denoise-debreath'

Takes the breaths between phrases down by range; the room around them, and the speech, stay. A breath is told by what an inhalation is (Ruinskiy & Lavner 2007): unvoiced, longer than a consonant, well under the speech, between phrases, its noise shaped by the open tract. Per frame of vad, on the 0.3–8 kHz band: 10 dB or more over the room (the band's 10th-percentile frame), 12 dB or more under the speech (its 95th), under half of it over 4 kHz (no sibilant), under 80 % of it under 1 kHz (a breath's noise lies over the open tract's formants; a phrase's decaying vowel, its murmur and creak lie under 1 kHz, and a breath they run into is no longer taken for part of them). Runs of such frames are a breath when they last 0.15–1 s, their median stands 14 dB over the room, under 60 % of their energy lies under 1 kHz, at most half their frames are voiced (periodic in the 50–1000 Hz band, where a voice's first harmonics lie: Talkin's normalized cross-correlation 0.6 or more, the band 6 dB over its room, whose hum is periodic too; @audio/vad's periodicity, read up to 4 kHz, took a breath through narrow resonances or a codec's bands for voiced), and a room-level frame lies within 0.1 s on either side: a pause, which a word's own consonants have not. The cut works on the band over 300 Hz (split at zero phase: a room's rumble under a breath is the room's), ramps in over attack and out over release inside the breath, and never takes it under the room's level in that band, where it would leave a hole. room turns down what is neither speech nor breath, as 0.2 did. The whole clip is read at once (streaming: false).

debreath(data, { fs: 48000 })                   // breaths 12 dB down
debreath(data, { range: -20, room: -6 })        // deeper, and the room between phrases 6 dB down too
ParamDefault
range-12dB, how far a breath goes down
room0dB, how far what is neither speech nor breath goes down
attack0.005s, the cut's ramp in (with room: the gain's rise before speech)
release0.01s, its ramp out (with room: the gain's fall after speech)

Against iZotope RX 12 Breath Control, node bench/rx/debreath.mjs in audio (2026-10): ten Spoken Wikipedia narrations, 3 minutes each, their 90 breaths labelled by the acoustics of an inhalation (most clear inhalations on spectrograms, the rest quiet noise in pauses), and VoiceBank test speech with 60 of those breaths put before its phrases (labels exact, the speech another). Every setting chosen on ten other narrations (55 breaths) and 28 other speakers (26), by Youden's J, breaths caught less speech frames harmed; RX at Gain −12 dB, range's (its default 0 dB changes nothing), tuned: Offline, Gated, sensitivity 0 (defaults Real-time, Natural, 5). Per breath, its 0.3–8 kHz level change; per speech frame (voiced, or a word's edge within 0.1 s of voicing), turned down by over 3 dB or not:

narrations: breaths, median · down ≥ 6 dBspeech frames down > 3 dBother frames, medianVoiceBank + breaths: median · down ≥ 6 dBspeech frames down > 3 dB
RX 12 defaults (Gain 0 dB)0.0 dB · 0 %0.0 %0.0 dB0.0 dB · 0 %0.0 %
RX 12 defaults, Gain −12 dB−9.7 dB · 81 %0.69 %0.0 dB−6.6 dB · 52 %0.59 %
RX 12 tuned−12.0 dB · 88 %1.96 %−0.1 dB−12.0 dB · 73 %0.99 %
0.2.10.0 dB · 11 %0.11 %0.0 dB0.0 dB · 20 %0.19 %
0.3.0−10.9 dB · 78 %0.49 %0.0 dB−11.2 dB · 78 %0.58 %
0.4.0−11.2 dB · 92 %0.76 %0.0 dB−11.5 dB · 88 %0.49 %

0.3.0 missed 20 of the 90 narration breaths. Eight ran into the phrase before or after them through its quiet frames (a vowel's decay, an onset's murmur), which passed for breath by level: bridged into one run, it had no pause on that side. Six, in one narration whose codec left a breath as a few narrow bands, were read as voiced by @audio/vad's periodicity, which looks up to 4 kHz. 0.4.0 catches the six and six of the eight; it asks a frame's shape too (under 80 % of its 0.3–8 kHz energy under 1 kHz) and reads voicing where a voice's first harmonics are, under 1 kHz; the median a run needs over the room went from 15 to 14 dB, chosen on the tuning narrations (one breath more there, no speech frame more). On the tuning sets, breaths caught 51 → 54 of 55 and 19 → 20 of 26, speech frames touched 0.23 → 0.15 % and 0.21 → 0.37 %. On the test narrations it touches more speech than 0.3.0 (0.76 % against 0.49 %, still under RX's 1.96 %): most of the new spans are noise between phrases, inhalations ending at the next phrase's onset or holding a few frames periodic under 1 kHz, which the measure's 0.1 s word edges count as speech; one is a phrase's creaky end. 0.2.1 turned down what the VAD did not call speech; its speech reaches 0.3 s from a vowel across gaps of 0.15 s, which holds most breaths. Music and singing (Vibe Ace, Brahms, the Nutcracker, a trumpet, four VocalSet arpeggios), frames within 30 dB of the loudest turned down by over 3 dB: none (0.3.0, counted the same way: 1.8 % of the trumpet's; 0.2.1, as counted then: Brahms 8.8 %, Vibe Ace 2.2 %). VoiceBank+DEMAND noisy test speech, every fourth utterance, frames within 30 dB of the clean utterance's loudest turned down by over 3 dB: 0.07 % (0.3.0: 0.05 %; 0.2.1, as counted then: 5.0 %).

Use when: breaths between phrases on a voiceover, a podcast, a narration.
Not for: a breath that runs into a word (no pause on either side); hiss or room tone in pauses: room, gate, omlsa.


Part of @audio/denoise — the denoise family umbrella. This README is generated from the umbrella docs.

MIT © audiojs

版本与发布记录

@audio/denoise-debreath 共发布 13 个版本,首次发布于 2026/07/09;过去 12 个月发布了 13 个版本。

版本发布日期距今
0.4.0latest2026/10/081 个月前
0.3.02026/10/071 个月前
0.2.12026/10/051 个月前
0.2.02026/10/051 个月前
0.1.82026/07/113 个月前
0.1.72026/07/114 个月前

关于 @audio/denoise-debreath 的常见问题

@audio/denoise-debreath 是什么?

De-breath: breaths between phrases taken down, told by their length, level and the pauses either side; the room and the speech stay

如何安装 @audio/denoise-debreath?

在项目目录运行 npm install @audio/denoise-debreath,或使用 pnpm add / yarn add / bun add。

@audio/denoise-debreath 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@audio/denoise-debreath 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@audio/denoise-debreath 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@audio/denoise-debreath 可以商用吗?

@audio/denoise-debreath 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@audio/denoise-debreath 的下载量有多少?

根据 npm 官方下载统计,@audio/denoise-debreath 在 2026/10/07 – 2026/11/05 这 30 天内被下载 1,707 次,日均约 57 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@audio/denoise-debreath 还在维护吗?

最新版本 0.4.0 发布于 2026/10/08(1 个月前);至今共发布 13 个版本,其中过去 12 个月发布了 13 个;首次发布于 2026/07/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。