搜索

iVocaloid论坛

查看: 3049|回复: 5
打印 上一主题 下一主题

【讨论】Rocaloid实现多语言还需要什么? [复制链接]

StarBrilliant

Lv.2-鱼仔酱

Rank: 2Rank: 2

0
0
0


UID: 129091
权限: 10
属性: 両性
发帖: 25 (0精)
积分: 24
章鱼: 0
大葱: 1
茄子: 470
注册:2014/2/7
存在感:97
跳转到指定楼层
[1L]楼主
m13253 发表于 2014/2/15 16:44:49 |只看该作者 |倒序浏览
经过允许后从将邮件转发如下。

在 2014年2月14日 12:29,Star Brilliant 写道:
各位好!

以下是我的个人观点,仅供参考。

目前,Rocaloid只支持中文,但是主页声称要实现多语言。为了实现多语言,我们
还需要什么?我只了解中文、英文、日本语,所以下面的例子我以这三种语言

第一,用一套通用音标符号,我认为很重要。

首先,不是每一种语言都有原生拼音。其次,对于不同辅音需要不同的处理技术。
音标符号我推荐 X-SAMPA,是事实上的通用标准,和 VOCALOID、Mbrola 等语音合
成软件也兼容。
但是 X-SAMPA 中有 \ < 等符号,可能入库的时候要考虑转义问题。VOCALOID 2
用 ¥ 代替 \ 也是因为日语字符集不支持 \。

第二,有一个 V C-V V-C-V V-C C 的音源,或者有一个高超的合成技术能在无 V-
C 的情况下用 C 合成出来。

现在 Cyan 音源有 V C-V 的 diphone 组合。对于中文或许够了(吗?),但是有
的语言远远不够。英语、粤语、中古汉语等许多语言都有闭口音,就是以辅音结束
的音节,如英语的 sit,中古汉语的 粒。
如果能用 C 合成出 V-C 的话,一切都好解决。但这很难。UTAU 连续音声源是 V
和 V-C-V 的。在凭空造辅音技术没有的情况下,我们是否要让 Cyan 有 V-C-V 呢?
貌似浊辅音的衔接比较难凭空造。V-VoicedC-V 可以录,V-VoicelessC-V 试试看
造吧。还好中文只有三个浊辅音:m n r,分别对应 X-SAMPA [m] [n] [z`]。没有
V-C-V 合成日语会哭的……
另外,有个自由授权的基于 phone 的语音合成软件 ekho 含有中文和粤语各一套
C-V 音源。可以考虑转换成 CVDB 来测试 Rocaloid 的鲁棒性。毕竟只有 Cyan 一
个音源不代表某个算法一定成功。

第三,处理好 VOT 的不同。

不同语言的 VOT 变化很大。日语的 VOT 可以说是三种语言中最小的,中文最大
(与现代汉语浊辅音的丢失有一定关系)。
根据维基百科的说法,出气于否也会影响 VOT。如果能用无气辅音造有气辅音,用
清辅音造浊辅音,一来节省录音数目,二来能够让一个语音库兼容多种语言。

第五,凭空造元音

当然不是说凭空,而是根据已经采集的一些元音的共振峰来推断某个位置的元音。
我知道 FECSOLA 算法可以做到这个。我希望能把这个东西继续带到下一个版本的
Rocaloid 中。
决定一个元音无非就是这些参数:开口度、发音前后位置、圆唇度、嘴唇凸起收缩
程度。最重要的是前三个参数。比如 啊 [a] 就是 开前不圆唇元音,呜 [​u] 就是
闭后圆唇元音,う [M] 就是闭后不圆唇收缩元音。
基本的目标是能够用中文的语音库合成中文,用英语语音库合成英语。但是我希望
在二十年内能有一个更好的结果:用一个发音不全的语言合成另一种语言。
这个从技术上开起来不简单,我只是希望能够让各位知道有这么一回事就好了。

第六、多研究一点辅音

目前 Rocaloid 开发的主要任务放在了元音的频谱上。如同我在第五节所说,元音
的变化很少,只有4种参数(只有前3种重要)。而辅音的变化特别多,维基百科列
举了7种参数。
VOCALOID 把辅音做了分类。Sleepwalking 拆解数据库的时候应该看到了。有的辅
音,比如擦音 [​s] [f] 之类的音,基音频率都在 2kHz 左右,完全可以在时域上
直接拼接处理。而有的辅音,如 [n] [m] 需要当作元音一样考虑共振峰的变换。
儿化音有的人认为是元音的变化,有的人认为是辅音,会产生一个附加的共振峰,
完全可以不录音,直接合成出来。
有一些辅音,比如 [l] [r\] [n] [m] 在 attack 之前会有一小段发音时间,如果
做单词结尾甚至会没有 attack。(对比 like willing will round around car
nose Hanning Han mouse Hamming ham)这个东西是我没有研究明白的东西,希望
有懂语音学的能够做一些研究

第七、需要很多别的语言的声源来测试

这个在短时间内不太容易实现。不光是时间精力还是经济上。如果我有充足的时
间,有可能会录一点。质量不要报期望。这个坑会不会填也不能肯定。

另外,关于辅音,谁能帮我查找一下中文的 特 的 [t] 音和英语的 time 的 [t]
音在发音方法上区别的资料么?好像舌尖和上颚接触的方式不同。目前我没有找到
相关的文章。在录入数据库的时候希望能区别对待,我还是希望找到一个前人用过
的符号,而不是自己创造一个新符号。(你看 VOCALOID 自己创造了少数几个几个
发音符号导致了几个 bug 对不?洛天依的 而 [@`] 就是例子)

