OpenVoiceV2-CoreML-mirror / pipeline_info.json
aoiandroid's picture
Upload OpenVoice V2 Core ML packages (ToneColorConverter split + E2E)
bf0fc09 verified
Raw
History Blame Contribute Delete
2.82 kB
{
"description": "OpenVoice V2 ToneColorConverter を5つの CoreML モデルに分割。voice_conversion パスを再現する実行順序は以下の通り。",
"pipeline": [
{
"step": 1,
"model": "ToneColorConverter_ReferenceEncoder.mlpackage",
"role": "参照音声の mel-spectrogram → tone color embedding v(C)",
"inputs": {
"spec": "[1, T, n_mels] float32"
},
"outputs": {
"g": "[1, gin_channels, 1] float32"
}
},
{
"step": 2,
"model": "ToneColorConverter_PosteriorEncoder.mlpackage",
"role": "ベース音声の STFT スペクトル → 潜在変数 z",
"inputs": {
"spec": "[1, n_fft, T] float32",
"spec_lengths": "[1] int32",
"g": "[1, gin_channels, 1] float32 (ソーススピーカーの g)"
},
"outputs": {
"z": "[1, inter_channels, T] float32",
"y_mask": "[1, 1, T] float32"
}
},
{
"step": 3,
"model": "ToneColorConverter_Flow_Forward.mlpackage",
"role": "z → z_p (ソーストーンカラー除去)",
"inputs": {
"z": "step2.z",
"y_mask": "step2.y_mask",
"g": "ソース g"
},
"outputs": {
"z_p": "[1, inter_channels, T] float32"
}
},
{
"step": 4,
"model": "ToneColorConverter_Flow_Reverse.mlpackage",
"role": "z_p → z_hat (ターゲットトーンカラー注入)",
"inputs": {
"z_p": "step3.z_p",
"y_mask": "step2.y_mask",
"g_tgt": "ターゲット g"
},
"outputs": {
"z_hat": "[1, inter_channels, T] float32"
}
},
{
"step": 5,
"model": "ToneColorConverter_Decoder.mlpackage",
"role": "z_hat → 波形 (HiFi-GAN)",
"inputs": {
"z_hat": "step4.z_hat",
"y_mask": "step2.y_mask",
"g": "ターゲット g"
},
"outputs": {
"audio": "[1, 1, T_audio] float32"
}
}
],
"hyperparameters": {
"sampling_rate": 22050,
"filter_length": 1024,
"hop_length": 256,
"win_length": 1024,
"n_fft": 513,
"inter_channels": 192,
"hidden_channels": 192,
"gin_channels": 256,
"upsample_rates": [
8,
8,
2,
2
]
},
"notes": [
"MeloTTS (BaseSpeakerTTS) は可変長 tokenizer のため CoreML 化対象外。",
"ベース音声は Python/MeloTTS で生成し、そのスペクトルを step2 に渡す。",
"PosteriorEncoder は Core ML 用に後験平均 (tau=0 相当) のみ。PyTorch の randn サンプリングは含まない。",
"tone color embedding は事前計算して .pth/.bin で保存しておくと効率的。",
"iOS 推論時は AVAudioEngine で sampling_rate に合わせてリサンプリング要。"
]
}