wavernn (複合)¶
ユースケースと概要説明¶
WaveRNN は、元々 PyTorch* でトレーニングされ、その後 ONNX* 形式に変換されたテキスト読み上げタスクモデルです。モデルは LJSpeech データセットでトレーニングされました。WaveRNN はメルスペクトログラムから波形回帰を実行します。詳細についてはこちらとリポジトリーを参照してください。
ONNX モデル¶
利便性のため、事前トレーニングされたモデルを ONNX 形式で提供します。
PyTorch から ONNX への変換を再現する手順¶
モデルは以下の手順で取得した ONNX 形式で提供されます。
元のリポジトリーのクローンを作成します
git clone https://github.com/as-ideas/ForwardTacotron
cd ForwardTacotron
変換がテストされたコミットをチェックアウトします。
git checkout 78789c1aa845057bb2f799e702b1be76bf7defd0
README.md に従い、LJSpeech データセットを前処理します。
スクリプト
wavernn_to_onnx.py
を ForwardTacotron ルート・ディレクトリーにコピーし、git patch0001-Added-batch-norm-fusing-to-conv-layers.patch
を適用します。https://github.com/fatchord/WaveRNN/tree/master/pretrained/ から WaveRNN モデルをダウンロードし、pre-trained ディレクトリーに展開します。
mkdir pretrained
wget https://raw.githubusercontent.com/fatchord/WaveRNN/master/pretrained/ljspeech.wavernn.mol.800k.zip
unzip ljspeech.wavernn.mol.800k.zip -d pretrained && mv pretrained/latest_weights.pyt pretrained/wave_800K.pyt
スクリプトを実行して WaveRNN を onnx 形式に変換します
python3 wavernn_to_onnx.py --mel <path_to_preprocessed_dataset>/mel/LJ008-0254.npy --voc_weights pretrained/wave_800K.pyt --hp_file hparams.py --batched
注: ネットワークの自己回帰的な性質により、モデルは wavernn_upsampler.onnx, wavernn_rnn.onnx
の 2 つに分割されます。最初は時間次元で特徴マップを拡張し、2 番目は拡張された特徴マップのすべての列を繰り返し処理します。
wavernn-upsampler モデル仕様¶
wavernn-upsampler モデルはメルスペクトログラムを受け入れ、2 つの特徴マップを生成します。1 つ目はアップサンプル・レイヤーと畳み込みのシーケンスを使用して 1 ステップでメルスペクトログラムを拡張し、2 つ目はアップサンプル・レイヤーと畳み込みを使用して 3 つのステップで畳み込みメルスペクトログラムを拡張します。
メトリック |
値 |
---|---|
GOPs |
0.37 |
MParams |
0.4 |
入力¶
メルスペクトログラム、名前: mels
、形状: 1, 200, 80
、形式: B, T, C
。
説明:
B
- バッチサイズT
- メルスペクトログラムの時間C
- メルスペクトログラムのメル数
出力¶
-
処理されたメルスペクトログラム、名前:
aux
、形状:1, 53888, 128
、形式:B, T, C
。説明:
B
- バッチサイズT
- オーディオの時間 (メルスペクトログラムの時間 *hop_length
に等しい)C
- 処理されたメルスペクトログラム内の特徴数。
-
アップサンプリングおよび処理された (時間による) メルスペクトログラム、名前:
upsample_mels
、形状:1, 55008, 80
、形式:B, T', C
。説明:
B
- バッチサイズT'
- バッチ間のクロスフェードのためにサンプル数が埋め込まれたオーディオの時間C
- メルスペクトログラムのメル数
wavernn-rnn モデル仕様¶
wavernn-rnn モデルは、wavernn-upsampler から 2 つの特徴マップを受け取り、ステップが進ごとに B サンプルによる音声回帰に使用されるロジスティクス分布の混合のパラメーターを生成します (B はバッチサイズ)。
メトリック |
値 |
---|---|
GOps |
0.06 |
MParams |
3.83 |
入力¶
upsampled_mels
のタイムスライス、名前:m_t
、形状:B, 80
aux
の時間/空間スライス、名前:a1_t
、形状:B, 32
、2 番目の次元は 32 = aux.shape[1]/4aux
の時間/空間スライス、名前:a2_t
、形状:B, 32
、2 番目の次元は 32 = aux.shape[1]/4aux
の時間/空間スライス、名前:a3_t
、形状:B, 32
、2 番目の次元は 32 = aux.shape[1]/4aux
の時間/空間スライス、名前:a4_t
、形状:B, 32
、2 番目の次元は 32 = aux.shape[1]/4自己回帰における GRU レイヤーの非表示状態、名前:
h1.1
、形状:B, 512
自己回帰における GRU レイヤーの非表示状態、名前:
h2.1
、形状:B, 512
自己回帰の以前の予測 (最初はゼロ)、名前:
x
、形状:B, 1
注: B
- バッチサイズ。
出力¶
自己回帰における GRU レイヤーの非表示状態、名前:
h1
、形状:B, 512
自己回帰における GRU レイヤーの非表示状態、名前:
h2
、形状:B, 512
物流物流混合パラメーター、名前:
logits
、形状:B, 30
。ロジスティック分布の混合のパラメーターに分割できます: 確率 = logits[:, :10]、平均値 = logits[:, 10:20]、スケール = logits[:, 20:30]
注: B
- バッチサイズ。
モデルをダウンロードして OpenVINO™ IR 形式に変換¶
以下の例に示すように、モデルをダウンロードし、必要に応じてモデル・ダウンローダーやその他の自動化ツールによってモデルを OpenVINO™ IR 形式に変換できます。
モデル・ダウンローダーの使用例:
omz_downloader --name <model_name>
モデル・コンバーターの使用例:
omz_converter --name <model_name>
法務上の注意書き¶
元のモデルは、こちらのライセンスに基づいて配布されています。
MIT License
Copyright (c) 2019 fatchord (https://github.com/fatchord)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.