在 2014年2月14日 14:46,Star Brilliant 写道:
于 2014年2月14日 12:03, Sleepwalking 写道:
> 我对X-SAMPA和辅音特性了解很少。希望SB可以研究下这方面的分析和合成技术。
> 1. X-SAMPA都是ASCII的,/和<考虑用别的符号代替掉,应该有几个保留符号吧,
> 正好可以用上。
X-SAMPA 全都能用七位 ASCII 表示。程序内部没有问题。问题是数据库存储到文
件系统上的时候可能受到 DOS 保留字符 ?*<>\|/" 的限制。

不如用 %5c 和 %3c 之类的代替好了。反正 X-SAMPA 没有用 % 符号。
我记得 Debian 的 deb 包名就用 %3a 来代替 : 的。可以在 /var/cache/apt 里
找证据。
我个人不赞成用新的符号,原因是不希望已经会 X-SAMPA 的 VOCALOID 调教师再
去学新的一套东西。

最好的学习 X-SAMPA 的方法是去玩 VOCALOID,用 Ctrl-R 直接编辑音标符号。
VOCALOID 的 X-SAMPA 有几个错误,可能是开发者的失误,先将错就错吧。

> diphone就用两个X-SAMPA组合。

仿造 VOCALOID,把两个符号之间用空格隔开吧。双元音(不等同于两个元音)和
三元音(只有少数语言有)或许可以连起来写?

> 2. CVE3.5计划直接在时域上拼接辅音和正弦合成出的元音,已经在 Wavetave/
> MinCVE有一个初步实现(CV和V的拼接)。
> V-C或者C-V没有试过。辅音自带共振峰,可以考虑在Sinusoidal和Residual信号
> 上构建辅音共振峰过渡,我非常希望有人来试试。

有的辅音很短,用共振峰模型真的大丈夫?不知道能不能填满 SFFT 的窗口呢。

> 3. 希望有人能研究下辅音的建模。

第四条漏了,补上。

很多语言都有多个辅音连续发音的情况,比如英语的 sky splendid。
(顺便普及,sky 不是读作 [s g aI] 哦,而是读 [s k aI],但是 [k] 是无气
的。英语老师说的辅音浊化是错的,应该是辅音无气化。)
我知道 VOCALOID 在这方面处理很不得当。Miku 的 [p 4] 没办法连续发音成为用
Miku 调英语的一个坎。(但是 [s t] 连续发音很完美。)Luka 的 [t r\] 连发
也很奇怪,true 这个词能听到“嘟噜”一声。
这是为什么呢?一方面是因为不同辅音连续发音的间隔时间不完全相同,另一方面
是人在读 [t r\] 和 [t j] 的时候会连读成 [tS r\] 和 [tS j],VOCALOID 没有
考虑到这个。或者把 [tr\] 类似 [tS] 一样看作一个整体,而不是像 VOCALOID
那样当作两个辅音看待。

> 5. 我们对元音的建模也只达到前两点,即F1 F2的控制。FECSOLA和改进版 LCFE
> CSOLA仍存在一些问题。我正打算用分段抛物线
> 对 共振峰包络建模。另外我想 了解圆唇度、嘴唇凸起收缩程度的频谱特性。

既然儿化音,鼻音化元音都会影响元音共振峰,我们把这两个参数也加进来一起研
究吧。
虽然很多研究者认为现代汉语的前鼻音和后鼻音是 [n] 和 [N],但是我认为是鼻
音化的元音,并能够举出证据来反驳。或许需要更多的研究。如果我的假定成立,
那么在中文和法语中都会遇到大量的鼻音化元音。是单独录音还是后期合成?还是
先试图在数据库中找到录音的,找不到就合成?

