DataScience 板


LINE

小弟之前没接触过这类autoregressive model,可能用语会不太精确 请鞭小力点> < Abstract FFTNet: A Real-Time Speaker-Dependent Neural Vocoder 这是一篇发表在今年icassp 2018的paper,其提出了一个由WaveNet衍生出来的model-- FFTNet,且做了两点改进: 1) 加快了生成速度,甚至可以realtime的生成 2) 产生的audio听起来比WaveNet更自然 论文以及audio档试听:http://gfx.cs.princeton.edu/pubs/Jin_2018_FAR/index.php I. Introduction 自从WaveNet问世後,大家发现直接用CNN合成waveform是可行的,在许多task也有不少成 功的例子(很多citations~)。但WaveNet最为人诟病的就是大量training时间以及非常慢的 生成速度。如果换成如mcc这样的acoustic feature,则training时间可以缩短;运算时间 上也有许多加速的方法。 FFTNet使用更简单的架构与更少的参数量,把生成的时间压到更低,使realtime生成变为 可行(摸斗嗨雅苦~)。 II. Method 2.1 WaveNet vocoder 这里大概讲述了WaveNet的架构,基本架构是多层dilated causal CNN,其dilation随着深 度指数成长,如下图: https://i.imgur.com/Dtdz5Zz.jpg 随着层数(L)的加深,WaveNet能看到的sample数量会指数增加(2^L)。而每一层的output z 可以表示成一个gated架构 z = tanh(W_f *d x + V_f *d h) ⊙ sigmoid(W_g *d x + V_g *d h) 在这里x代表前一层的output,W_f和W_g分别是filter和gate的convolution kernels, V_f和V_g则是对h (auxiliary condition)做convolve的1x1 kernels。最後再对z做1x1 convolution才是final output。加上skip connections、一些conv1x1和relu後接一个so- ftmax,去predict当前sample的256个quantized後的值。 每次forward只能生出一个sample,速度hen慢,即使是加了cache的Fast WaveNet,每秒也 只能生200个samples。 2.2 FFTNet architecture 从WaveNet的图可以发现,和预测的sample相关的node连起来就像是个二元树,让人联想 到经典的演算法--FFT。FFT使用了divide and conquer的概念,将input分成更小段的子 input去做DFT。 N-1 令Σ x_n*e^(-2*pi*i*n*k/N) = f(n, N) n=0 则f(n, N)可拆解成 f(2n, N/2) + f(2n+1, N/2) =f(4n, N/4) + f(4n+1, N/4) + f(4n+2, N/4) + f(4n+3, N/4) =... 如果我们将转换function f 换成 1x1 convolution,则会得出一个类似FFT的模型。 http://gfx.cs.princeton.edu/pubs/Jin_2018_FAR/fftnet.png
也就是将输入的讯号分成左右两边,各自做1x1 convolution再相加。 z = W_L * x[:N/2] + W_R * x[N/2:] 而gated的部分就用简单的relu代替,所以下一层layer的input x = Relu(conv1x1(Relu(z))) 如果加上auxiliary condition,则 z = ... + (V_L * h[:N/2] + V_R * h[N/2:]) V_L和V_R也都是1x1 kernel。 ※如果h不会随时间变化,则可以用一个weight V * h 取代。 将FFTNet当vocoder使用的时候,h就是f0和MCC。要生成当前时间t的sample x[t],FFTNet 的输入为之前生的N个sample x[t-N:t] (N = 2^L, L为model深度) 和往前一个step的fea- ture h[t-N+1:t+1]。 最後接一个大小256的fully connected和softmax就完成惹。 2.3 Training Techniques 这边提了几个训练FFTNet和生成samples时需要的技巧。 2.3.1 Zero padding 训练时每段samples的前面多pad N个zeros。如果没加zero padding,model在生成时容易 有杂音,或是input非常微弱时会卡住。 2.3.2 Conditional sampling 选择softmax的output通常有两种方式,一种是argmax一种是random sampling from post- terior。argmax可以选择出最小training error的答案,但是我们希望model的输出也有原 训练资料本身自然的noise distribution,例如没有人声时的waveform。於是采用random sampling,并在有人声的部分於softmax前多乘上一个常数c,使distribution比较sharp; 没人声的部分就是原本的distribution。实验时c=2。 2.3.3 Injected noise 因为training error,model的output都会有一些noise,而生成的这些output都会喂回去 当作下个sample的input,於是noise越来越大,最後生出来的音档就会有啪嚓声。在训练 时加入noise可以加强model的稳定性。实验时观察到model的prediction常常只差上下一个 class,所以训练加的noise为平均值0,标准差1/256的高斯分布。 2.3.4 Post-synthesis denoising 由於前一阶段injected noise使model产出的sample在人声部分都有一点noise,於是作者 使用spectral subtraction noise reduction 当作post processing。这好像是高等DSP 才会教的东西,我也没有细看> < 3. Evaluation 作者用CMU Arctic dataset来训练model,详细的实验设定与细节就不多说惹。 总共比较了五种model: 1. MLSA filter (baseline) 2. WaveNet + zero-padding 3. FFTNet + zero-padding 4. WaveNet + all 2.3 techniques 5. FFTNet + all 2.3 techniques 实验时WaveNet和FFTNet的receptive field都一样(2048 samples)。 在主观测试中,加了所有2.3部分的FFTNet表现比原本好上许多,并且和WaveNet不相上下 ,代表这些小撇步对FFTNet是需要的;而分数也显示2.3的techniques一样能improve Wav- eNet的表现。 而作者也提到FFTNet在一颗i7的cpu上,只要0.81秒就能生出一秒长度的音档Σ(;゚д゚) 4. Conclusion 提出了一个简单且能快速生成audio的架构,并结合一套训练与post processing的技巧, 使这样简单的Model在当成vocoder时,能产生出state of the art的结果;而这些技巧也 能改善WaveNet的结果。 ---- 个人心得: 心得不知道要写甚麽,就来写点我对FFTNet的理解,还有一些疑问与实作上的问题ㄅ 在FFTNet架构的部分,如果把两个1x1的kernel结合,形成一个大小1x2,dilation=N/2的 kernel,则架构图可以重新表示成 https://i.imgur.com/NWfSTpz.png 如果将所有的node画出来 https://i.imgur.com/Vsotxec.png 再从反方向走回去 https://i.imgur.com/rAINJYk.png 就得到一个上下颠倒的WaveNet架构。 换言之,FFTNet是WaveNet的transpose,而且拿掉gated和skip connections。如果真是这 样,我觉得作者其实应该要放一个原本Wavenet dilated架构,但全部只有convolution和 relu的模型来比较。而且这样来说两个的complexity应该相去不远,那为甚麽FFTNet可以 做到real-time?实作时我生成的速度大约是每秒300个samples(有cache),跟WaveNet比虽 然快,但完全没有到realtime的程度。而github上我看其他人也差不多是这个速度。 这是我目前最大的疑问qq 鲁鲁有自己implement FFTNet放在github,还在施工中,不过目前生出来的sample大概跟 作者网站上原始的FFTNet差不多,也欢迎大家来逛逛我的repo~ https://github.com/yoyololicon/pytorch_FFTNet --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.241.48.227
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1534082114.A.474.html
1F:推 yiefaung: 推个 顺便问个real time要每秒几个sample 08/14 00:50
2F:→ yoyololicon: 至少16k 08/14 06:45
3F:推 joeyccc1: 每秒16k 高频就只能到8kHz 08/18 16:36
4F:→ yoyololicon: 对,处理语音资料这样就很够惹 08/19 09:37







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP