†@dsk_saito先生のSPTK講習のまとめ。音声合成の基礎であるヴォコーダー周りを学ぼう。合成フィルタの詳しい話はSPTKのマニュアル等を参照で。3.5系では一部コマンドの仕様が変わっているので、3.4系準拠ということで。ヴォコーダーは、pitchの系列と素性ベクトルの系列(LPCやMel-cepstrum)を元に音声を合成するもの。Speechシステムではヴォコーダーに与えるためのピッチ系列とスペクトルに関する素性ベクトル系列の生成はHMMなどで生成するけれど、まずは人間の生の音声から素性ベクトルとピッチ抽出して再合成をしてみる。このピッチ系列と素性ベクトル系列に対しての操作を行うことで、ヴォイスチェンジャーや話者変換を実現することができる。soxとSPTKを利用して音声分析合成を行う方法をまとめる。音声は16k16bit。SPTKの実行ファイル群は名前が他のプログラムと被っているものがあるので、prefixに/usr/local/SPTKなどを指定してインストールするとよい。†f0(ピッチ)の系列を取り出す。音声をフレームに分割。-lでウィンドウサイズを指定。400'で400/16000の25ms。-pでフレーム周期(スライド量)を決める。してるのは、FFTのため。mcepresyn.wavヴォーカルコードとケプストラムを組み合わせて波形の合成処理をするclipを利用して、short値を超える値をクリッピングしておく。mgcepresyn.wav↑パラメータをいじって音を変化させる。波形を直接いじると品質の劣化が激しい。パラメータ情報(f0と素性ベクトル)をいじるとかなり頑健に変換が出来る。highpitch.wav低くする。fast.wav80フレームごとにシフトしていたものを、無理やり40フレームでシフトしていたものであるとして合成すると、2倍の速度で合成される。deep.wavfreqtというsptkのコマンドで同様のことが出来る。ピッチだけを変化させても綺麗にならない。