Rocaloid

2013下半年开发进度记录

  转自Sleepwalking在b站的日志

【2013-7-9】Rocaloid C++重写完成。

【2013-7-24】CVEDSP数学库完成。

【2013-8-5】FECSOLA(Formant Envelope Coefficient Shift and OverLap Add)算法诞生。

【2013-8-20】共振峰测试器开始编写,目的是分析新算法应用于CVE2的可行性,以及制作新的音源库时作参考。

【2013-8-26】FECSOLA共振峰修改测试

正在设计新合成系统的结构中……整套系统都要重写。

最早2014年寒假可以出半成品(能够运行,功能不完善)。

以后有什么新进展我就贴在这。

【2013-8-27】CDT3 音源映射结构出炉:

http://bbs.ivocaloid.com/thread-117878-1-1.html

另外,今天用FECSOLA成功把初音的“o”和“i”改成“日”,参数:

F1 = 360Hz, F2 = 2500Hz, S1 = 1.5, S2 = 1.0, F2越低翘舌感越重(F2对应舌位),不宜低于2100Hz或高于2800Hz,F2再高就变成i了。

效果比Vocaloid里dZ M出来的那个发音强多了。

【2013-8-29】用Dia把CVE3的结构画出来了,如果写出来了就是目前本人写过的最复杂的东西了……

另外Rocaloid下个版本号由2改为3,为了配合CDT、RSC、CVS文件版本:

Rocaloid Engine 3, CVE 3, CDT 3, RSC 3, CVS 3, RSCCommon 3.

那么版本号2就被跳过去了……从1.6直接升级3.0了。

【2013-8-31】CVDB 1.0 文件格式确定。

【2013-9-1】CVS3 结构大体确定。

【2013-9-2】RVS3, CDT3 结构确定。

【2013-9-3】RUtil库完成,SPKit的精简化C语言改写。提供用宏实现的动态数组和字符串操作,文件读写。

现在缺个人写新的音源库制作工具,如果新音库文件出不来,下一步的开发也没法进行(我不会Qt)……等待中……

【2013-9-7】 ~ 【2013-9-14】要考托福了……这周开发暂停。

【2013-9-14】托福考完,CDTReader完成。

【2013-9-17】Demapper的CDT频率/共振峰映射展开完成。

【2013-9-18】CVS3(RDL Plain Text)读写模块完成。

【2013-9-20】这两天摸索出来一个通过频谱图找共振峰的算法,可惜仅仅能大致确定共振峰位置,精度太低,没实用价值。

在Qtau那边把QtauAudio修好之前暂时没啥事可做了(如果CVDBStudio没出,引擎开发时很难进行测试)。

【2013-9-22】学习基于LPC的共振峰提取技术,整合入CVEDSP。另外RUtil加入CVEDSP。

今天重写了个共振峰自动标记函数,基于LPC和FFT频谱包络,效果比前天那个好多了。

【2013-9-23】使用遗传算法对昨天的共振峰提取算法参数进行优化。

【2013-9-25】使用遗传算法陆续对端点、基频检测算法参数进行优化。准确度有一定提升。CVEDSP重组。由/FreqDomain /TimeDomain转为/DSPBase /Algorithm两分类。

【2013-9-26】写了俩处理音源库的小工具。

【2013-9-27】学习人工神经网络中……

【2013-9-28】实验性子项目CVEANN启动,是一个人工神经网络库;若成功将用于CGTOR参数生成和语音特征提取。【我怎么感觉科技树点歪了

【2013-9-30】CVEANN识别元音测试基本顺利;CVEANN投上GitHub,现在就一个N层BP网的功能……

https://github.com/Sleepwalking/CVEANN

【2013-10-1】国庆期间事多开发可能减缓。这几天学习ANN……争取写个百发百中的共振峰提取器,然后音源库的事就一劳永逸了。

另:这事办妥以后就可以开始写CVE3了。

【2013-10-7】CVEANN初步完成。只提供了BP、SOFM、LVQ三种网络,对Rocaloid需要的模式识别也够用了。

编写CVDB工具链组件SpeakerAna中。

CVDBStudio取消。将由CVDB工具链中CMin、C2Wav、SpeakerAna代替。

【2013-10-9】SpeakerAna完成。CMin加入基于BP和LPC的辅助识别功能,但误识率太高。SpeakerAna开发暂停。CMin将使用CVEDSP的共振峰识别函数。

