妈耶,摆脱机器音,二次宅的歌姬女友彻底活了!

640?wx_fmt=gif

640?wx_fmt=png

二次宅们,你们的虚拟歌姬女友/偶像可以真正出道了。

最近,一家日本公司展示了他们在虚拟歌姬上使用的新开发语音合成技术,效果惊艳,几乎听不出虚拟歌姬歌声中那“面瘫”式的机械音,现在的歌声有起承转合,有气息声,更有力度,能让你在脑海中自然脑补它的表情。

这项语音合成技术目前可以支持日语、中文和英语。先放出两个技术演示视频,你感受下每段视频里旧技术、新技术以及新技术合成后的比对效果。

引用网友克制的评价就是“延伸高频低频,衔接连贯柔和”,近乎人声啊。

对了,听出来是哪位歌姬的声音了吗?佐藤莎莎拉,这个在 2013 年面世的姑娘,近几年已经鲜少有它的新闻了,但这次随着 AI 语音合成的出现,让宅男们大呼“老婆重生了”。

等不及了,再来欣赏一曲中文版的《爱情转移》:

是不是觉得要甩人类的修音歌手好几条街?skr.

反正大部分激动的二次宅朋友们“疯辽”,一眼望去,评论全部都是目瞪口呆jpg.

640?wx_fmt=png

如此让二次宅感到炸裂的技术究竟如何做到,幕后操作者又是谁?

一个基本事实是,虚拟歌姬佐藤莎莎拉是日本 CeVIO 公司在 2013 发布的 CeVIO Creative Studio 声音创作软件中的虚拟角色。

公开资料显示,CeVIO Creative Studio 是基于 hts engine 引擎作成的新型语音和歌唱合成的软件,在算法本质上与 VOCALOID & UTAU 等软件的大声库“拼接算法”不同,因此只是较小的声库,但语音和歌唱可以简单而自然地合成,语音合成可以调整参数使虚拟歌姬说话更加接近人声,此外,还会自动加入呼吸声并自动调教。

但这次的技术应该是基于新版的合成引擎,由 CeVIO 的开发方 Techno-Speech 公司与名古屋工业大学国际音声言语技术研究所共同合作。Techno-Speech 在官方新闻稿中称,通过深度学习技术学习特定歌唱者的声质、语癖、演唱风格,并进行合成使之可以演唱任意的歌词和乐谱,只需歌唱者进行约 2 个小时的演唱就可以获取数据。

云知声 AI labs 研发总监告诉笔者,上述音频中旧的语音样例应是传统参数合成技术,缺点是合成声音的质量低,机械音较明显。而新语音样例借助深度学习技术,使得参数建模精度有明显提升,同时,可能使用最新的 WaveNet 声码器,使得合成音质有明显的提升。

另外,与合成自然说话的声音相比,合成歌声的技术要求是不是更高?

上述语音合成专家表示,两者都是数据驱动,但歌唱合成的韵律变化性反而没有自然说话时变化多端,这对数据量的要求也相应要小。歌唱合成需要很精准的韵律恢复,输入的是乐谱,而乐谱中已有很明确的韵律描述,比如某个字应该发多长音、发什么调,都可以通过规则计算出来,并根据结果对合成语音进行调整,从而不会有走调现象。反之,如果韵律恢复不准确,就会有明显走调现象。

至于新合成技术更详细的研究成果,Techno-Speech 公司将在 2019 年 3 月的日本声学学会春季会议上进行公布。Techno-Speech 公司还称,届时虚拟歌姬的歌唱水平会有飞跃性的提升。此外,该技术可能的应用还包括以下八个方面:

  • 艺术家歌声的复现(包括死者的声音)

  • 用于音乐制作和游戏开发

  • 虚拟 YouTubers 的视频流/直播活动

  • 虚拟演员的后期录制系统

  • AI 或语音对话系统的发声模块

  • 为外语/歌唱教育生成灵活的参考语音

  • 用于 ALS 或喉癌患者的语音设备

  • 护理设施的数字标牌

640?wx_fmt=png

从作词、作曲到演唱,AI 技术带来的能量毋庸置疑。

也许你还记得去年 9 月底微软小冰 diss 传统虚拟歌姬的事,当时前者高调宣称后者的技术过时,虚拟歌姬的调教技巧将不再具有价值,这引起了 V 家粉丝的集体抵制并迫使小冰道歉。

虽然这是营销层面的问题,但在技术上,新旧技术并不完全割裂,而是相互融合,深度技术的使用可以节省调教师的很多时间。或许,我们也会很快看到初音未来、洛天姬等虚拟歌姬靠 AI 技术迎来突破。

上个月,一位日本 35 岁青年与虚拟女友初音未来举办了婚礼,结婚理由是被 MIKU 的歌声治愈,遇到 MIKU 随即坠入“爱河”,十三年来不曾变心。

要是其他虚拟歌姬都有了现在这样细腻的歌声,二次宅们不更疯狂?有点不敢想。