> 6. [n][m]的VOT直接变成周期性开始位置。直接套正弦模型,效果还不错。
> 7. 可以试试新葛炮、琴歌音源,当然仅限内部使用。

ekho 那个可以直接发布的。没有版权问题。ekho 本身合成质量不高,但是音源不
错。可是音调需要手动调。用 Audacity 导入,选中除了 attack 的部分,打开改
变音高工具,会自动估计当前音高填在第一个框内,第二个框填目标音高,记下来
下面显示的改变百分比,点击取消,用改变速率工具,填入那个百分比,确定。
(这样做是因为音源中不需要保留时长。改变速率工具只会做一次 resample,保
真度比较高。)

> 最后非常希望大家参与Wavetave的开发和研究工作。

我想说,语音合成最基本的原则就是利用最少的音源量来合成最多的发音组合。数
据复杂度和程序复杂度成反比。理论上在录音量无限的时候合成算法是最简单的
(举例:公交车的语音报站、电话自动应答系统),反之亦然。各位也都知道
Cyan 音源录制的成本非常高。我想,通过某些技术可以减少录音数量,能够节省
将来音源录制的成本,也是 Rocaloid 和 UTAU 最不一样的地方啊。

如果有需要,能否把语音研究相关成果同步到 iVocaloid 论坛?主要目的是让我
们比较困惑的问题被其他对语音学有研究的爱好者解答。

知识共享许可协议 除非另有声明,本帖内容采用 署名-非商业-相同方式共享 3.0 许可协议 授权,且需注明出处,所有权利归发帖人。

使用道具 举报

StarBrilliant

Lv.2-鱼仔酱

Rank: 2Rank: 2

0
0
0