【2013-10-10】CVE3编写开始。

【2013-10-11】CVE3/ConsecutiveSynthesizer完成。

【2013-10-14】变调器CVE3/FrequencyGenerator初步完成,仍需改善。

【2013-10-15】改进变调器。

【2013-10-18】CVE3/PitchMixer初步完成。

【2013-10-22】CVE3/SpeechMixer初步完成,共振峰过渡效果不甚理想,改进中……

【2013-10-24】改进算法LC-FECSOLA (Linear Combination - FECSOLA)诞生。主要优化了共振峰包络提取过程。

【2013-10-25】LC-FECSOLA实现于CVE3/DSPEx,经测试音渡效果有显著提升。

【2013-10-28】对CVEDSP和CVE3进行效率优化。

【2013-10-30】继续优化效率,现在单线程合成速度大约Vocaloid两倍,但不支持多线程。

差不多没地方可以继续优化了,下一步是去写音源库管理器。

【2013-11-3】给项目增加了cmake构建配置,马上要期中考试,这几天开发得缓一缓。

【2013-11-6】玩脱了。。。手贱误删了一些文件,开发进度回滚三天。。。还好这三天基本没干啥事。。

【2013-11-11】CVDB工具链部署暂定。

【2013-11-13】CVDB工具链中间文件(.cds, .sconf, .wconf)数据结构、读写程序完成。

【2013-11-15】CVDB工具链组件WSplit和Wpp初步完成。

【2013-11-16】CVDB工具链除DBPack的部分,包括DBMake,初步完成。<-初步完成就是说基本功能实现了,可能有bug或仍需改进。

Rocaloid自己的音源库,录制日期暂定在12月1日。

【2013-11-19】尝试用Qt写了个拟合共振峰参数的工具:FormantMarker(似乎对发音词典的准确度有正面作用?有待进一步测试)

Rocaloid3总代码行数突破2万,小小庆祝一下这段时间的坚持~

【2013-11-22】CVE3/SpeechMixer添加对Syllable结构的完整支持。

【2013-11-26】CVE3初步测试,合成效果不理想,整个引擎可能需要重写。

【2013-11-27】昨天的问题可能是音源库质量差导致的。

对CVE3的频谱包络平移添加线性插值,从而降低引擎噪音。

【2013-11-29】今天跑了一晚上,把录音棚预订好了。吐槽一下学校说好了借录音室,谁知就差半个星期了又说录音室周末不开放,害得咱还得自己到外面租。。

一小时两百块啊……

另外吐槽上海地铁一年比一年挤,这一趟来回居然花了三个小时。

后天下午开工。

【2013-11-30】音源库建档,录音词典已生成,共161个发音记号*4个音高=644个发音

【2013-12-1】Rocaloid的第一个自己的音库录制完成。完整的汉语普通话支持和一组吸气音。开发代号为Rocaloid_Cyan。

【2013-12-7】给Wpp加了几个新功能,为音源库制作做准备。

【2013-12-10】CVE3合成引擎完成。

【2013-12-11】FormantMarker添加WCONF支持;WCONF加入共振峰信息。

Rocaloid_Cyan录音数据降噪完成。初始元音共振峰标记完成。

【2013-12-14】DBMake添加增量cvdb构建;CVE3混音模式bug纠正。

成功手写CVS调出一句“好一朵美丽的茉莉花”,效果还不错。Rocaloid_Cyan小规模内测(完成度30%,虽然所有发音符号都能发,但没有手工优化过)。

学习使用boar进行本地binary版本控制。

【2013-12-17】经测试CVE3的表现非常不稳定,尤其是对于变调操作,可能导致发音模糊。引擎需要重写。

现有技术无法有效提升合成质量,开发暂停一段时间。我得去啃些论文……

【2013-12-21】收到庞培法布拉大学Xavier Serra教授的电邮回信。

上周我学习了教授的一篇关于SMS合成的论文,邮件咨询能否将此算法用于Rocaloid。

教授表示同意,只需在github项目首页上cite那篇论文。

【2014-1-5】CVE3.5算法简略设计完成。

【2014-1-8】开发组帐号建立:https://github.com/Rocaloid

Wavetave项目建立,是一个octave language写的语音信号处理工具集,用来做各种算法的测试场地。目前包含一个频谱分析器和基频识别插件。


返回