detectSilenceRuns (lib/audio-tighten.ts)

Gitruck/cli · src/lib/audio-tighten.ts · typescript · MIT
voice

* 配音轨句间停顿收紧(add-audio-tighten-pauses)——**决策纯函数**。 立题:`fragment_interval` 只覆盖自训音色;云引擎音色(真机三条片用的就是)在合成侧 **没有任何办法**调短停顿。实测 `voice-B.wav` 202.96s 里 53.9s 是句间静音(26.6%), 收到 0.2s 后全片少 28.8 秒。 本文件只做「该压哪些、压完时码怎么映射」,不碰文件 IO —— 那部分在 `commands/audio.ts`。

// Source: https://github.com/Gitruck/cli | License: MIT | Copyright 2026 同合云 (Gitruck)
// Provided via justclaw.it.com; keep this notice with the code.
/**
 * 配音轨句间停顿收紧(add-audio-tighten-pauses)——**决策纯函数**。
 *
 * 立题:`fragment_interval` 只覆盖自训音色;云引擎音色(真机三条片用的就是)在合成侧
 * **没有任何办法**调短停顿。实测 `voice-B.wav` 202.96s 里 53.9s 是句间静音(26.6%),
 * 收到 0.2s 后全片少 28.8 秒。
 *
 * 本文件只做「该压哪些、压完时码怎么映射」,不碰文件 IO —— 那部分在 `commands/audio.ts`。
 *
 * ## 五条判据(每条都是真机踩出来的,改之前先读)
 *
 * ① **只压跨句界的静音**。句与句在 transcript 里**首尾相接**,停顿包在每句自己的时段内——
 *    「波形里所有静音」≠「句间停顿」。真机误压 14/14/15 处句内换气(「店在上野阿美横町 /
 *    JR 高架桥底下 / 叫珍珍轩」这种换气被削 0.1s),主理人一耳朵听出句子发赶。
 * ② **静音判据用相对 RMS**(见 `detectSilenceRuns`)。`ffmpeg silencedetect` 在 -25dB
 *    都报 **0 段**——TTS 的底噪高于那个阈值。
 * ③ **引用段整体豁免**。它在轨上的时长 MUST 恒等于源片时长,从中间削一截就是画音错位;
 *    真机曾在一处同期声中间挖掉 0.8

... (truncated -- full source via MCP)

See the full source, get the GitHub permalink, and search for more like it.

Get a free API key