たれぱんのびぼーろく

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

声質変換・音声の前処理に関する知識・考察

まず生波形を見よ

全ては生波形に始まり生波形に終わる。
無音区間、音量、バックグラウンドノイズ、全てが波形に表現されている。
まずは生データ、これサイエンスの基本.

無音区間を切り出すべきか

残しまくるのは一般に良くないと思う。
無音を教師として学習してしまうから。

DeepVoice2 (textSeq2audioSeq) では、オーディオの開始タイムポイントがずれると良くなかったとのこと。前後の無音区間カットで対応

also find that if the speech in each audio clip does not start at the same timestep, the models are much less likely to converge to a meaningful attention curve and recognizable speech; thus, we trim all initial and final silence in each audio clip.

完全に切り落とすのもどうかと思う
語尾が不自然になりそうな予感

強度でざっくり切る方法もあるし、音素アラインメントして無音推定するのもある。

実装

librosa.effects.trim: 前後の無音区間を削除

librosa.effects.split: 無音で囲まれたオーディオを抜くための場所を検出して教えてくれる.

音量の正規化

モデルに強く依存しそう。

推論時の正規化+変換後逆正規化を前提として、
音量正規化した囁き声や怒鳴り声をサンプルに入れとくとか

囁き声を学習データに入れず、推論時に囁き声をVCできるか否か

リサンプリング

さすがにサンプリング周波数揃ってないとモデルに入れられないと思う

実装

librosa.core.load()がデフォルトでリサンプリングに対応している。標準では22050Hz
内部的にはresampy (指定すればscipy) を呼んでいる.

強度低次元化

μ-law 変換

音質

前段にノイズ抑制等を入れるべきか否か

雑音の付加

学習時: 綺麗なデータ+雑音 => 綺麗な生成データ
推論時: 雑音付きデータ => 綺麗な生成データ

Data argumentation

データ数はモデル性能へ非線形な影響を与える.
また話者によって性能が大きく異なり得ることも知られている.
parallel-wavenet

参考文献

必読
日本語 End-to-end 音声合成に使えるコーパス JSUT の前処理 [arXiv:1711.00354] - LESS IS MORE