1
大学数学基礎解説
文献あり

CheapTrickとD4Cの窓関数について(メモ書き)

198
0
$$\newcommand{abs}[1]{\mathopen{}\mathclose{\left\lvert #1\right\rvert}} \newcommand{conj}[1]{\overline{#1}} \newcommand{fseries}[1]{\hat{#1}} \newcommand{given}[0]{\;\middle|\;} \newcommand{intd}[1]{\,\mathrm{d}{#1}} \newcommand{numset}[1]{\mathbb{#1}} \newcommand{pqty}[1]{\mathopen{}\mathclose{\left({#1}\right)}} \newcommand{seq}[1]{\mathopen{}\mathclose{\left\lbrace #1\right\rbrace}} \newcommand{Set}[1]{\mathopen{}\mathclose{\left\lbrace #1\right\rbrace}} \newcommand{where}[0]{\quad\text{where}\quad} $$

はじめに

この記事は,CheapTrick[Morise, 2015]とD4C[Morise, 2016]という音声処理の手法について,考察した事項をメモしたものです.窓関数を用いたDFTによる信号処理についてご存じであれば読めるかと思います.

なお,周期$T$の周期関数で,区間$[0,T]$において自乗可積分であるものの全体集合を$L^2(T)$と表記します.

CheapTrickの窓関数の性質

CheapTrickの窓関数が持つ重要な性質に「分析する信号が周期関数であれば,信号の時間シフトでパワーが変化しない」ことがあります.どういうことかというと,次の定理が成立します.

CheapTrick

$f\in L^2(T)$なら,次式が成立する.
\begin{equation} \int_0^{3T} \abs{w(t)f(t)}^2\intd{t} = \frac{9}{8}\int_0^T \abs{f(t)}^2\intd{t} \where w(t) = \frac{1}{2}-\frac{1}{2}\cos\pqty{\frac{2\pi t}{3T}} \end{equation}

まず,$f(t)$$w(t)$周期$3T$周期関数としてフーリエ級数展開し,フーリエ係数をそれぞれ$\fseries{f}_n$$\fseries{w}_n$とおく.すると,$\fseries{w}_n$
\begin{equation} \hat{w}_n = \begin{cases} 1/2 & \text{($n=0$)} \\ -1/4 & \text{($n=\pm 1$)} \\ 0 & \text{(otherwise)} \end{cases} \end{equation}
である.したがって,$g(t)=w(t)f(t)$のフーリエ係数$\fseries{g}_n$は,畳み込み定理により
\begin{equation} \fseries{g}_n = \sum_{i=-\infty}^\infty \fseries{w}_i\fseries{f}_{n-i} = -\frac{1}{4}\fseries{f}_{n-1} + \frac{1}{2}\fseries{f}_n - \frac{1}{4}\fseries{f}_{n+1} \end{equation}
と書ける.

ここで,$f(t)$は周期$T$の周期関数だから,$n$$3$の倍数でなければ$\fseries{f}_n=0$となる.そのため,$\fseries{f}_{n-1}$$\fseries{f}_n$$\fseries{f}_{n+1}$のうち,$0$でないものは1つしかない.よって
\begin{equation} \abs{\fseries{g}_n}^2 = \fseries{g}_n\conj{\fseries{g}_n} = \frac{1}{16}\abs{\fseries{f}_{n-1}}^2 + \frac{1}{4}\abs{\fseries{f}_n}^2 + \frac{1}{16}\abs{\fseries{f}_{n+1}}^2 + \sum_{\substack{i,j\in\Set{0,\pm 1}\\ i\neq j}}\cancelto{0}{\fseries{f}_{n+i}\conj{\fseries{f}_{n+j}}} \end{equation}
である.したがって,パーセバルの定理から
\begin{align} \frac{1}{3T}\int_0^{3T}\abs{g(t)}^2\intd{t} &= \sum_{n=-\infty}^\infty\abs{\fseries{g}_n}^2 \\ &= \frac{1}{16}\sum_{n=-\infty}^\infty\abs{\fseries{f}_{n-1}}^2 + \frac{1}{4}\sum_{n=-\infty}^\infty\abs{\fseries{f}_n}^2 + \frac{1}{16}\sum_{n=-\infty}^\infty\abs{\fseries{f}_{n+1}}^2 \\ &= \pqty{\frac{1}{16}+\frac{1}{4}+\frac{1}{16}}\cdot\frac{1}{3T}\int_0^{3T}\abs{f(t)}^2\intd{t} \\ &= \frac{1}{8T}\int_0^{3T}\abs{f(t)}^2\intd{t} \end{align}
となる.$f(t)$$T$を周期に持つから
\begin{equation} \int_0^{3T}\abs{g(t)}^2\intd{t} = \frac{3}{8}\int_0^{3T}\abs{f(t)}^2\intd{t} = \frac{9}{8}\int_0^T\abs{f(t)}^2\intd{t} \end{equation}
である.

この証明において本質的なのは「畳み込み定理」と「パーセバルの定理」であり,これらはどちらも離散フーリエ変換に対しても成立します.よって,この主張・証明は離散フーリエ変換に対するものとして書き直せます.

離散化されたCheapTrick

$f_n$が周期$N$の周期数列なら,次式が成立する.
\begin{equation} \sum_{n=0}^{3N-1} \abs{w_nf_n}^2 = \frac{9}{8}\sum_{n=0}^{N-1} \abs{f_n}^2 \where w_n = \frac{1}{2}-\frac{1}{2}\cos\pqty{\frac{2\pi n}{3N}} \end{equation}

まず,$f_n$$w_n$周期$3N$周期数列として離散フーリエ変換する.すなわち
\begin{equation} F_k = \sum_{n=0}^{3N-1}f_ne^{-i(2\pi k/(3N))n}, \quad W_k = \sum_{n=0}^{3N-1}w_ne^{-i(2\pi k/(3N))n} \end{equation}
とおく.すると,$W_k$
\begin{equation} W_k = \begin{cases} 1/2 & \text{($k=0$)} \\ -1/4 & \text{($k=\pm 1$)} \\ 0 & \text{(otherwise)} \end{cases} \end{equation}
である.したがって,$g_n=w_nf_n$の離散フーリエ変換$G_k$は,畳み込み定理により
\begin{equation} G_k = \sum_{n=0}^{3N-1}W_nF_{k-n} = -\frac{1}{4}F_{k-1} + \frac{1}{2}F_k - \frac{1}{4}F_{k+1} \end{equation}
と書ける.

ここで,$f_n$は周期$N$の周期関数だから,$k$$3$の倍数でなければ$F_k=0$となる.そのため,$F_{k-1}$$F_k$$F_{k+1}$のうち,$0$でないものは1つしかない.よって
\begin{equation} \abs{G_k}^2 = G_k\conj{G_k} = \frac{1}{16}\abs{F_{k-1}}^2 + \frac{1}{4}\abs{F_k}^2 + \frac{1}{16}\abs{F_{k+1}}^2 + \sum_{\substack{i,j\in\Set{0,\pm 1}\\ i\neq j}}\cancelto{0}{F_{k+i}\conj{F_{k+j}}} \end{equation}
である.したがって,パーセバルの定理から
\begin{align} 3N\sum_{n=0}^{3N-1}\abs{g_n}^2 &= \sum_{n=0}^{3N-1}\abs{G_n}^2 \\ &= \frac{1}{16}\sum_{k=0}^{3N-1}\abs{F_{k-1}}^2 + \frac{1}{4}\sum_{k=0}^{3N-1}\abs{F_k}^2 + \frac{1}{16}\sum_{k=0}^{3N-1}\abs{F_{k+1}}^2 \\ &= \pqty{\frac{1}{16}+\frac{1}{4}+\frac{1}{16}}\cdot 3N\sum_{n=0}^{3N-1}\abs{f_n}^2 \\ &= \frac{9N}{8}\sum_{n=0}^{3N-1}\abs{f_n}^2 \end{align}
となる.$f_n$$N$を周期に持つから
\begin{equation} \sum_{n=0}^{3N-1}\abs{g_n}^2 = \frac{3}{8}\sum_{n=0}^{3N-1}\abs{f_n}^2 = \frac{9}{8}\sum_{n=0}^{N-1}\abs{f_n}^2 \end{equation}
である.

次のJavaScriptを実行することで,この定理が成り立つことを数値的に確認できます.

      const PI = Math.PI;
const N = 300;
const x = [];
const w = [];

for (let i = 0; i < N; i++) {
  x[i] = Math.random();
  x[i + N] = x[i];
  x[i + 2 * N] = x[i];
}

for (let i = 0; i < 3 * N; i++) {
  w[i] = 0.5 - 0.5 * Math.cos(2 * PI * i / (3 * N));
}

let S1 = 0;
let S2 = 0;

for (let i = 0; i < 3 * N; i++) {
  S1 += (x[i] * w[i]) ** 2;
}

for (let i = 0; i < N; i++) {
  S2 += x[i] ** 2;
}

console.log(S1 / S2); // 1.125 = 9/8
    

D4Cの窓関数の性質

D4C

$f\in L^2(T)$なら,次式が成立する.
\begin{equation} \int_0^{4T} \abs{w(t)f(t)}^2\intd{t} \fallingdotseq 1.2184\int_0^T\abs{f(t)}^2\intd{t} \where w(t) = 0.42-0.5\cos\pqty{\frac{2\pi t}{4T}}+0.08\cos\pqty{\frac{2\pi t}{2T}} \end{equation}

まず,$f(t)$$w(t)$周期$4T$周期関数としてフーリエ級数展開し,フーリエ係数をそれぞれ$\fseries{f}_n$$\fseries{w}_n$とおく.すると,$\fseries{w}_n$
\begin{equation} \hat{w}_n = \begin{cases} 0.42 & \text{($n=0$)} \\ -0.25 & \text{($n=\pm 1$)} \\ 0.04 & \text{($n=\pm 2$)} \\ 0 & \text{(otherwise)} \end{cases} \end{equation}
である.したがって,$g(t)=w(t)f(t)$のフーリエ係数$\fseries{g}_n$は,畳み込み定理により
\begin{equation} \fseries{g}_n = \sum_{i=-\infty}^\infty \fseries{w}_i\fseries{f}_{n-i} = 0.04\fseries{f}_{n-2} -0.25\fseries{f}_{n-1} + 0.42\fseries{f}_n - 0.25\fseries{f}_{n+1} + 0.04\fseries{f}_{n+2} \end{equation}
と書ける.

ここで,$f(t)$は周期$T$の周期関数だから,$n$$4$の倍数でなければ$\fseries{f}_n=0$となる.そのため,$\fseries{f}_{n-2}\conj{\fseries{f}_{n+2}}$$0$とは限らないことに注意すると,CheapTrickと同様に
\begin{equation} \abs{\fseries{g}_n}^2 = \fseries{g}_n\conj{\fseries{g}_n} = (0.04)^2\pqty{\abs{\fseries{f}_{n-2}}^2+\abs{\fseries{f}_{n+2}}^2} + (0.25)^2\pqty{\abs{\fseries{f}_{n-1}}^2+\abs{\fseries{f}_{n+1}}^2} + (0.42)^2\abs{\fseries{f}_n}^2 + (0.04)^2\underbrace{\pqty{\fseries{f}_{n-2}\conj{\fseries{f}_{n+2}}+\fseries{f}_{n+2}\conj{\fseries{f}_{n-2}}}}_{\text{$R_n$とおく}} \end{equation}
と計算できる(右辺の末項に注意).したがって,パーセバルの定理から
\begin{align} \frac{1}{4T}\int_0^{4T}\abs{g(t)}^2\intd{t} &= \sum_{n=-\infty}^\infty\abs{\fseries{g}_n}^2 \\ &= \pqty{2(0.04)^2+2(0.25)^2+(0.42)^2}\cdot\frac{1}{4T}\int_0^{4T}\abs{f(t)}^2\intd{t} + (0.04)^2\sum_{n=-\infty}^\infty R_n\\ &= \frac{0.3046}{4T}\int_0^{4T}\abs{f(t)}^2\intd{t} + (0.04)^2\sum_{n=-\infty}^\infty R_n \tag{1} \end{align}
となる.

ここで,$\sum_{n=-\infty}^\infty R_n$を評価する.コーシー・シュワルツの不等式,およびパーセバルの定理から
\begin{equation} \abs{\sum_{n=-\infty}^\infty\fseries{f}_{n-2}\conj{\fseries{f}_{n+2}}} \leq \sqrt{\sum_{n=-\infty}^\infty\abs{\fseries{f}_{n-2}}^2}\sqrt{\sum_{n=-\infty}^\infty\abs{\fseries{f}_{n+2}}^2} = \sum_{n=-\infty}^\infty\abs{\fseries{f}_n}^2 = \frac{1}{4T}\int_0^{4T}\abs{f(t)}^2\intd{t} \end{equation}
となる.したがって,三角不等式から
\begin{equation} \abs{\sum_{n=-\infty}^\infty R_n} \leq \abs{\sum_{n=-\infty}^\infty\fseries{f}_{n-2}\conj{\fseries{f}_{n+2}}} + \abs{\sum_{n=-\infty}^\infty\fseries{f}_{n+2}\conj{\fseries{f}_{n-2}}} \leq \frac{1}{2T}\int_0^{4T}\abs{f(t)}^2\intd{t} \end{equation}
と評価できるので,式(1)から
\begin{equation} \frac{\abs{\int_0^{4T}\abs{g(t)}^2\intd{t} - 0.3046\int_0^{4T}\abs{f(t)}^2\intd{t}}}{\int_0^{4T}\abs{f(t)}^2\intd{t}} = \frac{4T(0.04)^2\abs{\sum_{n=-\infty}^\infty R_n}}{\int_0^{4T}\abs{f(t)}^2\intd{t}} \leq 2(0.04)^2 = 0.0032 \end{equation}
となる.$\int_0^{4T}\abs{f(t)}^2\intd{t}=4\int_0^T\abs{f(t)}^2\intd{t}$だから
\begin{equation} \frac{\abs{\int_0^{4T}\abs{g(t)}^2\intd{t} - 1.2184\int_0^T\abs{f(t)}^2\intd{t}}}{\int_0^T\abs{f(t)}^2\intd{t}} \leq 0.0128 \end{equation}
である.

以上により,不等式
\begin{equation} (1.2184-0.0128)\int_0^T\abs{f(t)}^2\intd{t} \leq \int_0^{4T}\abs{g(t)}^2\intd{t} \leq (1.2184+0.0128)\int_0^T\abs{f(t)}^2\intd{t} \end{equation}
が成立する.したがって($1.2184$と比べて)$\pm 0.0128$の影響が無視できる範囲においては
\begin{equation} \int_0^{4T}\abs{g(t)}^2\intd{t} \fallingdotseq 1.2184\int_0^T\abs{f(t)}^2\intd{t} \end{equation}
と近似できる.

参考文献

[1]
Masanori Morise, CheapTrick, a spectral envelope estimator for high-quality speech synthesis, Speech Communication, 2015, pp.1-7
[2]
Masanori Morise, D4C, a band-aperiodicity estimator for high-quality speech synthesis, Speech Communication, 2016, pp.57-65
投稿日:2021825

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。

投稿者

数学、特に応用数学が好きです。Mathlogでは主に、数学とプログラミングを絡めたようなことを書けたらいいなと思っています。

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中