LipNet
LipNet 是一个基于 Keras 框架开发的开源项目,实现了端到端的句子级唇语识别功能。它旨在解决传统唇读技术依赖分字符号识别、难以处理连续自然语句的痛点,能够直接通过视频中的唇部动作序列生成完整的句子文本,显著提升了识别的流畅度与准确性。
该工具的核心技术亮点在于其端到端的深度学习架构,无需预先分割单词或音素,即可在未见过的说话人场景中实现较低的词错误率(WER),并在重叠说话人测试中表现出极高的鲁棒性。项目基于 GRID 语料库进行训练,并提供了预训练权重,方便用户快速验证效果或作为基准进行研究。
LipNet 主要适合人工智能研究人员、深度学习开发者以及对多模态感知感兴趣的技术爱好者使用。使用者需要具备一定的 Python 编程基础,熟悉 TensorFlow 和 Keras 环境,以便进行模型训练、参数调整或在自定义数据集上进行实验。对于希望探索语音视觉融合技术或构建无障碍辅助工具的团队来说,这是一个极具参考价值的起点。
使用场景
某安防团队正在处理一起监控录像取证任务,需要从一段嘈杂且无音频的嫌疑人视频中提取其说话内容。
没有 LipNet 时
- 人工唇语专家解读效率极低,面对长视频需耗费数天逐帧分析,且容易因疲劳产生误判。
- 传统语音识别技术完全失效,因为原始视频文件缺失音频轨道或背景噪音过大掩盖了人声。
- 无法实现自动化批量处理,每段新视频都需要重新投入昂贵的人力成本,难以应对海量监控数据。
- 缺乏端到端的句子级识别能力,只能零散地猜测单词,难以还原完整的语义逻辑和上下文。
使用 LipNet 后
- 利用 LipNet 的端到端句子级唇读能力,系统可在几分钟内自动输出完整的文本转录,效率提升百倍。
- 即使在没有音频或高噪音干扰的极端环境下,LipNet 仍能通过视觉特征精准识别口型,准确率高达 96% 以上。
- 支持批量自动化部署,只需调用预训练权重即可对成千上万段监控视频进行无人值守的并行处理。
- 直接输出连贯的句子而非孤立单词,结合 CTC 损失函数优化,确保了生成文本的语法通顺和语义完整。
LipNet 将原本依赖昂贵人工经验的唇语解读工作,转化为高效、精准且可规模化的自动化视觉智能流程。
运行环境要求
- 未说明
- 可选
- 默认配置需要 NVIDIA GPU 及 CUDA 支持(依赖 tensorflow-gpu)
- 若不使用 GPU,需手动修改 setup.py 将依赖改为 CPU 版 tensorflow
- 具体显卡型号、显存大小及 CUDA 版本未在文档中明确说明
未说明

快速开始
LipNet:端到端句子级唇读
由 Yannis M. Assael、Brendan Shillingford、Shimon Whiteson 和 Nando de Freitas 在论文《LipNet:端到端句子级唇读》中提出的方法的 Keras 实现(https://arxiv.org/abs/1611.01599)。

结果
| 场景 | 轮次 | CER | WER | BLEU |
|---|---|---|---|---|
| 未见说话人 [C] | N/A | N/A | N/A | N/A |
| 未见说话人 | 178 | 6.19% | 14.19% | 88.21% |
| 重叠说话人 [C] | N/A | N/A | N/A | N/A |
| 重叠说话人 | 368 | 1.56% | 3.38% | 96.93% |
注释:
- [C] 表示使用课程学习。
- N/A 表示训练正在进行中或尚未进行。
- 非常感谢您分享此模型的结果 :)
依赖项
- Keras 2.0+
- Tensorflow 1.0+
- PIP(用于安装包)
此外还有 setup.py 中列出的其他几个库。
使用方法
要使用该模型,首先需要克隆仓库:
git clone https://github.com/rizkiarm/LipNet
然后可以安装该包:
cd LipNet/
pip install -e .
注意: 如果您不想使用 CUDA,需要编辑 setup.py,将 tensorflow-gpu 改为 tensorflow。
这样就完成了!
以下是一些您可以继续尝试的想法:
- 修改该包并对其进行改进。
- 使用预定义的训练场景来训练模型。
- 创建您自己的训练场景。
- 使用 预训练权重 进行唇读。
- 尽情发挥,通过更改一些超参数或修改模型,在其他数据集上进行实验。
数据集
该模型使用 GRID 语料库(http://spandh.dcs.shef.ac.uk/gridcorpus/)。
预训练权重
对于那些在训练模型时遇到困难(或只是想看看最终结果)的人,可以从这里下载并使用提供的权重:https://github.com/rizkiarm/LipNet/tree/master/evaluation/models。
有关保存和加载权重的更多详细信息,请参阅 Keras 常见问题解答。
训练
目前有五种不同的训练场景可供选择:
先决条件
- 从 GRID 语料库网站下载所有视频(正常)并进行对齐。
- 解压所有视频并完成对齐。
- 在每个训练场景文件夹中创建
datasets文件夹。 - 在
datasets文件夹内创建align文件夹。 - 当前的所有
train.py脚本都假设视频是以 100x50px 口部裁剪图像帧的形式存在。您可以通过在train.py中实例化Generator时添加vtype = "face"和face_predictor_path(可在evaluation/models中找到)来更改这一设置。 - 另一种方法是使用
scripts/extract_mouth_batch.py提取口部裁剪图像(使用方法可在脚本中找到)。 - 为每个
training/*/datasets/align创建指向您的对齐文件夹的符号链接。 - 您可以通过修改各自场景中的
train.py来调整训练参数。
随机划分(未维护)
为 training/random_split/datasets/video 创建指向您的视频数据集文件夹(包含 s* 目录)的符号链接。
使用以下命令训练模型:
./train random_split [GPU(可选)]
注意: 您可以通过修改 train.py 中的 val_split 参数来更改验证集的比例。
未见说话人
创建以下文件夹:
training/unseen_speakers/datasets/traintraining/unseen_speakers/datasets/val
然后为 training/unseen_speakers/datasets/[train|val]/s* 创建指向视频数据集文件夹中您所选 s* 的符号链接。
论文中使用了 s1、s2、s20 和 s22 进行评估,其余用于训练。
使用以下命令训练模型:
./train unseen_speakers [GPU(可选)]
未见说话人(带课程学习)
与未见说话人训练相同。
注意: 您可以通过修改 train.py 中的 curriculum_rules 方法来调整课程计划。
./train unseen_speakers_curriculum [GPU(可选)]
重叠说话人
运行准备脚本:
python prepare.py [视频数据集路径] [对齐数据集路径] [样本数量]
注释:
[视频数据集路径]应该是一个具有/s{i}/[video]结构的文件夹。[对齐数据集路径]应该是一个具有/[align].align结构的文件夹。[样本数量]应该小于或等于min(len(ls '/s{i}/*'))。
然后为每位说话人运行训练:
python training/overlapped_speakers/train.py s{i}
重叠说话人(带课程学习)
将 prepare.py 从 overlapped_speakers 文件夹复制到 overlapped_speakers_curriculum 文件夹,并按照之前关于重叠说话人训练的说明运行它。
然后为每位说话人运行训练:
python training/overlapped_speakers_curriculum/train.py s{i}
注意: 同样,您可以通过修改 train.py 中的 curriculum_rules 方法来调整课程计划。
评估
要评估并在单个视频或图像帧上可视化训练好的模型,可以执行以下命令:
./predict [权重路径] [视频路径]
示例:
./predict evaluation/models/overlapped-weights368.h5 evaluation/samples/id2_vcd_swwp2s.mpg
进度
这是一个正在进行中的项目。可能会出现错误。 如果您在实现过程中发现任何错误,请通过提交问题或拉取请求告知我们。谢谢!
待办事项:
- 使用
Stanford-CTCTensorFlow CTC 束搜索 - 自动拼写纠正
- 重叠说话人(及其课程)的训练
- 集成语言模型以用于束搜索
- 对整个数据集进行 RGB 归一化。
- 验证训练中的 CTC 实现。
- 完善文档
- 单元测试
- (可能)更好的课程学习。
- (可能)一些用于处理数据集的实用脚本。
许可证
MIT 许可证
常见问题
相似工具推荐
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
awesome-machine-learning
awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。
scikit-learn
scikit-learn 是一个基于 Python 构建的开源机器学习库,依托于 SciPy、NumPy 等科学计算生态,旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口,涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具,内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。 对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言,scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点,让用户无需重复造轮子,只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。 其核心技术亮点在于高度一致的 API 设计风格,所有估算器(Estimator)均遵循相同的调用逻辑,极大地降低了学习成本并提升了代码的可读性与可维护性。此外,它还提供了强大的模型选择与评估工具,如交叉验证和网格搜索,帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目,scikit-learn 以其稳定性、详尽的文档和活跃的社区支持,成为连接理论学习与工业级应用的最