当前位置: 首页 > news >正文

两组声音的一维数据如何比较相似度_仅听声音就画出人脸,GAN再添新能力

525237905f63325c657e6796e28e63b3.gif

听声辨人,利用声纹进行解锁,这种技术已广泛应用,人类的声音含有该个体的一定特征,从而可以进行区分。那么仅通过声音,能否画出人像,并且尽可能地与讲话者相似呢?

近日,卡内基梅隆大学的 Yandong Wen 等人,利用生成对抗网络模型(generative adversarial networks, GANs)首次对这一问题作出研究,利用讲话者的语音生成一些匹配原说话者面部特征的人脸,并用交叉模态匹配(cross-modal matching task)评估了模型表现,可谓是语音画像领域的一大突破

模型框架

一个人的声音和骨骼结构、发声部位的形状等特征的确有关,但利用语音直接画出人脸,如何做到?

该由声音重建人脸的模型框架主要由四个卷积网络:语音嵌入模型(voice embedding network)、生成器(Generator)、判别器(Discriminator)、分类器(classifier)组成。

f518ff4d7c9f01fd1f5b3ecec4f31a36.png

图 | 基于 GAN 从声音重建人脸模型的框架。(来源:Yandong Wen, et al./CMU)

语音嵌入模型(voice embedding network)将输入的语音数据,梅尔倒频谱(log mel-spectrograms)转换为含有该声音特征的向量 e。该模型含有 5 层一维卷积神经网络,每一层均是经由卷积核为 3、步长为 2、padding 为 1 得到,并且都经过归一化层处理和 ReLU 单元激活,最后经过平均池化得到一个 64 维的向量。此模型是通过一个语音识别任务预先训练得到参数,并且参数在生成人脸的训练过程中保持不变

生成器(Generator)输入为语音嵌入模型产生的向量 e,输出是人脸 RGB 图像 f',由 6 层二维反卷积网络构成,激活函数采用 ReLU。

