naxingyu的个人博客分享 http://blog.sciencenet.cn/u/naxingyu

博文

基于HMM的语音合成技术中的参数生成算法

已有 8378 次阅读 2013-1-14 20:26 |个人分类:课题积累|系统分类:科研笔记|关键词:学者| HMM, 语音合成, HTS, 隐马尔科夫模型

一、定义与定理
在基于隐马模型的语音合成技术中,连续密度隐马尔科夫模型(CD-HMM)集用于将语音参数建模,每个HMM状态的输出状态用单高斯函数(Gaussian)或混合高斯函数(GMM)表示(Zen et al., 2009),其参数生成算法的目标是在给定高斯分布序列的前提下,计算出具有最大似然函数的语音参数序列 (Tokuda et al., 1995)。$$p(\mathbf{o}\mid\lambda)=\sum_{all\mathbf{q}}p(\mathbf{o}\mid\mathbf{q},\lambda)P(\mathbf{q}\mid\lambda)$$其中$\mathbf{o}:=\{\mathbf{o}_1,\mathbf{o}_2,\ldots,\mathbf{o}_T\}$代表语音参数矢量序列,$\mathbf{q}:=\{q_1,q_2,\ldots,q_T\}$表示高斯分布序列。本文中,大写粗体字母表示矩阵,如$\mathbf{W}$,小写粗体字母表示矢量,如$\mathbf{o}$,普通字母表示标量。小写字母$p$专用于表示连续变量的概率分布,大写字母$P$专用于表示离散变量的概率分布。除非特别说明,所有的矢量都是列矢量。符号$\top$用于表示矩阵或矢量的转置,如$\mathbf{W}^{\top}$。由均值矢量$\boldsymbol{\mu}$和方差矩阵$\boldsymbol{\Sigma}$表示的生成数据点$\mathbf{o}_t$的高斯密度函数写作$\mathcal{N}(\mathbf{o}_t\mid\boldsymbol{\mu},\boldsymbol{\Sigma})$。 
在传统HMM中,状态(高斯分布)序列是由转移概率矩阵决定的,既
$$P(\mathbf{q}\mid\lambda)=\prod_{t=1}^TP(q_t\mid q_{t-1},\lambda),$$
在基于HMM的语音合成中,状态序列是由显式时长模型输出的时长特征矢量决定的。由于这种设定改变了模型的严格马尔科夫性,我们将其成为隐半马尔科夫模型(HSMM)。因此,下面的推导专注于输出概率密度函数。
在典型的语音识别和语音合成系统中,声学参数按帧提取,第$t$帧的参数由矢量表示为
$$\mathbf{c}_t=\left[c_t(1), c_t(2), \ldots, c_t(M)\right]^{\top},$$
第$t$帧的观测值(对于模型来说,即输出值)通常定义为由声学特征及其一阶和二阶动态特征共同组成的矢量
$$\mathbf{o}_t=\left[\mathbf{c}_t^{\top},\Delta\mathbf{c}_t^{\top},\Delta^2\mathbf{c}_t^{\top}\right]^{\top}.$$
这些动态特征是以相邻帧静态特征的回归系数的形式计算得到的,即
begin{aligned} Deltamathbf{c}_t &= sum_{tau=-L_-^{(1)}}^{L_+^{(1)}}w^{(1)}(tau)mathbf{c}_{t+tau},\ Delta^2mathbf{c}_t &= sum_{tau=-L_-^{(2)}}^{L_+^{(2)}}w^{(2)}(tau)mathbf{c}_{t+tau}. end{aligned}
因此,特征参数序列可以表示为
begin{aligned} mathbf{o} &= left[mathbf{o}_1^{top},mathbf{o}_2^{top},ldots,mathbf{o}_T^{top}right]^{top},\ mathbf{c} &= left[mathbf{c}_1^{top},mathbf{c}_2^{top},ldots,mathbf{c}_T^{top}right]^{top}. end{aligned}
观测值$\mathbf{o}$和静态特征$\mathbf{c}$之间的关系为
$$\mathbf{o}=\mathbf{W}\mathbf{c}$$
其中$\mathbf{W}$定义为窗系数矩阵,即
begin{aligned} mathbf{W} &= left[mathbf{W}_1,mathbf{W}_2,ldots,mathbf{W}_Tright]^{top}otimesmathbf{I}_{Mtimes M},\ mathbf{W}_t &= left[mathbf{w}_t^{(0)}, mathbf{w}_t^{(1)}, mathbf{w}_t^{(2)}right]. end{aligned}
$\mathbf{w}_t^{(d)}$是用于计算第$t$帧第$d$阶动态特征的窗系数,只在第$t$位和相邻位置的元素有非零值,非零值的范围取决于窗宽度,通常为1,即前后一帧。
$\mathbf{I}_{M\times M}$表示$M\times M$单位矩阵,用于将相同的窗系数应用于所有$M$维参数。
因此,似然函数表示为
$$p(mathbf{o}midmathbf{q},lambda)= prod_{t=1}^{T}p(mathbf{o}_tmid q_t,lambda)= prod_{t=1}^{T}mathcal{N}(mathbf{o}_tmidboldsymbol{mu}_{q_t},boldsymbol{Sigma}_{q_t})= mathcal{N}(mathbf{o}midboldsymbol{mu}_{mathbf{q}},boldsymbol{Sigma}_{mathbf{q}})$$
其中
begin{aligned} boldsymbol{mu}_{mathbf{q}} &= left[boldsymbol{mu}_{q_1}^{top},boldsymbol{mu}_{q_2}^{top},ldots,boldsymbol{mu}_{q_T}^{top}right]^{top},\ boldsymbol{Sigma}_{mathbf{q}} &= diagleft[boldsymbol{Sigma}_{q_1},boldsymbol{Sigma}_{q_2},ldots,boldsymbol{Sigma}_{q_T}right]^{top} end{aligned}
根据以上内容,我们有如下定义
begin{aligned} text{static feature} &~~~~ mathbf{c} &~~~ MTtimes 1\ text{observation} &~~~~ mathbf{o} &~~~ 3MTtimes 1\ text{window} &~~~~ mathbf{W} &~~~ 3MTtimes MT\ text{means} &~~~~ boldsymbol{mu}_{mathbf{q}} &~~~ 3MTtimes 1\ text{covariance} &~~~~ boldsymbol{Sigma}_mathbf{q} &~~~ 3MTtimes 3MT end{aligned}
在开始推导参数生成算法之前,我们需要给出线性代数中的一些定理。
begin{aligned} frac{dx^{top}Ax}{dx} &= x^{top}(A+A^{top})\ &overset{text{if}A^{top}=A}{=}2x^{top}A^{top}=2(Ax)^{top}\ frac{dAx}{dx} &= A end{aligned}

