你有没有特别想念的人?可能ta是你的亲人,也可能是你的伴侣。
无论ta是谁,在我们的回忆中永远有他们的一席之地,他们一辈子都会在我们心底最柔软的角落驻留。
在哈利波特与死亡圣器中,哈利手握魔法石,他已故的爸爸、妈妈、教父和老师化作幽灵围绕在他的身边。

哈利和他们聊天,攀谈,诉说衷肠,好像他们活过来了一样,紧紧地围绕着他。
而如今,随着AI技术和数字虚拟人技术的不断发展,让已故的亲人变成虚拟的数字人继续和我们交谈不再是停留在科幻小说中的情节。
最近,B站UP主吴伍六就用Midjounrney、ChatGPT和D-ID等最新的AI技术「复活」了他刚刚去世的奶奶。
网友看后纷纷表示,恐怖谷。

在最新的一期视频中,吴伍六为我们还原了「复活」奶奶的整个过程。
首先是头像。要想生成逼真的对话,那么一个栩栩如生的AI头像是必不可少的。
吴伍六选择了当下主流的AI绘画软件Midjourney,并上传了一张自己的照片。

最终,他选择了下面这张作为头像,并继续优化。

奶奶的头像也是一样,AI根据上传的图片与文字描述生成了一些选择,而UP主再根据脑海中的回忆挑选一张最逼真的。

之后再如法炮制,用文字细化某些面部特征。比如皱纹、眼眸、发型和神态。我们可以看到,生成的头像细节非常完美。

下一步是音频。这一步的素材基本来自于过去的电话录音、录像视频或者微信语音。而UP主将过去奶奶的电话音频上传给了AI。

并用音频编辑软件AU进行调整。调整的方向主要集中在降噪、人声增强等等。
然后将更加清晰的音频样本切割成若干秒的短句,方便进行标注。
最后将处理好的音频打包放入语音合成系统中去。

利用语音合成系统,UP主就可以尝试输入文本转语音了。
现在,基本的素材都齐全了。接下来就是最关键的一步——生成虚拟数字人。
通过D-ID,用户可以生成数字虚拟人,并和他们展开交流。

在左侧选择头像,右侧上传文本或音频即可。
网站上奶奶的形象栩栩如生,音频也完美还原了奶奶的「乡音」。搭配上右侧拉家常一般的聊天内容,宛如和奶奶面对面视频通话一样。


有意思的是,奶奶的这些「回复」是UP主借助时下大热的ChatGPT生成的。
他告诉ChatGPT,「我很想我的奶奶,你能不能模仿她的口吻来和我交谈?」
透着人情味的人工智能,很难不让人感动落泪。而借助对奶奶的回忆,UP主也竭尽全力地让ChatGPT更像她的奶奶。

科技的最终目标是给人提供力量。这种力量不仅是物质上的,更重要的还是精神上的。虽然这些聊天内容并不完全拟人,也会有一些不贴切的表达。
但总的来说,生活中的小细节还是能给人最温柔的体验的。

吴伍六的这段视频引爆了B站,网友们众说纷纭。
有关于把逝去的亲人变成虚拟数字人的做法还是个新鲜事物。观念上的转变并不那么容易。
UP主亲自评论表示,这么做的目的是为了填补自己的小遗憾。在自述中他也提到,奶奶在大年初六去世,最后的几天里奶奶意识模糊,而UP主也没有好好的和奶奶告别。
他表示,不会过度缅怀,希望大家能通过AI的发展看到未来世界的多样性。

网友「水澹澹而生烟」也表示,这段视频激起了对自己爷爷的回忆。他在AI应用和伦理方面并没有过多想法,也不认可把数字虚拟人当作亲人生命的延续。
但他表示,如果能再看爷爷一眼,听一听爷爷的声音,自己就会倍感慰藉。

也有网友表示了不赞同的态度。铁缸哟就认为,数字虚拟人终归还是当不了缅怀之人的精神寄托的。

不过该项技术的未来发展如何,谁也不能预料。就像流浪地球2里提到的数字生命的概念一样,想象和现实之间总会存在鸿沟。
没有走到那一步,或者走到那一步之前,一切都是未知的。

