erm:去除语音语气词的本地工具,解决手动删除痛苦!
1. erm:去除语音语气词的本地 CLI 工具是什么?
语言学家用“语流不畅词”(disfluencies)描述英语口语中填充停顿的“um”“uh”“er”等词及其拉长形式。作者因朋友手动删除语气词痛苦,开发了 [erm](https://github.com/dougcalobrisi/erm) 来解决问题。常见操作界面为“uvx erm input.wav”,它会生成清理后的 `.wav` 文件和 JSON 格式剪辑列表。
2. 简单方法为何行不通?
有人认为先转录找出语气词再用 ffmpeg 裁剪很简单,但只能达约 60% 效果,处理后音频更糟。原因有三:Whisper 会省略很多语气词;任意切割音频会产生“咔哒”声;切割前后背景噪音不匹配。
3. 关于 Whisper 有何说明?
[Whisper](https://github.com/openai/whisper) 是 OpenAI 开源的语音转文字模型,可本地运行。erm 使用 [ `faster-whisper` ](https://github.com/SYSTRAN/faster-whisper),速度快、内存占用少,默认用 `medium.en` 模型,也可指定 `small.en` 或 `large-v3` 模型。
4. 如何进行检测?
首先运行 Whisper,要求其提供单词级时间戳并别清理转录文本。识别出的已知语气词会被标记裁剪,拉长形式会与词根匹配。Whisper 会遗漏语气词,所以还需三次音频检查:间隙填充词检查、隐藏在单词中的填充词检查、过长单词检查。四次检查结果会合并。
5. 怎样优化裁剪点?
精确裁剪时波形可能产生台阶,出现“咔哒”声。有两个改进方法:先滑动裁剪端点找安静位置,再跳到波形过零处。之后清理短片段,短于约 120 毫秒的片段会合并到更大裁剪区域。
6. 如何进行拼接?
ffmpeg 用“交叉淡入淡出”技术拼接,根据裁剪大小调整重叠时长,重叠时长有上下限,且不跨越真实单词起始位置。
7. 如何处理环境噪音?
裁剪处背景噪音不匹配,解决方法是在原始录音中找安静片段循环播放到输出音频下方,默认自动查找,也可手动指定。
8. 降噪器为何关键?
ffmpeg 内置降噪器,但降噪会影响探测器查找语气词。erm 有四种模式,`hybrid` 是默认且最佳模式,`pre` 模式最差。
9. 如何进行验证?
音频处理可能出问题,有 `validate` 子命令,会进行三项检查:输出文件能正常打开;输出文件长度比输入文件短裁剪总长度;清理后文件转录无语气词。
10. erm 不处理哪些内容?
erm 不处理“like”“you know”和“I mean” 等词,也不处理重复单词、错误起始或长时间思考停顿,遵循只去除声音层面内容的原则。
11. 如何试用 erm?
最快试用方法是用 [uv](https://github.com/astral-sh/uv),也可常规安装。还需在 `PATH` 环境变量中配置 `ffmpeg` 和 `ffprobe`。音频在本地处理,常录制语音笔记或播客且说话有“um”的人可试试。
