作者 | Amirsina Torfi、Seyed Mehdi Iranmanesh、Nasser M. Nasrabadi

译者 | 清爹

整理 | Jane

出品 | AI科技大本营

【导读】唇语识别系统使用机器视觉技术,从图像中连续识别出人脸,判断其中正在说话的人,提取此人连续的口型变化特征,随即将连续变化的特征输入到唇语识别模型中,识别出讲话人口型对应的发音,随后根据识别出的发音,计算出可能性最大的自然语言语句。

唇语识别并非最近才出现的技术,早在 2003 年,Intel 就开发了唇语识别软件 Audio Visual Speech Recognition(AVSR),开发者得以能够研发可以进行唇语识别的计算机;2016 年 Google DeepMind 的唇语识别技术就已经可以支持 17500 个词,新闻测试集识别准确率达到了 50% 以上。



大家一定很好奇唇语识别系统要怎么实现。Amirsina Torfi 等人实现了使用 3D 卷积神经网络的交叉视听识别技术进行唇语识别,并将代码托管到 GitHub 上开源:

传送门:

https://github.com/astorfi/lip-reading-deeplearning

接下来就为大家介绍如何使用 3D 卷积神经网络的交叉视听识别技术进行唇语识别,完整的论文可参阅:

https://ieeexplore.ieee.org/document/8063416

下面是进行唇语识别的简单实现方法。

用户需要按照格式准备输入数据。该项目使用耦合 3D 卷积神经网络实现了视听匹配(audio-visual matching)。唇语识别就是这个项目的具体应用之一。

概况

当音频损坏时,视听语音识别(Audio-visual recognition,AVR)被认为是完成语音识别任务的另一种解决方案,同时,它也是一种在多人场景中用于验证讲话人的视觉识别方法。AVR 系统的方法是利用从某种模态中提取的信息,通过填补缺失的信息来提高另一种模态的识别能力。

问题与方法

这项工作的关键问题是找出音频和视频流之间的对应关系。我们提出了一种耦合 3D 卷积神经网络架构,该架构可以将两种模式映射到一个表示空间中,并使用学到的多模态特征来判断视听流间的对应关系。

如何利用 3D 卷积神经网络

我们提出的该架构将结合时态信息和空间信息,来有效地发现不同模态的时态信息之间的相关性。我们的方法使用相对较小的网络架构和更小的数据集,并在性能上优于现有的视听匹配方法,而现有方法主要使用 CNN 来表示特征。我们还证明了有效的对选择(pair selection)方法可以显著提高性能。

代码实现

输入管道须由用户提供。其余部分的实现包含基于话语的特征提取的数据集。

唇语识别

就唇语识别来讲,必须将视频作为输入。首先,使用 cd 命令进入相应的目录:

运行专用的 python file 如下:

运行上述脚本,通过保存每个帧的嘴部区域来提取唇部动作,并在画框圈出嘴部区域来创建新的视频,以便进行更好的可视化。

所需的 arguments 由以下 Python 脚本定义, VisualizeLip.py 文件中已定义该脚本:

一些已定义的参数有其默认值,它们并不需要进一步的操作。

处理

视觉部分,视频通过后期处理,使其帧率相等,均为 30f/s。然后,使用 dlib 库跟踪视频中的人脸和提取嘴部区域。最后,所有嘴部区域都调整为相同的大小,并拼接起来形成输入特征数据集。数据集并不包含任何音频文件。使用 FFmpeg 框架从视频中提取音频文件。数据处理管道如下图所示:

输入管道

我们所提出的架构使用两个不相同的卷积网络(ConvNet),输入是一对语音和视频流。网络输入是一对特征,表示从 0.3 秒的视频中提取的唇部动作和语音特征。主要任务是确定音频流是否与唇部运动视频在所需的流持续时间内相对应。在接下来的两个小节中,我们将分别讲解语音和视觉流的输入。

语音网络(Speech Net)

在时间轴上,时间特征是非重叠的 20ms 窗口,用来生成局部的频谱特征。语音特征输入以图像数据立方体的形式表示,对应于频谱图,以及 MFEC 特征的一阶导数和二阶导数。这三个通道对应于图像深度。从一个 0.3 秒的视频剪辑中,可以导出 15 个时态特征集(每个都形成 40 个 MFEC 特征),这些特征集形成了语音特征立方体。一个音频流的输入特征维数为 15x40x3。如下图所示:

语音特征使用 SpeechPy 包进行提取。

要了解输入管道是如何工作的,请参阅:

code/speech_input/input_feature.py

视觉网络(Visual Net)

在这项工作中使用的每个视频剪辑的帧率是 30 f/s。因此,9 个连续的图像帧形成 0.3 秒的视频流。网络的视频流的输入是大小为 9x60x100 的立方体,其中 9 是表示时态信息的帧数。每个通道是嘴部区域的 60x100 灰度图像。

架构

该架构是一个耦合 3D 卷积神经网络,其中必须训练具有不同权重的两个网络。在视觉网络中,唇部运动的空间信息和时态信息相结合,以此来利用时间相关性。在音频网络中,提取的能量特征作为空间维度,堆叠的音频帧构成了时间维度。在我们提出的 3D 卷积神经网络架构中,卷积运算是在连续的时间帧上对两个视听流执行的。

训练 / 评估

首先,克隆存储库。然后,用 cd 命令进入专用目录:

最后,必须执行 train.py 文件:

对于评估阶段,必须执行类似脚本:

运行结果

下面的结果表明了该方法对收敛准确度和收敛速度的影响。

最好的结果,也就是最右边的结果,属于我们提出的方法。

所提出的在线对选择方法的效果如上图所示。

分析到这,希望大家可以到 Github 上找到源码,开始练起!附上作者给的代码演示。