当然,小编比较认可网友键垩家の执事的评论。无论虚拟数字人发展到什么地步,多珍藏一些自己所爱之人的照片、音频以及影像这件事,永远不会错。
让记忆停留在心里,让回忆变得更清晰。
参考资料:https://www.bilibili.com/video/BV1QM411H7xC/?vd_source=7c8f299fff2bf010a1422385cd948cc5
我在rspec中收到来自webkit驱动程序的以下消息:Capybara::Driver::Webkit::WebkitInvalidResponseError:UnabletoloadURL:http://127.0.0.1:44923/posts几天前它成功了。问题出在save_page方法上。有什么问题吗? 最佳答案 当我的页面出现错误时,我收到过类似的错误消息。您应该通过在测试模式下启动服务器(railss-etest)并自行访问页面来手动检查情况是否如此。 关于ruby-on-
我正在构建一个Rails应用程序并且使用的是Rails4.0.1。我有一个错误,并注意到它在3个月前被称为rails上的一个错误,所以我决定:捆绑更新并获得rails4.0.3这样做之后,测试和服务器都不会启动,并且会抛出错误:gems/railties-4.0.3/lib/rails/railtie/configuration.rb:95:in`method_missing':undefinedmethod`action_mailer'for#(NoMethodError)目前我在config/environments/*中注释掉了action_mailer行,但最好能找到一个真正的
我的测试是这样的:它“在通过非订阅或试用成员(member)资格时确实返回错误”期望(helper.description_for_subscription(recurring_plan)).toraise_error(RuntimeError)结束我的方法返回这个:失败“未知订阅模型类型!”然而Rspec返回此失败消息:失败/错误:expect(helper.description_for_subscription(recurring_plan)).toraise_error(RuntimeError)运行时错误:未知的订阅模型类型!这是怎么回事?? 最佳
有没有办法在C#中从外部应用程序引发事件?特别是来自Ruby?我需要通过Rails应用程序在C#中引发一些事情。 最佳答案 我假设“外部应用程序”是指在C#代码的进程空间之外的东西。此外,我假设您指的不是C#事件-这不是.NET实现域之外存在的概念-它们不是可以从代码外部访问的东西。所以这个问题的一般答案是“是的,这是可能的”-但由于您实际上是在尝试发送进程间通知,因此您将需要使用某种IPCmechanism..NET具有用于执行IPC的丰富API,范围从命名管道到DCOM,再到低级网络协议(protocol)(如TCP/IP)。您
在Ruby中,为什么未初始化的实例变量返回nil而未初始化的类变量引发NameError?比较:@some_uninitialized_variable#=>nil和:@@some_uninitialized_class_variable#=>NameError 最佳答案 我的看法如下:未初始化的局部变量会返回一个名称错误,因为Ruby不知道它是一个局部变量还是一个不存在的方法。如果未初始化的类变量在未定义时返回nil,当远祖实际为变量分配值nil时,可能会导致严重错误。也就是说,我认为这是在保护编码器。如果一个经常使用的特性,在未
文章目录前言1.AI的发展历程2.我是如何接触到人工智能的概念和产品的3.对于ChatGPT的一点看法4.AI对大学毕业生的职业发展的利与弊5.对于AI的思考和问题前言随着ChatGPT的爆火,生成式AI,大模型的人工智能被越来越多的人注意到,同时他也带来了许多问题。本文将对几方面进行探讨。1.AI的发展历程远古时期在公元前第一个千禧年,中国,印度和希腊哲学家都提出了一些推理的研究理论,比如亚里士多德(Aristotle)进行了演绎推理三段论的完整分析,欧几里得(Euclid)所著Elements是一种形式推理的模型,MuḥammadibnMūsāal-Khwārizmī,发明了代数学,即我们
目录1古彝文与古典保护2古文识别的挑战2.1西文与汉文OCR2.2古彝文识别难点3合合信息:古彝文保护新思路3.1图像矫正3.2图像增强3.3语义理解3.4工程技巧4总结1古彝文与古典保护彝文指的是云南、贵州、四川等地的彝族人使用的文字,区别于现代意义上的彝文,古彝文指的是在民间流通使用的原生态彝文,多达87046字。古彝文的起源距今至少数千年,是世界上最古老的文字之一。对古彝文字集研究有助于理解尚未被翻译成汉文、用字尚未规范化的古籍,更深层、透彻地作用于传统文化保护。古彝文字义对照图(网络资料+邵文苑供图)古籍是不可再生的宝贵资源,应当得到妥善保护。中国的古籍在历史上迭经水火兵燹等自然灾害、
我见过使用类引发异常的Ruby代码:raiseGoatException,"Maximumof3goatsperbumpercar."其他代码使用实例:raiseGoatException.new"Noleotardfoundsuitableforgoat."这两个都是以同样的方式获救的。是否有理由使用实例而不是类? 最佳答案 没有区别;在任何一种情况下都会实例化异常类。如果您提供一个字符串,作为new的参数或作为raise的第二个参数,它会被传递给initialize并且将成为异常实例的.message。例如:classGoatE
我正在研究thisprettythornyproblem并决定我可以通过这样做动态创建一个继承自StandardError的类:something="JustForBelow"error_class="#{something}Error".constantizeerror_class=StandardError.new但我遇到了一个非常奇怪的错误(在我看来),它是:UninitializedconstantJustForBelowError我不是在那里初始化它吗?(本质上)当我尝试这个时出现同样的错误:StandardError.const_get"#{something}Error"
我目前正在subject中创建一个对象,需要测试这是否会引发异常。以下代码说明了我要实现的目标:describeMyClassdodescribe'#initialize'dosubject{MyClass.new}it{is_expected.not_toraise_error(Some::Error)}endend我有一种感觉,我正在以错误的方式处理这件事。将subject设置为新对象而不创建对象两次的首选方法是什么?更新我的问题有两个。首先,这种语法不起作用:it{is_expected.not_toraise_error}但是,在itblock中使用expect确实如此(正如J