news 2026/8/24 1:54:01

Gentle 强制对齐实操指南:把音频和文字逐词对齐到时间戳

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Gentle 强制对齐实操指南:把音频和文字逐词对齐到时间戳

Gentle 强制对齐实操指南:把音频和文字逐词对齐到时间戳

【免费下载链接】gentlegentle forced aligner项目地址: https://gitcode.com/gh_mirrors/ge/gentle

Gentle 是一个基于 Kaldi 的语音文本强制对齐工具,把一段文字转录稿和音频逐词对齐,输出每个单词的起始/结束时间戳,常用于字幕生成和语音分析。

⚡ 30 秒拿到第一个强制对齐结果

仓库里自带一段现成的音频和转录稿(examples/data/lucier.mp3examples/data/lucier.txt),装完环境后直接跑:

python3 align.py examples/data/lucier.mp3 examples/data/lucier.txt -o align.json

输出是一个 JSON 数组,每个单词一个对象,包含 start、end(秒)和音素级别的信息;不写-o时结果直接打印到终端。这就是强制对齐的核心产物:文字和时间轴的一一映射。

📦 装好 Kaldi 与模型,一次到位

依赖要求如下,全部由脚本自动处理,你只需要系统里装好 Python 3:

依赖用途安装方式
Python 3运行 align.py / serve.py系统自带或 brew
ffmpeg把任意格式音频重采样为 8kHz wavinstall_deps.sh 自动装
gcc、make、automake、autoconf 等编译 Kaldiinstall_deps.sh 自动装
ATLAS、zlib 等数学库Kaldi 数值计算依赖install_deps.sh 自动装

安装命令就三行:

git clone https://gitcode.com/gh_mirrors/ge/gentle cd gentle ./install.sh

install.sh内部依次做了四件事:拉取 Kaldi 子模块、执行 install_deps.sh 装系统包并注册 Python 包、在 ext/install_kaldi.sh 里编译 Kaldi、再用 install_models.sh 下载并解压 kaldi-models-0.04.zip 预训练模型。Kaldi 编译耗时约 30~60 分钟。不想自己编译的话,也可以直接跑docker run -P lowerquality/gentle得到一个开箱即用的服务。

用三种方式跑对齐

命令行跑一次强制对齐

align.py接收音频和转录文本两个位置参数,常用选项:

参数默认值作用
-o/--output输出到 stdout指定 JSON 输出文件
--nthreadsCPU 核数对齐线程数
--conservative启用更严格的对齐策略
--disfluency把 uh、um 等填充词也纳入对齐
--logINFO日志级别

音频在送进 Kaldi 前会统一重采样为 8kHz wav,所以 mp3、wav 等 ffmpeg 支持的格式都能处理。

浏览器上传音频看对齐结果

python3 serve.py

服务默认监听 8765 端口,打开网页后可以上传音频和文本,查看对齐过程并在结果页下载数据。每次任务的结果保存在transcriptions/<uid>/目录下,包含 align.json、align.csv 和可视化页面 index.html,csv 格式方便直接导入表格软件。

在程序里调用对齐接口

服务还暴露了 REST API,同步调用时响应体就是 JSON 结果:

curl -F "audio=@audio.mp3" -F "transcript=@words.txt" "http://localhost:8765/transcriptions?async=false"

去掉async=false则返回 302 跳转到任务目录,轮询其中的 status.json 即可拿到进度。

值得深挖的两个进阶特性

多轮对齐:给没对上词第二次机会

第一轮对齐后,部分词可能因为噪声或含糊发音匹配不到时间戳。transcribe流程会把这些未对齐词自动切成片段(时长限制在 0.75~60 秒之间),对每段音频单独重跑一次 Kaldi,再把结果拼回原对齐序列。这段逻辑在 gentle/multipass.py 里,日志会打印两轮前后未对齐词的数量,方便你判断音频质量是否拖累了精度。它始终自动运行,不需要额外开关。

强制对齐参数怎么调:保守模式与填充词

两个开关都作用于词与音频片段的匹配策略:--conservative启用更保守的对齐,适合转录稿和音频不完全吻合、宁可少标时间也不标错位置的场景;--disfluency开启后 uh、um 这类填充词也会被分配时间戳,适合口语播客、访谈类音频。Web 界面的上传选项里对应同名勾选框,行为一致。

⚠️ 避坑指南

  • 安装时 Kaldi 编译报错→ 系统依赖没装全 → 先单独跑./install_deps.sh,对照 install_deps.sh 里的包清单确认安装成功再继续。
  • 模型下载中断或特别慢install_models.sh从外网拉取 zip 包 → 手动下载 kaldi-models-0.04.zip 放到项目根目录解压,跳过该步骤即可。
  • 浏览器提示 Encoding failed→ 系统缺少 ffmpeg 或上传的不是合法媒体文件 → Ubuntu 上需从 PPA 装 ffmpeg,装完重传音频。
  • uh、um 在结果里没有时间戳→ 默认填充词不参与对齐 → 命令行加--disfluency,网页端勾选 disfluency。
  • 长音频处理时 CPU、内存吃紧→ 线程数默认取 CPU 核数 → 用--nthreads调小,或把长音频切成片段分批处理。

📚 延伸阅读

  • gentle/forced_aligner.py:对齐主入口,能看到首轮转录、差异对齐、二轮重对齐和邻接优化的完整流水线。
  • gentle/multipass.py:未对齐词如何被切出片段、单独重对齐再拼回原序列。
  • gentle/standard_kaldi.py:Kaldi 子进程接口的封装,音频怎么喂进去、结果怎么解析都在这里。

【免费下载链接】gentlegentle forced aligner项目地址: https://gitcode.com/gh_mirrors/ge/gentle

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 1:53:14

darktable 快速上手:免费的 RAW 处理与摄影工作流

darktable 快速上手&#xff1a;免费的 RAW 处理与摄影工作流 【免费下载链接】darktable darktable is an open source photography workflow application and raw developer 项目地址: https://gitcode.com/GitHub_Trending/da/darktable 商业修图软件一年订阅费几百块…

作者头像 李华
网站建设 2026/8/24 1:51:04

从零到一:16个实战项目带你掌握AI Agent开发核心与工程化

最近和几个做AI应用的朋友聊天&#xff0c;发现一个挺有意思的现象&#xff1a;大家聊起Agent&#xff08;智能体&#xff09;时&#xff0c;口气都很大&#xff0c;张口就是“自主规划”、“工具调用”、“多模态交互”&#xff0c;但真问起“你最近用Agent解决了什么具体问题…

作者头像 李华
网站建设 2026/8/24 1:50:58

福州全域私域AI方案:G-Claw如何实现抖音私信自动回复

福州全域私域AI方案&#xff1a;G-Claw如何实现抖音私信自动回复随着数字营销环境的演变&#xff0c;福州地区的许多企业在寻求数字化转型时&#xff0c;逐渐将目光从单纯的人力堆砌转向了智能化工具的应用。核心诉求往往集中在“优化人力配置”与“提升线索转化效率”这两个维…

作者头像 李华
网站建设 2026/8/24 1:50:48

构建具备记忆能力的邮件智能体:从RAG到Agent的工程实践

在实际邮件处理场景中&#xff0c;无论是个人邮箱还是客服工单系统&#xff0c;都面临一个核心矛盾&#xff1a;如何让自动化回复既精准又具备连续性。简单的关键词匹配或固定模板回复&#xff0c;无法理解用户的历史诉求和上下文&#xff0c;导致每次交互都像是“初次见面”&a…

作者头像 李华