LipGAN 细读

整体介绍

请添加图片描述

用户的声音或者文字信息,可以被翻译。
这里实现的是视频的翻译。 生成用户说翻译后(语言转换后)的唇形视频。

项目pipeline(作者实现的是LipGAN)

请添加图片描述
请添加图片描述

模块名字功能
Video输入视频
Extract audio提取出原视频的音频信息
ASRAutomatic Speech Recognition 语音识别, 输出text
Deep speech 2: End-to-end speech recognition in english and mandarin
NMTNeural machine translation 机器翻译,输出另一个语言的text
TTSText-to-Speech, 输出另一个语言的音频
Deep voice 3: Scaling text-tospeech with convolutional sequence learning
Attention is all you need.
Voice Transfertts产生的声音转换成用户的声音
Parallel-data-free voice conversion using cycle-consistent adversarial networks
LipGAN该用户说另一个语言的视频
Generated Video音频+视频

论文阅读

摘要

近年机器翻译效果突飞猛进,数字场景交流需求的增加,
所以在音频翻译的基础上做了face翻译。
face 翻译就是从一个语言到另一个语言的唇形同步。
我们的工作:

  1. speech-to-speech 翻译系统
  2. LipGAN实现 Face-to-Face 翻译
    我们的成果
  3. LRW 测试 遥遥领先
  4. 有现实项目落地
  5. 代码、模型开源

introduction

  1. 这项工作的实用价值
  2. 现存问题
    1. 翻译的声音和用户听起来差别很大
    2. 翻译后的声音和用户原始视频的唇形差别很大
  3. 我们pipeline,参考上面的图
  4. 一些技术细节
    1. 生成的lip用对抗的形式来监督
    2. Face pose 不用对齐

background

Lip synthesis 唇形同步问题由来已久。

Rewrite:driving visual speech with audio

1997, 首次提出

Obamanet: Photo-realistic lip-sync from text 、Synthesizing obama: learning lip sync from audio

2017年,非实验环境下比较真实,采用landmark的形式,对未出现在训练集的数据不能很好预测

You said that?

2017, phoneme-to-viseme mapping,取得了通用的唇形同步, 不同的语言可以拆解成相同的音素

Talking Face Generation by Adversarially Disentangled Audio-Visual Representation

audio-visual(这个声音长度500个单词) +对抗

LipGAN

请添加图片描述

Face Encoder

You said that? 里面网络输入image 的face pose 和用于监督的gt face pose 不相同,这样 reconstruction 会有问题
这样训练的结果会让face pose 进行改变,但是这个不是我们想要的
将gt 的下半部分mask起来, 想让网络知道最终的pose, 在这半照片上绘制出对应的唇形

Audio Encoder

常见的cnn,具体需要看一下代码实现

Face Decoder

这个就是将gt mask后的图片进行唇形绘制,完整照片的原因是,让网络知道用户的嘴唇长什么样子

discriminator

audio encoder 和 Face encoder 就是generator中的

具体过程

数据准备

  1. 随机选择T ms的时间窗口,提取出对应的音频信息A
  2. 选取 T ms的中间一帧图片S,作为gt
  3. 将T mouth mask掉, 下一半图片得到Sm
  4. 选择一张S’,和这个S 的音频不一样的照片

Generator

请添加图片描述

Discriminator损失请添加图片描述

请添加图片描述gt 没有损失
请添加图片描述语音不匹配的真实图片,有损失,这个很重要
请添加图片描述生成的图片,有损失

请添加图片描述

y 判别器的gt
d S 和 S’ 的编码loss
m: 超参数 2

Generator loss

在这里插入图片描述

逐像素求L1损失

效果

因为是音素(ms级别), 所以可以看做是对音标的学习,所以才能在不同的语言上泛化。
英语 about, 学习到的是 a b ou t四个口型,
那么汉语可以有 鹅 播 奥 特 , 国际音标可以标注所有的发音

C#中的委托(Delegate)是一种引用类型,它可以引用具有特定参数列表和返回类型的方法。委托类似于C和C++中的函数指针概念,但是更加安全和功能强大。委托在C#中扮演着非常重要的角色,特别是在事件驱动编程和异步编程中。 委托可以被实例化为一个对象,并且可以绑定一个或多个方法,这些方法需要与委托的签名相匹配。当你调用一个委托时,它会依次调用所有绑定的方法。委托是事件处理的基础。 C#内置了几种标准委托,它们分别对应不同的方法签名,主要包括: 1. Action:无返回值的方法委托,可以有0到16个参数。 2. Func:有返回值的方法委托,可以有0到16个参数。 3. Predicate:总是返回布尔值的方法委托,可以有0到16个参数。 例如,一个无参数无返回值的委托定义如下: ```csharp public delegate void Action(); ``` 一个带有一个int参数和返回int的方法的委托定义如下: ```csharp public delegate int Func<int>(); ``` 一个带有一个int参数并返回布尔值的委托定义如下: ```csharp public delegate bool Predicate<int>(int parameter); ``` 委托可以支持多播,即同时引用多个方法。你可以通过使用加号(+)运算符来将多个方法绑定到同一个委托对象上,使用减号(-)来解除绑定。 委托的使用示例: ```csharp public void Greet() { Console.WriteLine("Hello, World!"); } public void Inform() { Console.WriteLine("This is an informative message."); } // 创建委托实例 Action action = new Action(Greet); // 绑定第二个方法 action += Inform; // 调用委托,将依次执行Greet和Inform方法 action(); ``` 委托是.NET框架中事件模型的基础,也经常用在异步编程中,比如使用`Func<T>`和`Action<T>`作为`Task`的参数。此外,从C# 2.0开始,内置委托的使用在很大程度上被lambda表达式所简化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值