树莓派语音助手直接对话_伯克利提出轻量级语音合成声码器SqueezeWave大幅降低计算量 | 将门好声音...

a09a8efa9dc9927149b63a0c6c6553d8.gif
From: UC Berkeley;编译: T.R.

本文为将门好声音第39期

今天为大家介绍一项来自UC Berkeley的新工作:SqueezeAI family里最新的一员——用于移动端语音合成的流模型SqueezeWave。作者用了一些很简单的方法,设计了一个非常精简得流模型。和此前Nvidia 的WaveGlow相比,相似的语音效果下,他们的模型所需算力比原有模型小214倍,在树莓派上都能做到实时生成的速度。

ab0667e5d363aeb0fcd63dcb8625b1ad.png
  • 文章链接:https://arxiv.org/abs/2001.05685
  • 生成的语音样例:https://tianrengao.github.io/SqueezeWaveDemo/
  • 代码:https://github.com/tianrengao/SqueezeWave

自动语音合成对于众多智能应用十分重要,其中声学特征转换为音频输出的声码器在语音合成过程中具有十分重要的作用。虽然WaveGlow可以实现并行化的语音合成,但其庞大的计算量使得本地和边缘设备无法承受,基于云计算的语音合成使得网络延时和用户隐私问题无法有效解决。为了解决语音合成中计算效率的问题,来自加州大学伯克利分校的研究人员提出了一种超轻量级的声码器模型SqueezeWave,通过对WaveGlow的结构和计算方法进行优化大幅提升了模型计算效率,相较于WaveGlow减小了61-214倍的计算量,在众多边缘设备上——甚至是树莓派上——都能有效部署实现高效的实时语音合成。

TTS从云端向边缘

从车载地图应用到语音助手,众多设备都开始采用了丰富的语音交互技术来处理各种任务。但想要得到高质量的文本到语音转换,需要复杂的机器学习模型和庞大的云计算资源支撑。但随着硬件的发展,边缘设备的计算能力大幅提升使得语音合成模型在本地运行成为可能。其次消费者对于隐私的担忧与日俱增,在移动端运行机器学习模型消除用户数据向云端泄漏的威胁。此外随着消费者对于语音助手的依赖逐渐加深,对于用户体验的关注也逐渐增加。为了提供低延时的语音服务,降低网络连接质量带来的影响,本地运行的语音合成模型比云端模型更有优势。

典型的现代语音合成模型主要包含两个部分:合成器和声码器。其中合成器用于从文字输入生成声学特征,而后利用声码器从声学特征生成波形输出。现存的高质量语音合成器都需要消耗十分可观的计算资源,SqueezeWave的主要目的在于提升合成器的效率。例如WaveNet及其变体基于自回归的方法,意味着每一个生成的样本都依赖于先前的样本,这种串行的处理方式阻碍了硬件的并行加速;而基于流的WaveGlow可以在每一次前传中生成许多样本,虽然这一方法具有并行优势但却需要消耗十分巨大的计算量。例如生成1s22kHz的语音需要消耗229G MACs的计算量,远远超过了移动端处理器所能承受的范围。尽管WaveFlow可以在最新的V100显卡上达到超过实时的性能,但却不适合在边缘设备部署。

在这篇论文中研究人员提出了一种轻量级的基于流的声码器SqueezeWave用于边缘设备的语音合成。研究人员重新设计了WaveGlow的架构,通过重整音频张量、采用深度可分离卷积以及相关优化使其比WaveGlow少消耗61-214倍的计算量,可在笔记本端实现每秒123-303K样本的生成,在树莓派上3B+上也能实现15.6K的实时水平。

重新审视WaveGlow的计算复杂度

与直接进行卷积操作不同,WaveGlow首先将邻近的样本聚类构建多通道的输入,其中L为时域维度的长度,Cg为每个时间步上的聚类组合的样本数量。波形中的样本总数量为.波形随后被一系列双边映射进行转换,其中每一个都会利用的输入得到输出。在每个双边映射中,输入信号首先被可逆的逐点卷积处理,而后将结果沿通道拆分为和。其中被用于计算仿射耦合系数.其中将被应用于的后续计算。而则为类似wavenet的函数,为编码音频的梅尔谱Lm为梅尔谱的时间长度,Cm为频率分量的数目。随后仿射变换层将通过下式计算:,其中代表逐元素相乘。最终将在通道方向上组合得到最后的输出。

b1b91a107ae853ed21082d413ede0746.png

b4d4d8c4aa1cac55b0a42ee859688f5d.png

通过对WaveGlow的分析发现最主要的计算量来自于输入音频波形的形状(长度)。WaveGlow的输出维度为(L=2000,Cg = 8)这会从三个方面带来非常高的计算复杂度:WaveGlow是一维卷积,其计算复杂度随L线性增长;为了提高梅尔谱的时域分辨率需要对其进行上采样,由于上采样是由现有样本简单插值而成的意味着in_layer中其中绝大部分计算是没有必要的;在WN函数中,8通道的输入被映射到了256到512维中间维度,虽然增加了模型容量但是在输出时又被压缩为8通道,中间维度的信息将会不可避免的丢失。

为了改进这些计算复杂的细节,研究人员将输入音频变形为较小的时域长度和较多的通道上来,同时保持WN函数中的通道尺寸。下面是两种改进的细节。当L=64时,时域长度与梅尔谱相同无需上采样,而L=128时,梅尔谱仅需要进行最邻近采样,这样进一步减少了cond_layer的计算开销。fig2深度可分离卷积减小计算量。

7e95d423de2884a4a1f85d395c2cb675.png

cb07b74dae824206308e65692b62c720.png

除此之外,由于时域长度减小不再需要利用膨胀卷积增加感受野,所以都用常规卷积进行代替更加适合硬件计算;将res_skip_layer的两支输出分支合并,减小了最终的输出通道数目。在下图中可以看到SqueezeWave的改进:

8b65aa44bfa1313faa44c1b722a89316.png

实验结果

为了验证模型的性能,研究人员将本文提出的SqueezeWave(SW)与WaveGlow和基准进行了比较,下表中SW-128L代表L=128的模型:

49bad129f3abc9ee7c37143ab7a1f6f4.png

可以看到SW系列模型的计算量相较于WaveGlow大幅下降,而性能却能保持较高的水平。

302107555a9e25ef530f597480c9e62f.png

为了验证在边缘设备的性能,下表还比较了在MacbookPro和树莓派上的结果,可以看到甚至在树莓派上都可以达到5.2k-21k/s的样本生成速度。其中SW128S以及能够生成实时并且高质量的音频结果了。

如果想要要了解更多内容或者上手尝试这一模型,请参看论文和代码连接: http://arxiv.org/abs/2001.05685 github.com/tianrengao/SqueezeWave

ref:

https://www.zhihu.com/question/26815523

https://www.zhihu.com/question/263570139

https://zhuanlan.zhihu.com/p/26006690

https://zhuanlan.zhihu.com/p/52480854

https://zhuanlan.zhihu.com/p/82872449

https://blog.csdn.net/xmdxcsj/article/details/72419803

https://www.cnblogs.com/mengnan/p/9474111.html

http://www.cnki.com.cn/Article/CJFDTotal-DKJS201801009.htm

d744fa830b04b328d6b2021e1a8ba9bd.png
来扫我呀

-The End-

戳右上角【+关注】关注我门↗

如果喜欢,点个【▲赞同】分享给你的小伙伴吧~笔芯❤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值