DEMO 演示地址

1.Training/Evaluation :

https://asciinema.org/a/kXIDzZt1UzRioL1gDPzOy9VkZ

2.Lip Tracking:

https://asciinema.org/a/RiZtscEJscrjLUIhZKkoG3GVm

--【完】--

推荐阅读

象棋人工智能算法的C++实现(三)——注重功能分区!

Google 全球员工围攻 Google!

全面梳理百度世界大会,李彦宏又新吹了几个牛!

她说:真的,没事别嫁程序员

中心化交易所弊端尽显,DEX时代即将到来?用户分析告诉你

2019秋招AI岗位竞争究竟有多激烈?

南开大学提出最新边缘检测与图像分割算法,精度刷新记录(附开源地址)

点击阅读原文,查看大会更多详情。2018 AI开发者大会——摆脱焦虑,拥抱技术前沿。

唇语识别技术的开源教程,听不见声音我也能知道你说什么!相关推荐

  1. 「唇语识别技术」看不透TA的心,但可以听懂TA的话

    导读 唇语识别有着极长的历史.古代的唇语师通过长期的训练,具备了"观察别人的嘴型,解读其表达语句"的能力.在现代社会里,一些听力障碍者们也会使用这种技巧与他人交谈,补充听力器官的不 ...

  2. 唇语识别!AI 领域的下一个万亿市场?

    英国查尔斯王子迎娶卡米拉时,读唇者成功破解了伊丽莎白二世与儿子的低语,让女王糟糕的婆媳关系浮现在大众眼前 -- 这可能是"唇语识别"第一次大面积走进大众的视野. 什么是唇语识别 所 ...

  3. 唇语识别真会是语言交互的终极战场?

    文 | 夏汀 来源 | 智能相对论(aixdlun) 在今年的乌镇世界互联网大会上,搜狗展出了一项黑科技--唇语识别,12月14号搜狗在北京又公开演示了这项技术.作为行业领先的唇语识别系统,搜狗在非特 ...

  4. AI如何练就读唇术?唇语识别数据功不可没

    所谓的"唇语识别",其实并不神秘. 早在古代,就有专门的唇语师存在.通过长期的训练,他们具备了"观察别人的嘴型,解读其表达语句"的能力.随着科技的发展,人工智能 ...

  5. 史上最详细唇语识别数据集综述

    更新:VIPL官网网页格式更改,导致旧的LRW1000链接无法访问,现已更新LRW1000数据集链接,内部包含申请需要的文件 推荐一个大佬的综述,关于实现唇语识别的多种途径. 说明:本文包括经常用语唇 ...

  6. 从人脸识别到唇语识别,图像识别技术发展现状

           "唇语识别研究的起源有一个故事.2006年世界杯上,马特拉齐好像说了一句话把齐达内惹怒了,然后齐达内就用头撞了马特拉齐.事后,大家都在猜他到底说了什么." 山世光 中 ...

  7. 今日新出 CV 论文汇总(含医学图像、目标检测、唇语识别、SLAM等)

    点击我爱计算机视觉标星,更快获取CVML新技术 最近,52CV分享了多篇CVPR 2019 的论文,有位群友问难道除了CVPR 就没有值得读的论文了吗?当然不是,其实很多优秀的工作并不一定出自CVPR ...

  8. 时间卷积网络(TCN)在唇语识别中的应用

    目录 前言 一.TCN的发展与应用 二.TCN详解 三.MS-TCN用于唇语识别 四.DC-TCN用于唇语识别 总结 前言 唇语识别是深度学习领域极具挑战性的课题,主要表现在两方面:一是技术的复杂性, ...

  9. 史上最详细唇语识别最新研究进展记录

    本文是唇语识别近2年来最新的方法的记录,主要集中在中英文词级数据集如LRW,LRW-1000,英文句子级数据集如LRS2,英文短语级数据集如OuluVS2,以及其他一些数据集. 记录方法为1.简要翻译 ...

最新文章

  1. Ubuntu16.04 pip3 install 报错 working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
  2. javascript学习笔记2
  3. docker的安全管理与TLS/LLS加密通信
  4. AOP (面向切面编程)
  5. 【JVM】强引用、软引用、弱引用、虚引用分别是什么
  6. 怎样学好python编程-Python编程怎么学习好?老男孩Python入门
  7. 背景虚化_背景虚化的效果用手机怎么拍?原来这样简单
  8. 大白菜方式制作win10 PE启动U盘
  9. matlab进行差分检验,热传导方程几种差分格式的MATLAB数值解法比较
  10. Unity 编辑器启动弹窗
  11. C++Builder的基本功能
  12. pig java api_Pig安装及入门案例
  13. 「链节点活动年度总结」2019年区块链行业会议回顾
  14. 2017京东实习生笔试题(一)
  15. Sentinel-1 SAR数据与精密轨道数据下载
  16. 信息安全-大数据安全需求分析与安全保护工程
  17. TCHAR char
  18. XGBoost线性回归工控数据分析实践案例(原生篇)
  19. 数字化转型,我只推荐看这两本书
  20. 颜色空间(HSV/HSB与HLS)的区别

热门文章

  1. Git之一次Push的回滚之旅
  2. 图片数据损坏了怎么恢复
  3. ACL 2020 | 特定风格标题生成《Hooks in the headline》论文阅读笔记
  4. 音视频知识体系(一)
  5. 桌面虚拟化技术 KVM
  6. 配电房环境智能监测系统及轨道巡检机器人
  7. linux raid5模拟数据丢失,Linux服务器右异步RAID-5数据恢复实例分析
  8. 大数据技术之Kylin
  9. AI行业强者愈强?Tesra超算网络助力中小AI开发企业!
  10. 机器人扫地机什么牌子好?