UID: 129091
权限: 10
属性: 両性
发帖: 25 (0精)
积分: 24
章鱼: 0
大葱: 1
茄子: 470
注册:2014/2/7
存在感:97
[2L]沙发
m13253 发表于 2014/2/15 16:52:48 |只看该作者
现在,我希望感兴趣的各位帮我解决这几个问题。
第一个是中文的 [t] 和英语的 [t] 的区别。有没有相关的资料?
我不希望造一个新的符号,如果有一些已经做过的研究就可以直接用了。
百度百科说的颚化 [t'] 是错的,那个编辑本意是要输入有气化 [tʰ] 的。

第二个是多个辅音的发声。

第三个是中文的儿化音、鼻音的相关信息。

使用道具 举报

Rank: 2Rank: 2

0
0
0


UID: 112139
权限: 10
属性: 不明
发帖: 12 (0精)
积分: 14
章鱼: 0
大葱: 1
茄子: 234
注册:2012/10/13
存在感:57
[3L]板凳
亡月劫 发表于 2014/2/18 02:11:25 |只看该作者
本帖最后由 亡月劫 于 2014/2/18 02:27 编辑

我是个围观群众。。。
英语音标t和中文拼音t不同吗。。
楼主先加油让音源发出更优的普通话吧。。。儿化音。。。想想就觉得逆天,这个是调教者的工作吧?
btw:“Wavetave is specifically written for Octave but not matlab”  这句话太赞!(不过我两个都不会用=。=
“Depends on gnuplot” 卧槽感动得要哭。。。
(你们真的好强0.0

使用道具 举报

aka. farter = 渣语文

Lv.6-章鱼之目

Rank: 6Rank: 6

0
154
2


UID: 71728
权限: 50
属性: 不明
发帖: 331 (0精)
积分: 2324
章鱼: 45
大葱: 92
茄子: 4266
注册:2010/10/17
存在感:495
[4L]地板
http404 发表于 2014/8/2 21:33:02 |只看该作者
这些对话是很有价值的,与我很多共鸣,不过据我了解,一些说法是有问题,如窝有问题请指教_(:3
x-sampa相关的东西:
(最无关的一个)那个\是日语字符集里从来就被渲染日元符号,日本人民的操作系统里看着就是C冒号日元[蜡烛]所以并不是避开……也避不开也不用避开,这些符号是存在ddb内部的不会出现在路经里面。
(其实还是有关的)梦游大爷的那啥%xx也太长了……我们如果要方便使用直接存为wav的文件名的确需要避开,可以考虑修改废弃搬运某些x-sampa里的符号,我目前倾向把【'】借过来,废弃其【*_j】的作用(窝们要搞的全语言里面有很多很多_j_w_H的哟你这一个也不优美对不对【x】嘛其实我偏向把pj tj kj合起来当一个符号什么的,反正合成用途里面都需要空格隔开,不用满足x-sampa流式读取不歧义),更严峻的是windows文件名不分大小写而x-sampa要分!所以还得有一个表示大写字母……我目前倾向于【+】……于是现在大写字母加\貌似用的还不多(吧)就N\转写为n+'如何【pia

关于通用符号,作为一个研究发音的人应该知道(调教的人……嘛是个问题)x-sampa,包括vocaloid的用法,其实都不是严格的。原因是我们默认它用于一种语言,也就是把某些发音有省略的写为最靠近的一个音位。

例子就是日语的u,据我的观察它的发音(稍准确一点)是理论M加前(或者说M与i\中间),还要带点“半”圆唇,并不是绝对M(韩文的那个【上面一圈下面一横【x】】要更加靠近正版)
中文(特定一点指普通话)的u也不是绝对的u,发音越正越明显,是理论u往下半格,或者说理论U靠后半格,按照x-sampa修改符号去描述,会加上_*_*可能还不止一个。
做V3中文音库的就干出了类似的事情,分了e E_r E这三个相邻半格的东西,分别在ei iE_r iE_n这三个韵母里面。分不分在效果的决策影响暂不讨论,打着就很烦不是么【。

所以x-sampa具体用于某一个语言的使用方案设计过程中,都会有一些小改动,上面也说到了中文入声韵尾,以及英文辅音结尾,虽然跟音节开头的辅音音标上都是ptk之类的(音标严格的说,中文入声字韵尾也有点不一样,要加一个无除阻音标记,音标上是字母上面加一个形似7的东西,x-sampa标准是啥忘了;英文虽然说是有除阻,但是在语音合成中接不接元音肯定也是完全两个定义的东西),标识符肯定不能相同。实际应用上韩语音库采用了bp dp gp np Np这样表示结尾(其实是ptk,他们设计来韩文用的音标系统已经把bdg默认为清音ptk默认为送气了),虽然看起来也不太优美……【】

于是如果想……全兼容……那就得各个修改都标注……包括那啥英语t中文t的舌头位置(特指这一个的话,我觉得不光跟舌位有关,还跟擦音时间有关,因为英语那个多出来那点感觉就是多了一截擦音),我在这里【http://blog.sina.com.cn/s/blog_711e86460101jtu1.html】的全兼容方案已经提出了一些比较糊的修改表示方法……
主要是能准确发得出上面写的各个语言中的各种神奇音标的人……不多……【捂一个脸

然后VCV问题,vocaloid是没有VCV的,只有CV和VC(关于vocaloid有VCV的说法我在这里吐过一槽懒得重复打字【http://www.zhihu.com/question/21201012/answer/22667533】)。浊音是可以用VC-CV这样中间的C连起来的。

中文浊“辅音”还有个l以及单韵头型的y w【也是有辅音时间特征的不爽不要玩,V3在此也坑了一发

然后VOT,前两天跟梦游大爷也才交流过,理论和现实差距略大。在单字发音的时候送气音是稍安静的一段,后面元音起振很清晰干脆,仿佛可以在清音的爆破点后面加一定长度气声就造出送气音了。实际是速度稍快的情况下你很可能爆破点都找不到,送气杂音跟元音缓慢起振混合在一起直接形成一坨标志着口型的音头,跟清音完全两个形状。

然后送气最大的不知道普通话【其实有些方言送气也更强】还是北棒朝鲜语,他们也是清-送气-紧,而且北棒的风格你懂。

空造元音vocaloid已经实现,西班牙语音库里的I0(模拟英语I,因为西班牙语有类似韵尾I被占了)就是由i生造的,效果不错。而且其实v1就是因为可以调四大共振峰,砖家们非常热爱修改元音,也是穿中文元音能做的最好的平台之一(辅音就蜡烛了)。

擦音噪音的基音频率……这样不太利于保擦音的音质吧……

元音变化很少(个屁)(x)坑的就是开口度,合成声音听起来感觉没感情、平♀什么的责任,大概元音上要分摊很多。
辅音参数大概很多是跟元音连接部分的属性被归结到辅音里了。当然辅音本身也可以搞出很多段,一个精心构造的例子是紧停顿的送气塞擦颚化音。

儿化在合成技术中肯定该算到元音(元音辅音属性全部统一就当我没说了),不是加一条共振峰而是把其中一两条弯一下【

“attack之前的发音时间”那……就……是……浊……辅……音……他们就是都出现在节奏对齐点前的,节奏对齐点一般是转入元音口型的瞬间。

多语言……跟着音标表摇摆起来yoooooooo【x

辅音就是还有英语的复辅音,这些窝目前的方案里都是看做一个新的整体辅音来搞。vocaloid出的triphone什么的也就是在英语声库录音里面包括了常见的复辅音,然后在根据音标取块的时候,如果音标里有匹配的比如写了s k aI,那么就调用【s k aI】块。原来的做法(安妈[蜡烛]就是在这个技术出现之前,复辅音死光)就只知道【k aI】,前面的【s】不知所措【也不是】,当然英语是有单独s起振块的,所以就以很渣的方式把他们两个连起来了,效果有时勉强有时屎。【p l】这种就是压力巨大,因为实际发音那个l开始瞬间是由双唇张开(这时是送气的,而后有气起振,最后舌头拿下来接元音),无此技术的时候只有个从零开始的【l *】块然后前面不知所措地加一个光的【p】爆破结尾音,毛用都没有。

至于miku里的,日语音库本来没录,各种不科学组合法都是看人品,p 4什么的那时候辅音辅音之间时间参数貌似没都没有,两个直接叠在一起,根本不是人发出来的以l的口型p唇形打开出来。

tr是个英语里特殊变化的,也不是tSr,稍微严格一点可以叫t`r\`_w,因为前面说了英语的开头辅音t本来也是有点擦音的嘛,这里t`也有点擦。luka的就呵呵呵前面依然说了,谜只单独【t】加一个本来就像l的r然后蜡。

鼻音……n m N之类名曰鼻音的是只有鼻子通气嘴不通气,一般原因是嘴通气鼻子不通气,鼻音化元音是两边都通气……这个有条通道被封了/打开了导致的共振峰变化(突变移位?甚至合并增删?),我至今也压力巨大,还没认真试验过。

录音成本和合成技术的问题的确,最少录音量的就是某cantor2,没有录音直接共振峰+噪声什么的嗨起来,感觉本来不错的但是我听感就是缺了一些衔接部分的共振峰移动。但是人类发声器官确实变化方式很多,造成的物理响应也种类各异,共振峰条数都不定,还可能这钻出来一根那消失一根什么的【】,一些关键采样还是必须的。

【【完

使用道具 举报

Sleepwalking

我不是技术宅!

Lv.5-章鱼须

Rank: 5Rank: 5Rank: 5

0
9
0


UID: 111156
权限: 40
属性: 宇宙人
发帖: 201 (1精)
积分: 540
章鱼: 3
大葱: 14
茄子: 2688
注册:2012/8/18
存在感:476
[5L]萝莉
Zleepwalking 发表于 2014/8/5 07:29:09 |只看该作者
http404 发表于 2014/8/2 21:33
这些对话是很有价值的,与我很多共鸣,不过据我了解,一些说法是有问题,如窝有问题请指教_(:3
x-sampa相关 ...

技术上韵母应该不是主要的问题,你提到的复辅音我觉得有些难实现。
总而言之只要知道辅音对元音的影响和辅音的时长,多语言就没什么困难了。

我对语音学研究不多,提不出什么建议。

使用道具 举报

aka. farter = 渣语文

Lv.6-章鱼之目

Rank: 6Rank: 6

0
154
2


UID: 71728
权限: 50
属性: 不明
发帖: 331 (0精)
积分: 2324
章鱼: 45
大葱: 92
茄子: 4266
注册:2010/10/17
存在感:495
http404 发表于 2014/8/5 13:53:14 |只看该作者
Zleepwalking 发表于 2014/8/5 07:29
技术上韵母应该不是主要的问题,你提到的复辅音我觉得有些难实现。
总而言之只要知道辅音对元音的影响和辅 ...

复辅音其实稍微糊一点的解决方法也是很简单的,开头按首个元音性质,接元音相关的按最末辅音性质处理就行了。至于中间其实就等比缩放问题也不大,要加停顿速度、细处长度的话确实稍微要比单个的辅音形式上不一样,因为停顿关键辅音可能是中间的一个,比如str就是t前面停顿啥的。
可能是得类似于cevio的把元音辅音都统一成几个时间段,中间分别连接,复辅音真按两个辅音之间的过程处理【但是会有不同性质的单个辅音,如fast rap和trap什么的,前面是只管阻的t,后面是真正接上r的

使用道具 举报

您需要登录后才可以回帖 登录 | 注册/sign up

申请友链|Archiver|iVocaloid - 自由,开放,合作,共享    | 版权持有者点击这里进行举报

GMT+8, 2025/6/7 17:43

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部