本篇文章给大家分享的是有关如何实现图神经网络在TTS中的应用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
G = {V, E}, 有向, 无向, 加权, 非加权, 同构, 异构(不同结构/意义的边/点)
为什么要用? 数据有非欧几里的距离的信息含义
欧几里得距离: 比如识别猫图片的 CNN, 就是可以通过简单的距离就可以描述(不需要建边)
图神经网络: 学习一个包含邻居节点信息的状态特征(state embedding), 表征邻居的就是边, 有了边, 也就升级成为了图
引入迭代函数 F, (最终可以让图稳定状态, 也可以不稳定, 流动是关键), H 就代表了 general 的图的信息
图神经网络分为: 传播步, 输出步
loss 可以训练点的值, 边的值, 并且边的值和点的值都和整幅图有信息沟通
建模韵律
与 NLP 引入复杂特征类似
图的结构和专家知识对文本的分析一致, GNN 更合适
直接替换原本 Encoder 结构
定义文本中的点和边: 英文字母是点, 虚拟点是词点和句子点. 顺序边, 逆序边, 父节点词边, 父节点句子边
与 # 标签的区别就是, 利用结构的便利, 显示的使用了词边界信息
代码角度是, Encoder 中的 RNN 变 GCN, 有传播步, 输出步
保留 Tacotron 的 Encoder, 单独设计 GAE 模块建模语法与韵律的信息关系
GAE 的输入是边界信息 + 文本, 输出作为 Attention 的 Memory(可以与 Encoded Output 拼接, 做一个信息残差)
使用图, MOS 就会好
GGNN 比 GCN效果更好
使用图, attention 会容易错, 所以 GAE 各方面都最好
但事实上, GAE 模型中, GAE 模块天然结构和 input 利于捕捉韵律信息, 同时和 Encoder 一起表示发音信息, 其实不是特征解耦的思路, 而是一个 post-net 残差的思路, 多了这个结构, 强化下就可
style sequence 和 style embedding 在哪里拼接到 Encoder 的特征上
Relation Encoder, 建模两个单词的语法关系, 表征他们的语法依存树 -> 语法依存图(单向边变成双向, 并且权重不同); 图中节点之间的最短路径代表两个单词的关系(因为距离是差距的直观度量); 单词之间的距离确定了(自己与自己建一条 self 边), char 级别就是所属单词之间的距离. 最终可以得到任意两个字之间的依存关系 (N * N - 1) 个序列, Rij, Rii -> Cij, Cii; N * N - 1 个序列 N * N-1通过 同一个Bi-GRU, 计算出来 Cij
Graph Encoder, 把 Transformer 改进为基于语法来做一个 Attention, Cij 改进 dot-score 或者 add-score; 相当于更精准的 Positional Encoding
根据逸轩的思路, 逸轩想要用 GCN 直接使用词依存关系, phoneme + bert_out + 依存关系 -> linguistic feature (但是这种方式比GraphSpeech更难, 是训练不出来的)
只有词父节点信息的 GCN 就已经不好调了, 因此这种方法需要简化 GCN 的结构和权重
确定边的总类, 再确定同一类下共享边(相同边)是哪些, 由于文本的语法依存很规则, 很统一, 可以利用这个来简化图神经网络的 edge weights
词的词性也要体现在 node 上, 有一定 dim 的共享
这个可以叫 TTS-Simplify-GCN, 类比于 TTS 的 Attention 并不需要那么强大
PyG
DGL
以上就是如何实现图神经网络在TTS中的应用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。