| Aufgabe | Notizbuch |
|---|---|
| Flüster_vits_japanese (eingebauter Ella-Datensatz) |
Dieses Projekt verwendet das Whisper -Projekt von Google als Vits -Datenprozessor. Durch Ändern des Transkricle.py des Whisper -Projekts generiert es die entsprechende SRT -Datei für das Audio (die gelöschte PR wird hier verwendet, und die PR wird nicht mehr gefunden, sodass sie nicht auf den ursprünglichen Autor verwiesen werden kann). Gleichzeitig kann das Flüstergrenze nur einige Audio -Dateien lesen, bis er alle Audiodateien im Ordner durchqueren kann. Whisper kann SRT ausgeben, um die Eingabe von langem Audio zu ermöglichen, und Benutzer müssen das Audio nicht mehr in Stücke schneiden oder den Text mit langem Audio sogar übertragen. Wir verlassen uns direkt auf Whisper für Spracherkennung und Datenvorbereitung, schneiden automatisch in kurze Audio ein, generieren automatisch Transkriptdateien und senden sie dann an den Vits -Trainingsprozess. In Anbetracht der Tatsache, dass der langfristige Audio-Trockenklang leichter zu erhalten ist, werden Vits-Eintrittsbarrieren erneut stark reduziert.
Der Verarbeitungsprozess ist ungefähr wie folgt: Die von Whisper erkannte SRT -Datei wird von Auto.Py verarbeitet. Der Verarbeitungsprozess bezieht sich auf Tobiasrordorf/SRT-to-CSV-and-Audio-Split: Lange Audio-Dateien basierend auf Untertitle-Info in der SRT-Datei (Transkript in CSV gespeichert) (Github.com). Die Audiodatei wird zuerst in 22050 Hz und 16 Bit konvertiert, und dann werden die Zeitstempel der SRT -Datei mit demselben Namen und dem Spracherkennungs -Transkript in eine CSV -Datei konvertiert. Die CSV -Datei hat die Startzeit und die Endzeit jedes Audiosegments sowie die entsprechenden Transkript- und Audio -Dateipfade. Anschließend wird das Audiosisment -Paket verwendet, um lange Audio nach Beginn der Zeit und der Endzeit zu teilen, und Audiodateien mit Suffixe werden in der Reihenfolge der Scheiben wie A_0.WAV und A_1.WAV usw. generiert. Der nachfolgende Datenfluss kann direkt mit dem Vit -Teil verbunden werden.
Das Vits Cleaner und das Symbol, das ich jetzt verwende, ist CjangcJengh/Vits: Vits Implementierung von japanischen, chinesischen, koreanischen und sanskrit (github.com) als anfängliche Version der Periode der Schöpfung Gott. Jetzt hat sein Lager mehr Reiniger und Symbole aktualisiert, aber ich bin eine sehr nostalgische Person, und ich vermisse die Zeit, als alle zu Beginn zu Vits gekommen sind, also benutze ich immer noch die Originalversion. Vits hat zwei Hauptvorverarbeitung, einer ist monoton und der andere ist preprocess.py und dann können Sie mit dem Zug starten. Ich habe alle Prozesse in flüstere-vits-japanese.ipynb eingebaut und muss nur Schritt für Schritt auf sie klicken, um zu laufen. Das einzige, was den Benutzer ändern muss, ist, meinen Audio -Zip -Pfad durch Ihren eigenen Audio -Reißverschluss zu ersetzen, und der Rest der Teile muss nicht geändert werden. Schließlich habe ich die Anweisungen hinzugefügt, um das Modell und die verarbeiteten Dateien auf der Netzwerkscheibe zu speichern und den letzten neuesten Kontrollpunkt während des nächsten Trainings wiederherzustellen.
Nennen Sie einfach das Audio -Dateiformat Sprecherid_xxxx.wav und laden Sie es in den Audioordner hoch. Befolgen Sie dann die allgemeinen Schritte, um es auszuführen. Wenn die Audioverarbeitung abgeschlossen ist, führen Sie die Datei auto_ms.py aus, und die TXT -Datei wird automatisch mit dem Formatpfad | SpeakerID | Text generiert.
Hinweis: Wenn Sie auto_ms.py verwenden, um TXT zu generieren, müssen Sie ihn in den Code in der Ausrichtung und im Textkonvertierungsschritt ändern: (Da der text_index nicht 1 ist, sondern 2 beim Training für mehrere Personen)
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))