本文经授权转自AI科技大本营。

 热 文 推 荐 

☞ 杨超越的声音+高晓松的脸,这个酸爽的技术你值得拥有!

☞ 传说,程序员历尽天下 Bug 即可得道升仙!

☞ 你真的知道 Python 字符串怎么用吗?

无业务不技术:那些誓用区块链重塑的行业,发展怎么样了?

☞ 下一次 IT 变革:边缘计算(Edge computing)

☞ 12306 脱库 410 万用户数据究竟从何泄漏?

年度重磅:《AI聚变:2018年优秀AI应用案例TOP 20》正式发布

☞ 老程序员肺腑忠告:千万别一辈子靠技术生存!

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

640?wx_fmt=gif点击“阅读原文”,打开 CSDN App 阅读更贴心!

640?wx_fmt=png喜欢就点击“好看”吧!
展开阅读全文

【小工具】VB6.0制作“标准DLL”----彻底摆脱ActiveX DLL的影子

10-09

  关于用VB6.0制作“标准DLL”这件事,网上早已出现过不少的争论了。我在这儿也不想对以前的事发表过多的评论。rn只是说一下最关键的区别:以前的各种制作方法,归根结底做出来的还是ActiveX DLL,只是比VB6直接编译出来的多了导rn出函数罢了;而使用我的这个小程序弄出来的DLL,就不再是 ActiveX DLL !rn  废话不多说,上图为证。rn  先上张用以前流传的方法做出的DLL的“效果图”。这是我用[url=http://bbs.csdn.net/topics/390589259][/url]所提到的方法做rn了个简单的示例。老马他们那儿曾经发布了个“函数添加大师”,我以前下载来看了下他的说明,但没安装使用,从他所rn说的来看,也是“带导出函数的ActiveX DLL”,只是使用比较方便罢了。rn[img=https://img-bbs.csdn.net/upload/201310/09/1381290829_789872.png][/img]rn  下面就上张用我的这个工具做出的DLL的“效果图”了。是把我上次发布的MD5模块稍作修改做了个DLL样例。这是实rn在的效果图,并不是把那几个函数 PS掉了的!rn[img=https://img-bbs.csdn.net/upload/201310/09/1381290855_727891.png][/img]rn软件界面样图:rn[img=https://img-bbs.csdn.net/upload/201310/09/1381290888_278034.png][/img]rn别的我不想再写了,下面把我写的软件“说明”文件的内容贴出来。rn欢迎大家发表见解。rn一会儿我把这些相关东西打包上传到资源,如果有兴趣的就下载来看看。rnrnrn⒈ 概述rn  VB6.0本身只支持制作ActiveX DLL文件。对于用VB6.0制作“标准DLL”(当然这rn是“狭义”的标准DLL:指带导出函数、直接调用的DLL,不用通过对象来调用),网rn上早已出现过不少的争论,但争来争去,似乎都是谁也没说服谁。网上也流传过不少rn的“用VB6.0制作标准DLL的方法”,虽然或繁或简,还有的做成了VB6.0的插件,但rn是这些方法的实质如出一辙,做出来的DLL文件,也仅仅是“带导出函数的ActiveX rnDLL”而已。虽然带有导出函数,可以直接通过"Declare"来使用了,其实它们并没有rn彻底摆脱ActiveX DLL的影子。rn  不过,用我这个制作工具链接的DLL,就不再是ActiveX DLL了。可以用M$出品的rnDependency Walker工具对制作出来的DLL文件查看对比,就明显看出区别:以前网流rn传的方法做出的DLL,如图片“DllTest”中所示,都会有四个如影随形的函数:rnDllRegisterServer、DllUnregisterServer、DllGetClassObject、DllCanUnloadNowrn而用我的这个工具做出来的DLL文件,这几个函数就彻底消失了!因为根本不需要任rn何Class模块来做承载体。效果如图片“MD5Fun”中所示。rn  当然,由于开发平台的关系,做出来的DLL代码要能执行,当然也基本是离不开rnMSVBVM60.DLL的支持。用VB6做出的东西要摆脱它,可不是一般的功力可及的!!!rnrnrn⒉ 软件安装rn  最初是打算做个安装程序的,不过后来觉得没什么意思。毕竟这也基本上是个没rn太大应用价值东西,可能大家也只是“试一下”而已,并且这个“安装”并不复杂,rn不想再折腾那么多了。rn“手工安装”过程如下:rn  ①在VB6安装目录中,把原来的“Link.exe”名字改成Link2。注意:不要用其它rn名字,更不能把它删除了!因为最终的链接操作,仍然是调用这个程序来完成的,我rn的程序只是做了一些“前期工作”。rn  ②把我的“Link.exe”复制到VB6安装目录中。至此,最关键的操作就完成了。rn  ③安装“Standard DLL”模板。把 StdDLL.vbp和Dll_Main.bas 这两个文件,复rn制到“VB6安装目录\Template\PROJECTS”中就行。如果Template或PROJECTS目录不rn存在,可以自选创建(注意路径的层次关系)。rn  安装模板后,在新建工程中,就能使用这个模板来创建标准DLL框架了,如图片rn“新建工程”中所示。如果你安装的是企业版,它带的模板可能比较多,这个模板可rn能排在最后面去了,你需要拖动右边的滚动条,让它显示出来。rn  “标准DLL模板”也可以不用安装。如果要用这个工具做“标准DLL”,只要新建rn一个“标准EXE工程”,然后:移除窗体模块Form1、新建一个“模块”Module1,再rn在Module1中写个Sub Main()过程,最基础的框架就完成了!rn比如这样写:rnPrivate Sub Main(): End Subrn甚至,你可以 Private/Public 都不写,就写“Sub Main(): End Sub”就行了!rnrn  剩下的,就是你自己的DLL所用的Function、Sub等要做的事了。rnrnrn⒊ 软件界面rn  你所能看到的,就是一个窗口,如图片“窗口界面”中所示。左边树形列表,是rn各个可用的模块,以及其所包含的可用导出函数。右边是列表框,列出你已经选定添rn加的导出函数。青色背景的标签,显示内容是:你在树形列表中选定的函数或模块所rn在的“源文件”路径。“基址地址”含义没什么可解释的,一般还是不要改它为好。rn另外,输入的数值直接按16进制解释,并且 &H或0x 字头不要输入。添加好需要的导rn出函数后,点“确定”就可链接好DLL文件。rn如何“添加导出函数”,请继续往下看……rnrnrn⒋ 软件操作rn  在你的源代码编写好后,请先保存一次你的工程源码(各模块都必须保存,代码rn作了修改再次编译时,可以不用保存),然后在VB6.0的IDE中,菜单操作:rn“文件”-→“生成xxxxx.xxx(K)...”[注:这儿显示的是.exe还是.dll,不用管]rn然后在弹出的窗口中,选择好输出的磁盘路径及文件名。这步有个非常重要的地方:rn在第一次编译时,一定要在输出文件的后面加上“.dll”(大小写都可以)。一定要rn注意,如果你不指定.dll后缀,它就是链接成.exe文件了!但你再次对本工程编译链rn接时,直接确定就行。rn  选择好输出路径、输出文件名,如果指定了.dll,点“确定”后,就会出现本软rn件的窗口。要添加导出函数,可以在左边树形列表的节点中,点“模块名”,再点右rn边的按钮“添加该模块”,把选定模块中的所有函数添加到导出函数列表;或者以稍rn慢的速度“双击”函数节点,把选定的一个函数添加到导出函数列表(点太快不行,rn它没响应的。它没有双击事件,并且太快了鼠标消息还会被吃掉)。如果要删除已经rn添加的函数,则在右边列表框中,双击相应项目移除一个,或点按钮“清空列表”全rn部删除。5个按钮都设有访问键,大家一看界面就知道了,我不必多说。rn  如果某函数已经在导出列表中,则左边树形列表的函数节点上,函数名左边的图rn标会显示一个绿色的“钩”号,而没有添加的函数,它的图标只是一个白框。当你在rn左边树形列表的函数节点上,点中已经添加的函数,则右边列表框中对应项目也会自rn动被选定;如果在树形列表中选定的函数未添加,或者选中的是模块节点,则右边列rn表框就没有项目被选定。同样,当你在选定右边列表框中的任意一个项目时,左边树rn形列表对应的函数节点也自动选定。任何时候,青色标签中都显示着树形列表函数节rn点或模块节点对应的源文件路径。rn  点“取消”可以放弃链接操作(会询问)。rn  点“复位”可以恢复前一次选定的导出函数列表(本工程如果是第一次编译,则rn跟“清空列表”的效果一样)。rn  如果关闭窗口,则直接放弃链接操作(不询问)。rn  当选择后导出函数列表后,点“确定”,随后就进行DLL文件的链接操作。这个rn时候,你当前的工程模块信息、导出函数列表信息等,会在临时文件夹中,保存到rn"CompInfo.db"文件中(这个文件内容你别改,否则可能失效了),这样,当你对源rn码进行了修正,再次编译链接时,可以不用再次进行导出函数的添加操作。rn  “提醒选择导出函数列表”选项默认选定,这样每次编译链接,窗口都会弹出。rn你也可以在“确定”前去掉它的钩选,这样,如果工程中“可用的导出函数列表”没rn有变化,比如你只是对各个Sub/Function的代码做了修改,或加了、减了个类模块什rn么的(因为类模块、窗体模块都不支持“导出函数”),控制窗口就不再弹出,按已rn经选定的导出函数列表进行链接操作。rn  当你在任意标准模块中增加或删除了Sub/Function时,或者改变输出文件路径、rn输出文件名时(这时要再次指定.dll后缀!),控制窗口就会重新出现了。如果你把rn临时文件夹中的"CompInfo.db"文件删除后再编译,控制窗口也会出现。rnrn 论坛

没有更多推荐了,返回首页