たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

解説: LPCNet

LPCNet: 線形予測ボコーダーのうちexcitation予測部をAR-RNN化、WaveRNN (full neural Vocoders) より省パラメータで同精度
スパース化やノイズあり学習、全結合層の工夫など色々最適化してそんな強くないCPUでもリアルタイム合成に成功.

Abstract

Vocoderのefficiencyに注目した論文.
RNN + LPCでパラメータ効率を向上, 16 kHz waveform リアルタイムCPU合成に成功.

既存モデル

efficiency面での先行研究: FFTNet, WaveRNN
古典モデル: 線形予測ボコーダ/ソースフィルタモデル

着想: LPCの良くて軽い部分を拝借

波形モデリング = スペクトル包絡モデリング + 励起モデリング
LPC: スペクトル包絡/線形部は良く近似できても、励起/残差は上手くモデル化/予測できない.

Model

xt = linearPredictor(x<t|θ) + ResidualByWaveRNN()

Coefficintsの計算

The prediction coefficients ak are computed

  1. 18-band Bark-frequency cepstrum => a linear-frequency power spectral density (PSD)
  2. a PSD => (inverse FFT) => an autocorrelation
  3. a auto-correlation => (Levinson-Durbin algorithm) => predictor

sampleからじゃなくてケプストラムから出すのでLPC精度は落ちるけど、LPCはあくまで手段で、RNNの残差算出で補償して全体のefficiencyが上がっていればいい.

Excitation算出

純粋なLPCとみなす場合、excitation部はスペクトル包絡や生成サンプルと無関係.
それで試した場合の精度がイマイチだったので両方ともfeature的な感じで入れてる.

We still include st−1 and pt because we find that open-loop synthesis based only on et−1 produces bad quality speech (see Section 3.8).

DualFC

必須ではないが同計算量で性能をちょっとあげる工夫.

  • 従来: softmax(W2 ReLU(W1ht))
  • 今回: softmax(DualFC(ht)) = softmax(a1⦿tanh(W1ht)+a2⦿tanh(W2ht))

直感的説明: ステップ関数2つを組み合わせてbin推定
今回のタスクは「量子化されたどのbinに入るか」を当てるものなので究極的には正答binのone-hotベクトルをsoftmaxに入れたい.
「X以上」つまり閾値がxのステップ関数と「X+1以下」つまり閾値がx+1のステップ関数を用意すれば、その差分はone-hotになる.
非線形で特定区間のみ値がデカくなるよう学習させなくても、反対方向のステップ関数2つ用意すれば済むという発想.
あくまで直感的説明なので実際にそう学習しているかはわからない (重みの監視をしたらそれっぽく振る舞ったらしい. Figure無し)

スパース化

block-sparse matrices (from WaveRNN): blocks with the lowest magnitudes are progressively forced to zero until the desired sparseness is achieved
+ Keep diagonal terms?

ノイズ挿入

The use of linear prediction makes the details of the noise injection particularly important.

わりと大事そうだけどまだ読めてない.

official docs

jmvalin.ca
jmvalin.ca

derivatives

IBM High quality, lightweight and adaptable Text-to-Speech (TTS) using LPCNet | IBM Research Blog

LPCNet君が充分有能 & C実装まである、が遠因なのか、派生形はあんまり盛り上がってない印象がある(私の感想)

Full-band LPCNet

model input for analy/synth input for TTS
WORLD input for analy/synth acoustic feat. (57 dim)
WaveNet mel-spec (80 dim, 0-7.6kHz) acoustic feat. (80 dim)
PWG mel-spec (80 dim, 0-7.6kHz) acoustic feat. (80 dim)
LPCNet BerkCep. (50 dim), fo, pitch corr. acoustic feat. (52 dim)

OriginalがMOS 4.25くらい。TTSモデルはそれと完全に同じ. Analy/Synthが逆に4.0どまり.