社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

算法工程师教你硬核看剧:用深度学习还原《隐秘的角落》的真实台词

机器之能 • 4 年前 • 681 次点击  


前两天,我一口气看完了电视剧《隐秘的角落》,剧情相当精彩。美中不足的是,剧组为了让片子过审, 导致11集,12集的剪辑顺序被打乱,甚至台词被修改,以至于片中有几个处演员口型与台词对不上,剧情也有点让人摸不到头脑。因此我尝试通过人工智能技术还原了被修改的台词,从而还原了一部分原本的剧情,一个更加黑暗的真相。




撰文 | 东泽 EuryChen



因要过审而被修改的台词

被修改的台词主要集中在 12 集,朱朝阳、严良两人火海逃生后在天台上的对话:
  • 严良:「告诉警察吧」

  • 朱朝阳:「像我爸希望的那样 」

  • 朱朝阳:「你想报警么」

这段对话其实被后期修改过了,口型和内容不吻合。至于「隐秘」剧组为什么要修改这段台词,我也是在还原了原对话之后才知道答案,因为原对话实在过于黑暗了,坐实了朱朝阳的黑化,是不可能过审的。
那么原对话到底是什么?往下看,我用深度学习来告诉你答案。


用机器学习识别唇语,还原对话

这部分主要演示用机器学习的手段识别唇语,唇语识别就是靠分析人说话时嘴唇与面部的特征来解读人说话的内容。这里我并不介绍唇语识别模型的基础架构(篇幅太长,后面有机会单独讲),而是通过以识别张朝阳唇语为例,演示一下唇语识别的一个简单流程。
关于人工智能技术入门,建议阅读这篇文章:《读懂一个 Demo,入门机器学习》。


这个案例中的模型我选使用基于 Tensorflow 的 Facemash 模型进行二次训练。Facemash 的主要作用是获取面部表情的特征。之后通过分析嘴唇的运动特征,来预测出说话内容的汉语拼音的声母和韵母。(直接通过嘴型预测汉字难度太大,所以我要先预测出拼音,之后再根据剧情+拼音还原出原对话)
第一步先通过 Facemash 拿到朱朝阳对话的面部特征,如图:
这张「面膜」就是 Facemash 模型识别出来的特征点间的连接,下图是某一帧的面部识别数据:
我们将一系列连续的数据展示在3D空间坐标轴下的话,就是一张对话中的的脸了。


拿到嘴唇和面部特征后,就要进行预测了,这部分我直接给大家展示动态流程图:
利用这种方法,我还原了这句原台词汉语拼音的几种可能:


  • ni ba xiao ba chou me

  •  ni ba xiang ba chou me

  • ...

  • ni bu xiang bao chou me

  • ...


这些拼音翻译过来是啥呢?我把每组拼音用输入法测试了一遍,发现 「ni bu xiang bao chou me」这句的结果与剧情最贴切:「你不想报仇么?」

把「你不想报仇么」带入对话,发现口型也对上了。bingo,这才是原台词呀:
同样的方法,我又还原了几处原对话,如下:
严良:「那该怎么办」而不是「告诉警察吧
朱朝阳:「除非让他被抓...」而不是「像我爸希望的那样
朱朝阳:「你不想报仇么」而不是「你想报警么
好了以上就是我用机器学习 + 剧情联想还原的天台对话。接下来我就要来解读剧情了,解读为什么这段对话会坐实朱朝阳的黑化,不能过审。


解读被修改的台词

国产剧的过审有两个最重要的原则:
1 不能出现悬案
2 坏人必须被绳之以法


知道了这个前提,我们再来审视一下被修改的台词。
全剧出现了三张内存卡,原卡最后给了张东升,空卡给了严良,而复制卡一直在朱朝阳手里。
也就是说 11 集大火之后,朱朝阳本可以将复制卡交给警察,从而将张东升绳之以法。但是这时候的朱朝阳并不敢报警,因为他并不知道普普是否将朱晶晶的真实死因告诉了严良,因此他不敢冒险。那么对于朱朝阳来说,此时此刻对于自己最有利的方案就是:利用张东升的手杀死严良,然后再把复制卡交给警察,逮捕张东升。所以根据上面还原的台词,天台上的真实对话很可能是:
严良问:「那该怎么办?」
朱朝阳应该说了一个抓捕张东升的计划,这里由于被剪辑过,不知道剧情,还原难度比较大,但我还是还原了一句话:「除非让他被抓...」。根据还原的这句话,我认为朱朝阳告诉严良的计划应该是这样的:
1.朱朝阳把张东升约到船头
2.张东升与严良冲突
3.朱朝阳立刻报警当场抓住张东升犯罪事实
然而这时候,严良对朱朝阳没有了之前的信任,因此对这个计划有些犹豫。
最后朱朝阳补刀:「你不想报仇么?」
最终善良的严良为替普普报仇,还是同意了这个计划。


以上就是我结合剧情大致还原的对话。朱朝阳的目的是借张东升的手杀死严良,利用这个计划借刀杀人,让严良送死的。
而朱朝阳内心真实计划我想是这样的:
1.引导张东升与严良见面发生冲突(自己并不报警,后面警察来了之后朱朝阳的表情是震惊的,因为并不是他报警的)
2.如果胜利回来的是严良,那么他就会乘其不备杀死严良(朱朝阳和严良学过打架),然后嫁祸给张东升
3.如果胜利回来的是张东升,那么他就会跳进大海逃生(朱朝阳一直在练习憋气),然后把复制卡交给警察


分析到这里,朱朝阳的内心的阴暗已经不忍直视。可能这也正是「隐秘」剧组原本想要呈现的坏小孩,就像原著小说「坏小孩」里说的那样「在成年人眼里,小孩子永远是简单的。即使小孩会撒谎,那谎言也是马上能戳穿的,他们根本想象不到小孩子的诡计多端,哪怕他们自己也曾经当过小孩。」
以上。


中国AI公司首批上市潮来袭2020-05-25

华为飓风过境,台积电何以成为中心眼?2020-05-18

从典范走向幻灭:谷歌13亿元的智慧城市梦2020-05-10

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/71124
 
681 次点击