二、极大似然参数生成算法(MLPG)
给定高斯分布序列$\mathbf{q}$,参数生成的准则表示为
begin{aligned} mathbf{o}_{max} &= argmax_{mathbf{o}}p(mathbf{o}midmathbf{q},lambda)\ &= argmax_{mathbf{o}}mathcal{N}(mathbf{o}midboldsymbol{mu}_{mathbf{q}},boldsymbol{Sigma}_{mathbf{q}}) end{aligned}
在这里,生成的参数序列既是高斯分布的均值矢量序列,生成的语音变化不自然。为避免这个问题,引入动态窗系数作为约束(Tokuda et al., 2000)。在这个约束条件下,以$\mathbf{o}$为变量的函数最大化就等价于以$\mathbf{c}$为变量的函数最大化。
$$\mathbf{c}_{max}=\arg\max_{\mathbf{c}}\mathcal{N}(\mathbf{Wc}\mid\boldsymbol{\mu}_{\mathbf{q}},\boldsymbol{\Sigma}_{\mathbf{q}})$$
根据多变量高斯密度函数的定义,得到
begin{aligned} mathcal{N}(mathbf{Wc}midboldsymbol{mu}_{mathbf{q}},boldsymbol{Sigma}_{mathbf{q}}) &= frac{1}{sqrt{(2pi)^{3MT}|boldsymbol{Sigma}_{mathbf{q}}|}} expleft{-frac{1}{2}left(mathbf{Wc}-boldsymbol{mu}_{mathbf{q}}right)^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}left(mathbf{Wc}-boldsymbol{mu}_{mathbf{q}}right)right}\ &= frac{1}{sqrt{(2pi)^{3MT}|boldsymbol{Sigma}_{mathbf{q}}|}} expleft{-frac{1}{2}left(mathbf{c}^{top}mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}-boldsymbol{mu}_{mathbf{q}}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}right)left(mathbf{Wc}-boldsymbol{mu}_{mathbf{q}}right)right}\ &= frac{1}{sqrt{(2pi)^{3MT}|boldsymbol{Sigma}_{mathbf{q}}|}} expleft{-frac{1}{2}left(mathbf{c}^{top}mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{Wc}+boldsymbol{mu}_{mathbf{q}}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}boldsymbol{mu}_{mathbf{q}}-mathbf{c}^{top}mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}boldsymbol{mu}_{mathbf{q}}-boldsymbol{mu}_{mathbf{q}}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{Wc}right)right}\ &left(becausemathbf{c}^{top}mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}boldsymbol{mu}_{mathbf{q}}=left(boldsymbol{mu}_{mathbf{q}}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{Wc}right)^{top}=boldsymbol{mu}_{mathbf{q}}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{Wc}right)\ &= frac{1}{sqrt{(2pi)^{3MT}|boldsymbol{Sigma}_{mathbf{q}}|}} expleft{-frac{1}{2}left(mathbf{c}^{top}mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{Wc}+boldsymbol{mu}_{mathbf{q}}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}boldsymbol{mu}_{mathbf{q}}-2boldsymbol{mu}_{mathbf{q}}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{Wc}right)right} end{aligned}
似然度定义为密度函数的自然对数。对似然函数求$\mathbf{c}$的偏导数得到
begin{aligned} frac{partiallogmathcal{N}(mathbf{Wc}midboldsymbol{mu}_{mathbf{q}},boldsymbol{Sigma}_{mathbf{q}})}{partialmathbf{c}} &= -frac{1}{2}left{frac{partial}{partialmathbf{c}}left(mathbf{c}^{top}underline{mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{W}}mathbf{c}right)-2frac{partial}{partialmathbf{c}}left(underline{boldsymbol{mu}_{mathbf{q}}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{W}}mathbf{c}right)right}\ &left(becauseleft(mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{W}right)^{top}=mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{W}right)\ &= -frac{1}{2}left{2left(mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{Wc}right)^{top}-2left(boldsymbol{mu}_{mathbf{q}}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{W}right)right}\ &= -frac{1}{2}left{2left(mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{Wc}right)^{top}-2left(mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}boldsymbol{mu}_{mathbf{q}}right)^{top}right}. end{aligned}
令$\log\mathcal{N}(\mathbf{Wc}_{\max}\mid\boldsymbol{\mu}_{\mathbf{q}},\boldsymbol{\Sigma}_{\mathbf{q}})/\partial\mathbf{c}_{\max}=\boldsymbol{0}$, 可以得到如下线性方程(组)
$$\mathbf{R}_{\mathbf{q}}\mathbf{c}_{\max} = \mathbf{r}_{\mathbf{q}}$$
其中
begin{aligned} mathbf{R}_{mathbf{q}} &= mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}mathbf{W}\ mathbf{r}_{mathbf{q}} &= mathbf{W}^{top}boldsymbol{Sigma}_{mathbf{q}}^{-1}boldsymbol{mu}_{mathbf{q}} end{aligned}
通过求解方程(组)即可得到极大似然准则下的参数序列。

