| タスク | ノート |
|---|---|
| whisper_vits_japanese(組み込みellaデータセット) |
このプロジェクトでは、GoogleのWhisperプロジェクトをVITSデータプロセッサとして使用しています。 Whisper Projectのtranscribe.pyを変更することにより、オーディオに対応するSRTファイルを生成します(ここで削除されたPRが使用され、PRはもはや見つかりません。したがって、元の著者を参照することはできません)。同時に、ウィスパーの制限は、いくつかのオーディオファイルを読み取ることができます。フォルダー内のすべてのオーディオファイルを通過できるポイントまで緩和されます。 WhisperはSRTを出力して長いオーディオの入力を可能にすることができ、ユーザーはオーディオをバラバラにカットしたり、長いオーディオのテキストを音声にしたりする必要がなくなりました。音声認識とデータの準備についてささやきに直接依存し、自動的に短いオーディオにスライスし、トランスクリプトファイルを自動的に生成し、VITSトレーニングプロセスに送信します。長期的なオーディオドライサウンドの取得が簡単であることを考えると、VITSエントリの障壁は再び大幅に減少します。
処理プロセスはほぼ次のとおりです。ささやきによって認識されるSRTファイルは、auto.pyによって処理されます。処理プロセスとは、TobiasRordorf/SRT-to-CSV-and-audio-Splitを指します。SRTファイルのサブタイトルINFO(CSVで保存)(github.com)に基づいて長いオーディオファイルを分割します。オーディオファイルは最初に22050Hzと16ビットに変換され、次に同じ名前と音声認識トランスクリプトを持つSRTファイルのタイムスタンプがCSVファイルに変換されます。 CSVファイルには、オーディオの各セグメントの開始時間と終了時間、および対応するトランスクリプトおよびオーディオファイルパスがあります。次に、オーディオセグメントパッケージは、開始時間と終了時間に応じて長いオーディオを分割するために使用され、接尾辞を備えたオーディオファイルは、A_0.WAVやA_1.WAVなどのスライスの順に生成されます。その後のデータフローは、VITS部分に直接接続できます。
私が今使用しているclean船とシンボルは、cjangcjengh/vits:vits bits in vits enductation of agane biss of the Creation God時代としての日本、中国、韓国語、サンスクリット語(github.com)です。現在、彼の倉庫はより多くのクリーナーとシンボルを更新しましたが、私は非常にノスタルジックな人であり、誰もが最初にVitsに来たときが恋しいので、私はまだ元のバージョンを使用しています。 VITSには2つの主要な前処理があります。1つは単調な整列で、もう1つはPreprocess.pyで、その後、Train.pyを開始できます。すべてのプロセスをWhisper-vits-apanese.ipynbに入れました。段階的にクリックして実行する必要があります。ユーザーが変更する必要がある唯一のことは、オーディオzipパスを独自のオーディオzipに置き換えることです。残りのパーツを変更する必要はありません。最後に、モデルと処理されたファイルをネットワークディスクに保存し、次のトレーニング中にネットワークディスクから最後の最新チェックポイントを復元する手順を追加しました。
Audio File Format SpeakerID_XXXX.WAVに名前を付けて、オーディオフォルダーにアップロードしてください。次に、一般的な手順に従って実行します。オーディオ処理が完了したら、auto_ms.pyファイルを実行すると、txtファイルが自動的に生成され、フォーマットパス| speakerid |テキストが生成されます。
注:auto_ms.pyを使用してtxtを生成する場合、アラインメントとテキスト変換のステップでコードに変更する必要があります:(複数の人向けのトレーニングの場合はtext_indexが1ではなく2であるため)
python preprocess.py --text_index 2 --text_cleaners japanese_cleaners --filelists /content/whisper-vits-japanese/filelists/train_filelist.txt /content/whisper-vits-japanese/filelists/val_filelist.txt
python train_ms.py -c configs/ms.json -m ms
hps = utils.get_hparams_from_file("./configs/ms.json")
net_g = SynthesizerTrn(
len(symbols),
hps.data.filter_length // 2 + 1,
hps.train.segment_size // hps.data.hop_length,
n_speakers=hps.data.n_speakers,
**hps.model).cuda()
_ = net_g.eval()
_ = utils.load_checkpoint("/root/autodl-tmp/logs/ms/G_29000.pth", net_g, None)
stn_tst = get_text("ごめんね優衣", hps)
with torch.no_grad():
x_tst = stn_tst.cuda().unsqueeze(0)
x_tst_lengths = torch.LongTensor([stn_tst.size(0)]).cuda()
sid = torch.LongTensor([11]).cuda() //11指speakerId为11,如果有12个n_speaker,编号就从0-11
audio = net_g.infer(x_tst, x_tst_lengths, sid=sid, noise_scale=.667, noise_scale_w=0.8, length_scale=1)[0][0,0].data.cpu().float().numpy()
ipd.display(ipd.Audio(audio, rate=hps.data.sampling_rate, normalize=False))