判别器(Discriminator)判断输入的图像 f(或f')是生成器伪造的图像还是真实的人脸,如果判断为伪造图会加大损失 Ld。由 6 层激活单元为 Leaky ReLU 的二维卷积网络构成,最后经过全连接层得到人脸图像数据。

分类器(classifier)用来将人脸图像与说话者匹配,如果匹配错误会加大损失 Lc。该模型由 6 层二维卷积网络和一个全连接层组成。

具体的结构如图表,其中 Conv 3/2,1 代表卷积核尺寸为 3,步长为 2,padding 填充为 1。

fe2a1afb5bc940b4f8b12c59dd42932a.png

图 | 从声音重建人脸模型的具体结构。(来源:Yandong Wen, et al./CMU)

模型通过最小化判别器与分类器的交叉熵损失 Ld 和 Lc 来训练,以期得到图像逼真且符合说话者特征的人脸。值得一提的是,此模型的测试集和训练集以及验证集相互独立,即测试时的声音是未听过的,人脸也未知。

模型表现

不特意挑选那些人脸和真实讲话者完美一致的结果,一般来讲,该模型的确能输出具有讲话者特征的人脸,即使不完全一模一样,从种族以及一些其他典型的面部特征来看,这个模型的确学习到了一些信息,输出结果和原讲话者非常像,并且语音时间越长,匹配的特征越多,两者越类似

d6e179e593da1e3eb1c9fdac22d5b779.png

图 | 从不同时长的正常录音生成人脸的结果图,右侧Ref为真实讲话者的不同脸部照片,从上到下的 4 位 Speaker 分别是 Danica McKellar, Cindy Williams, Damian Lewis, and Eva Green. (来源:Yandong Wen, et al./CMU)

当然,性别及年龄特征也可以很好地被学习到,左侧输出结果的年龄和性别与右侧真实人脸的年龄性别保持一致。在整个测试集上,生成图和真实讲话者性别相同的概率可以达到96.5%

33549373753648a62a2ac3b71191aaa4.png

图 | 从性别年龄的人脸重建,(a)是从老年声音生成的人脸;(b)是男性声音生成的人脸;(c)是女性声音生成的人脸。其中左侧为生成图,右侧为真实讲话者。(来源:Yandong Wen, et al./CMU)

如果用同一个人的不同语音片段,推测产生的人脸会保持相同特征吗?模型结果告诉我们,是这样。

选用同一个讲话者的 7 个不同语音片段,不特意挑选完美结果,模型所推测出的大概特征是十分一致的,这也侧面说明,模型的确可以从一个人的语音抽取出一些特征,映射成其脸部的某些特征。

8597ae2d947dd9d68493755238729d0b.png

图 | 利用一个人的 7 段不同语音重建人脸,左图(a)是重建的 7 张人脸图,右图(b)是对应的真实人脸在不同情况的照片(来源:Yandong Wen, et al./CMU)

进一步来讲,如果从语音中学到的特征真的可以映射成面部的特征,那么生成人脸图必定和真实讲话者的脸部是对应匹配的。换句话说,声音中的特征可以被生成人脸中蕴含的特征替代,那么由声音重组人脸就变成了人脸识别问题,两张脸(生成的和真实的)匹配,那么计划可行,这个匹配率也就成了衡量模型表现的指标。

在整个训练集和测试集上,该模型的匹配率分别是 96.83% 和 76.07%;将训练集和测试集按照性别分层,排除性别这一特征的助力,也就是直接比较同一性别上,生成的人脸和讲话者是否相像,匹配率在训练集和测试集上分别是 93.98%和 59.69%,这也证明了模型所学到的信息不仅仅是性别,还有其他更详细的面部特征。该模型表现不仅优于 DIMNets-G,同时,测试集表现不如训练集,说明模型还有很大提升空间。

6eb71bac4f382290d3a14a154e3e4952.png

图 | 不同模型在性别分层以及不分层的数据集上的表现。(来源:Yandong Wen, et al./CMU)

展望

该模型虽然表现尚佳,但仍有可提升的地方,比如头发和图像背景等与声音无关的特征,可以进行数据清洗将其去除,而有一些明显与发声有关的面部特征也可以加以利用,从而模型会更加精确。

总的来说,由音生貌,语音画像问题的一块空白得到了填补。

-End-

参考:

https://arxiv.org/abs/1905.10604

http://openaccess.thecvf.com/content_cvpr_2018/papers/Nagrani_Seeing_Voices_and_CVPR_2018_paper.pdf

https://www.robots.ox.ac.uk/~vgg/publications/2015/Parkhi15/parkhi15.pdf

数据集:将 Voice 数据集和 Face 数据集 ID 为同一个人的语音和人脸筛选出来,组成 1225 个对象的 139572 张图像和 149354 条语音,一个对象含有多个图像以及语音,所以图像数量和语音数量并不一致。

Voice 数据来源:Voxceleb 数据集,是从 YouTube 视频提取的包含 1251 人、超过 10 万条语音数据集,性别比例平衡,且说话人涵盖不同种族、口音以及职业年龄。

Face 数据来源:VGGFace 数据集。

相关文章:

  • mvc 扫描二维码跳转内部指定页面_小程序跳转最全使用手册
  • python 快速排名发包_SEO快速排名发包技术及原理
  • pythoncmdb_Python-CMDB开发
  • python热门吗_Python现在仍然是最热门的编程语言吗?
  • python 西门子_python读取S7-1200 DB块
  • 为什么真无线蓝牙耳机每次切换设备都要重新连接_悅响音质,尽在双耳-360 PlayBuds真无线蓝牙耳机...
  • 多个bit位整合成一个byte输出_Micro:Bit儿童编程神器第2课:25颗LED灯怎么玩
  • mysql 转int_一文彻底读懂MySQL事务的四大隔离级别
  • python箭头函数_函数----箭头函数
  • python中复数的乘法_PTA:Python解答1049 数列的片段和/1051 复数乘法
  • 14张思维导图python_收藏 | 14张思维导图-构建Python核心体系!Python语法总结!
  • 从底部上滑失灵_苹果iPhone11Pro屏幕失灵怎么办
  • python列表的基本操作_python中列表的基本操作
  • kmeans图像分割matlab代码_直播案例 | KMeans 的 Python 实现及在图像分割和新闻聚类中的应用...
  • vb6.0集成开发环境_加明作品|IDLE集成开发环境美化教程
  • “大数据应用场景”之隔壁老王(连载四)
  • 【comparator, comparable】小总结
  • 345-反转字符串中的元音字母
  • Angular Elements 及其运作原理
  • CAP理论的例子讲解
  • co.js - 让异步代码同步化
  • CODING 缺陷管理功能正式开始公测
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • docker-consul
  • java8 Stream Pipelines 浅析
  • JavaScript创建对象的四种方式
  • Java编程基础24——递归练习
  • Koa2 之文件上传下载
  • PHP面试之三:MySQL数据库
  • react 代码优化(一) ——事件处理
  • zookeeper系列(七)实战分布式命名服务
  • 安卓应用性能调试和优化经验分享
  • 百度小程序遇到的问题
  • 开发基于以太坊智能合约的DApp
  • 看域名解析域名安全对SEO的影响
  • 力扣(LeetCode)965
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 世界上最简单的无等待算法(getAndIncrement)
  • 小李飞刀:SQL题目刷起来!
  • 学习Vue.js的五个小例子
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​比特币大跌的 2 个原因
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #LLM入门|Prompt#3.3_存储_Memory
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (黑马C++)L06 重载与继承
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)Linux下编译安装log4cxx
  • (轉)JSON.stringify 语法实例讲解
  • .NET Compact Framework 3.5 支持 WCF 的子集