三、实现方法
目前,有三种官方发布的MLPG算法实现,
  • HTS工具包中的HMGenS工具
  • SPTK工具包中的mlpg工具
  • hts_engine_API库中的参数生成模块
后两者的应用场景与本文相同,即给定高斯分布序列。在第一个工具中,实现了三种不同的参数生成模式,包括联合最优高斯分布序列的搜索(Tokuda et al., 2000)。但是,通过设置$M=1$,根据HMM的维度间独立假设,三种工具都实现了按维求取。使用Cholesky 分解,$\mathbf{R}_{\mathbf{q}}$可以表示为
$$\mathbf{R}_{\mathbf{q}} = \mathbf{U}_{\mathbf{q}}^{\top}\mathbf{U}_{\mathbf{q}},$$
其中$\mathbf{U}_{\mathbf{q}}$是一个上三角矩阵。因此参数求解方程(组)可以分解为两个方程(组)
begin{aligned} mathbf{U}_{mathbf{q}}^{top}mathbf{g}_{mathbf{q}} &= mathbf{r}_{mathbf{q}},\ mathbf{U}_{mathbf{q}}mathbf{c}_{max} &= mathbf{g}_{mathbf{q}}. end{aligned}
上述方程组可以通过前向-后向迭代法(在线性代数课程中,也称为高斯消去法)求解。在以上任一工具的源代码中你都可以找到严格按照上述算法实现的参数求解模块。
目前为止,以上工具包公开发布的稳定版本为
  • HTS-2.2
  • SPTK-3.6
  • hts_engine_API-1.06

参考文献
Keiichi Tokuda, Takao Kobayashi, and Satoshi Imai. speech parameter generation from HMM using dynamic features. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing, pages 660–663, September 1995.
Keiichi Tokuda, Takayoshi Yoshimura, Takashi Masuko, Takao Kobayashi, and Tadashi Kitamura. speech parameter generation algorithms for HMM-based speech synthesis. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing, pages 1315–1318, June 2000.
Heiga Zen, Keiichi Tokuda, and Alan W Black. Statistical parametric speech synthesis. Speech Communication, 51(11):1039–1064, November 2009.


https://m.sciencenet.cn/blog-839087-653086.html


下一篇:IEEE Signal Processing Letters

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的其他最新博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-14 15:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部