|
-
Zitat von Neconspictor
Deshalb dachte ich, du solltest erst einmal testen, dass WaveRNN richtig installiert ist und funktioniert. Und dich dann um die Integration mit Anaconda3 kümmern.
Wie teste ich das WaveRNN richtig installiert ist? Daran scheitere ich glaube gerade.
Was ich installiert habe:
Ich habe Anaconda3 inklusive Python 3.7 installiert, da mir dieser Weg der Beschreibung nach auf PyTroch am bequemsten erschien.
Habe dann PyTorch installiert. Die Kommandos zum Testen ob PyTorch funktioniert habe ich erfolgreich ausgeführt.
Habe dann WaveRNN heruntergeladen und es einfach in einen Ordner kopiert.
Habe dann die Requirements wie auf der Seite angegeben installiert:
pip install -r requirements.txt
python quick_start.py funktioniert.
python preprocess.py funktioniert inzwischen auch, nachdem ich "if __name__ == '__main__':" in den Code eingefügt habe.
Nicht funktionieren tut "python train_tacotron.py" und "python train_wavernn.py --gta"
-
Abenteurer
Zitat von Herobrine
Würde mich freuen, wenn nach Diego noch alle weiteren Stimmen aus Gothic 1-3 kommen würden, bzw. du erklären würdest, wie du deine metadata.csv mitsamt aller Dialoge sowie Zuweisungen der .wav-Files der jeweiligen Sprecher aus Gothic 1-3 erstellt hast, damit man selbst auch einfach TTS Modelle mit den Sprechern trainieren könnte.
Ich habe die Zuweisung mit Hilfe eines Python Skriptes gemacht. Kannst du gerne hier herunterladen. Mit search_waves.py suche ich nach der angegebenen ID bzw. den Namen des NPCs. Mit search_dialogs,py generiere ich dann die metadata.csv für die vorher gefundenen .wav Dateien. Abschließend schaue ich, zu welchen .wav Dateien keine metadaten gefunden wurden und lösche diese.
Danke an MadFaTal für das Generieren der Gothic 3 Metadaten.
Hier sind die von mir zuletzt trainierten Modelle. (Held und Diego)
Dort befinden sich auch Beispiele zu der von dir geposteten Mod und die beim Generieren verwendete sentences.txt und hparameter.
Allgemein ist mir aufgefallen, dass die Audioqualität deutlich natürlicher klingt, wenn das Gesprochene im Sprachmuster des Sprechers (NPCs) liegt.
Geändert von sanjaesc (01.12.2019 um 18:12 Uhr)
-
Abenteurer
Zitat von MadFaTal
Wie teste ich das WaveRNN richtig installiert ist? Daran scheitere ich glaube gerade.
Was ich installiert habe:
Ich habe Anaconda3 inklusive Python 3.7 installiert, da mir dieser Weg der Beschreibung nach auf PyTroch am bequemsten erschien.
Habe dann PyTorch installiert. Die Kommandos zum Testen ob PyTorch funktioniert habe ich erfolgreich ausgeführt.
Habe dann WaveRNN heruntergeladen und es einfach in einen Ordner kopiert.
Habe dann die Requirements wie auf der Seite angegeben installiert:
pip install -r requirements.txt
python quick_start.py funktioniert.
python preprocess.py funktioniert inzwischen auch, nachdem ich "if __name__ == '__main__':" in den Code eingefügt habe.
Nicht funktionieren tut "python train_tacotron.py" und "python train_wavernn.py --gta"
Du wirst mit Windows so schnell keine Ruhe finden, der einfachste Weg ist eine separate Ubuntu Installation.
Unter Windows hat man leider das Problem mit der multiprocessing lib und auch anderen Bibliotheken.
Geändert von sanjaesc (04.12.2019 um 20:28 Uhr)
-
Abenteurer
Zitat von Multithread
Ich finde das Projekt sehr interessant und werde es mal weiter verfolgen.
Ich sehe insbesondere an zwei Punkte noch Verbesserungspotenzial:
1. ev. kann man einzelne, Fehlende Worte durch andere Sprecher einsprechen lassen (welche ähnlich klingen) und damit dem Netzwerk etwas auf die Sprünge helfen, ohne das die Stimme sich hörbar verändert.
2. Stimmung der Stimme. Theoretisch müsste man noch die Stimmung als 3ten Parameter irgendwie in das gesprochene Reinbekommen. Eventuell müsste man dafür 3-5 verschiedene Netzwerke Trainieren, welche dann je nach "Stimmung" unterschiedlich stark gewichtet werden. Ich weiss da nicht, wie viel man mit dem Text machen kann. Ist das Netzwerk Unicode fähig? Also das man z.B. für andere Stimmungen ein anderes Charakterset verwenden könnte?
Oder könnte man das mit einer Punktuation machen? Also nach jedem Wort ein Zeichen für die Stimmung.
Aber es ist dennoch schon sehr beeindruckend.
Tatsächlich gibt es sowas schon, nennt sich Global Style Tokens. In der Repository von mozilla/TTS wurde das bereits implementiert, es müsste sich nur jemand mit der nötigen Zeit finden, um es zu testen.
-
-
Zitat von sanjaesc
Du wirst mit Windows so schnell keine Ruhe finden, der einfachste Weg ist eine seperate Ubuntu Installation.
Unter Windows hat man leider das Problem mit der multiprocessing lib und auch anderen Bibliotheken.
Ich mache jetzt noch einen letzten Windows Versuch mit dem noch nicht allzu lang verfügbaren Windows-Feature "Windows-Subsystem für Linux".
Nach Aktivierung unter Windows Features habe ich über den App-Store Unbuntu bezogen.
Unwichtiges am Rande:
Allerdings beginnt das System für mich schon völlig unmenschlich. Es fordert mich auf, einen Benutzernamen einzugeben und verweigert diesen ohne etwas sinnvolles von sich zu geben, außer des es einer RegExpression entsprechen muss. Naja, nach wildem rumhacken auf der Tastatur hat er stpid als Benutzername akzeptiert. Immerhin hat das System mein lausiges Passwort nicht verweigert.
Egal, wo ich nicht weiterkomme ist, wie ich die notwendigen Pakte installiere. Die Kommandos welche z.B. bei wavRNN angegeben werden, werden mit Fehlermeldungen quittiert.
Gelungen ist mir mit Hilfe von Webseiten Python 3.7.5 zu installieren. Allerdings muss ich das mit phython3 anstelle von python starten.
Auch PyTorch konnte ich installieren. Es funktioniert, habe aber keinen Cuda Support.
Wie installiere ich Cuda Support unter unbuntu?
Wie installiere ich folgende Pakete unter unbuntu?
numpy==1.16.2
librosa==0.6.3
matplotlib
unidecode
inflect
nltk
[Bild: attachment.php?s=61634688a96d7c1ee01973498b579b9d&attachmentid=48597&d=1575487204&thumb=1]
-
Abenteurer
Zitat von MadFaTal
Ich mache jetzt noch einen letzten Windows Versuch mit dem noch nicht allzu lang verfügbaren Windows-Feature "Windows-Subsystem für Linux".
Nach Aktivierung unter Windows Features habe ich über den App-Store Unbuntu bezogen.
WSL hat keine GPU Unterstützung, da es nur eine Virtualisierung der Linux Distribution ist. Über die CPU wirst du zwar Sprache generieren können, aber das trainieren von neuen Modellen kann man damit vergessen...
Zitat von MadFaTal
Egal, wo ich nicht weiterkomme ist, wie ich die notwendigen Pakte installiere. Die Kommandos welche z.B. bei wavRNN angegeben werden, werden mit Fehlermeldungen quittiert.
Gelungen ist mir mit Hilfe von Webseiten Python 3.7.5 zu installieren. Allerdings muss ich das mit phython3 anstelle von python starten.
Auch PyTorch konnte ich installieren. Es funktioniert, habe aber keinen Cuda Support.
Wie installiere ich folgende Pakete unter unbuntu?
numpy==1.16.2
librosa==0.6.3
matplotlib
unidecode
inflect
nltk
Wie oben schon erwähnt, ohne GPU auch kein CUDA Support. Es gibt zwar Möglichkeiten sich da etwas zusammen zu hacken, siehe LINK... würde ich aber nicht empfehlen.
Am einfachsten ist eine separate Ubuntu Installation, verbraucht auch nicht wirklich viel Speicherplatz und man erspart sich soviel Kopfschmerzen.
Mit 'apt install python3-pip' installierst du den Paket-Manager für Python3
Die Pakete solltest du dann eigentlich einfach über pip3 install numpy==1.16.2 installieren können.
Aber ich würde mir das trotzdem nicht unter Windows antun
Geändert von sanjaesc (04.12.2019 um 22:11 Uhr)
-
Warum gibt es so etwas nicht unkompliziert für Windows?
Aktueller Zustand: Bin zuhause, viel am schlafen aber sonst geht es. (PMs hole ich dieses Wochende nach)
Pflegestufe 3 ist DURCH !!!, Behinderten Prozente 100% mit Begleitung Bearbeitung, physisch und psychologisch arg angeschlagen.
[Bild: 47439305ao.png]
-
Zitat von Sporthistoriker
Warum gibt es so etwas nicht unkompliziert für Windows?
Weil Windows doof ist :^)
Die Verwaltung von Abhängigkeiten (also andere Bibliotheken oder Programme, die "mein" Programm braucht) ist ein einziges Chaos, mal ganz abgesehen von der Verfügbarkeit (was gewissermaßén ein Henne/Ei Problem ist). Unter Linux brauche ich nur sudo pacman -S dep1 dep2 dep3 (oder etwas vergleichbares via apt) um meine Abhängigkeiten zu installieren. Die Distribution (Ubuntu, Arch Linux, ...) sorgt außerdem dafür, dass alle Pakete aus den Paketquellen untereinander kompatibel sind. Unter Windows müssen alle Abhängigkeiten mitgeliefert werden (=> keine Updates, Duplikation) oder ich muss sie mir selbst in den passenden Versionen zusammensuchen.
Und viele OpenSource-Entwickler sind nunmal mit Linux unterwegs, also ist das ein Feedback-Loop.
-
Zitat von Lehona
Weil Windows doof ist :^)
Die Verwaltung von Abhängigkeiten (also andere Bibliotheken oder Programme, die "mein" Programm braucht) ist ein einziges Chaos, mal ganz abgesehen von der Verfügbarkeit (was gewissermaßén ein Henne/Ei Problem ist). Unter Linux brauche ich nur sudo pacman -S dep1 dep2 dep3 (oder etwas vergleichbares via apt) um meine Abhängigkeiten zu installieren. Die Distribution (Ubuntu, Arch Linux, ...) sorgt außerdem dafür, dass alle Pakete aus den Paketquellen untereinander kompatibel sind. Unter Windows müssen alle Abhängigkeiten mitgeliefert werden (=> keine Updates, Duplikation) oder ich muss sie mir selbst in den passenden Versionen zusammensuchen.
Und viele OpenSource-Entwickler sind nunmal mit Linux unterwegs, also ist das ein Feedback-Loop.
Imho hat das eigentlich wenig bis gar nichts mit dem package management zu tun, sondern einfach nur deshalb, dass sich wohl niemand um einen ordentlichen Windows-Port gekümmert hat bzw. pflegt. Ich habe z.B. PyTorch auf Windows nicht einmal installiert bekommen.
Das globale package management hat auch nicht nur Vorteile. Gerade wenn ein Programm auf eine ältere Bibliothek angewiesen ist, kann das schnell zu Problemen führen. Alle Abhängigkeiten mitzulieferen ist da nicht unbedingt ein Nachteil.
-
Zitat von Neconspictor
Imho hat das eigentlich wenig bis gar nichts mit dem package management zu tun, sondern einfach nur deshalb, dass sich wohl niemand um einen ordentlichen Windows-Port gekümmert hat bzw. pflegt. Ich habe z.B. PyTorch auf Windows nicht einmal installiert bekommen.
Ich denke das eine bedingt das andere. Es kümmert sich niemand um einen Windows Port, weil niemand der (wichtigen) Verantwortlichen Windows benutzt.
Zitat von Neconspictor
Das globale package management hat auch nicht nur Vorteile. Gerade wenn ein Programm auf eine ältere Bibliothek angewiesen ist, kann das schnell zu Problemen führen. Alle Abhängigkeiten mitzulieferen ist da nicht unbedingt ein Nachteil.
Das mag sein, aber es macht es trotzdem viel einfacher, schnell einen Prototypen zu veröffentlichen. Um lizenzrechtliche Probleme kommt man so größtenteils auch drumrum. Und wenn dann das Projekt erstmal mit Linux verheiratet ist, hat auch keiner mehr Lust, das auf Windows zum laufen zu bringen.
-
Mal als hinweis, für einen run versuch unter windows 10:
Windows 10 bietet eine Unix Subrutine an.
Es ist also theoretisch möglich, die Linux Komponenten unter LXSS laufen zu lassen, mit der WIndows 10 Installation (LXSS ist sowas das umgekehrte von WINE ).
Anleitung (English).
@ Sporthistoriker: Es wäre interessant zu wissen, ob du es damit zum laufen bekommst
-
Zitat von Multithread
Mal als hinweis, für einen run versuch unter windows 10:
Windows 10 bietet eine Unix Subrutine an.
Es ist also theoretisch möglich, die Linux Komponenten unter LXSS laufen zu lassen, mit der WIndows 10 Installation (LXSS ist sowas das umgekehrte von WINE ).
Anleitung (English).
@ Sporthistoriker: Es wäre interessant zu wissen, ob du es damit zum laufen bekommst
Das ist genau, das was ich hier probieren wollte. Soll aber auch nicht funktionieren.
-
Zumindest den Cuda Support dürftest du nicht ohne hack zum laufen bekommen. Der rest sollte aber gehen, soweit Ich das verstehe.
Ich nehme an, du hast den Properietären NV Treiber installiert auf dem Linux Subsystem?
Geändert von Multithread (07.12.2019 um 13:12 Uhr)
-
Zitat von Multithread
Ich nehme an, du hast den Properietären NV Treiber installiert auf dem Linux Subsystem?
Ich habe den Nvida Cuda Development Treiber unter Windows 10 laufen.
Von Linux habe ich keine Ahnung, wenn du ein Install kommando für mich hast, kann ich das ausprobieren.
PS:
Unter dem Anaconda Simulator hat mir PyTorch Cuda Support angezeigt.
Im Linux Subsystem zeigt mir PyTorch aktuell keinen Cuda Support an.
-
Ich nehme mal an, damit sollte es gehen.
Ich kann das nicht ausprobieren, mangelns NV Grafikkarte.
Und für die Grafische Oberfläche in Linux:
https://www.makeuseof.com/tag/linux-...ows-subsystem/.
Ich weiss leider nicht wie das Subsystem genau den GPU Support handhabt. Anscheinend geht es aber.
EDIT: Wenn du es zum laufen bekommst: kannst du alle Konsolenbefehle, welche du ausgeführt hast mal auf die seite legen?
Damit kann nämlich dann auch jeder andere mit ner NV Karte das Subsystem für WaveRNN Einrichten unter win 10
-
Zitat von Multithread
EDIT: Wenn du es zum laufen bekommst
Ich sage mal gescheitert. Es gibt andere Fehler als unter Anaconda, aber was ich dagegen machen kann weiß ich nicht.
"ValueError: need at least one array to stack"
Im nächsten Jahr habe ich Zeit, da werde ich dann ein echtes Linux auf meinem alten PC aufsetzen.
-
Provinzheld
Geschlecht: Gothic
Zitat von sanjaesc
Ich habe die Zuweisung mit Hilfe eines Python Skriptes gemacht. Kannst du gerne hier herunterladen. Mit search_waves.py suche ich nach der angegebenen ID bzw. den Namen des NPCs. Mit search_dialogs,py generiere ich dann die metadata.csv für die vorher gefundenen .wav Dateien. Abschließend schaue ich, zu welchen .wav Dateien keine metadaten gefunden wurden und lösche diese.
Danke an MadFaTal für das Generieren der Gothic 3 Metadaten.
Hier sind die von mir zuletzt trainierten Modelle. (Held und Diego)
Dort befinden sich auch Beispiele zu der von dir geposteten Mod und die beim Generieren verwendete sentences.txt und hparameter.
Allgemein ist mir aufgefallen, dass die Audioqualität deutlich natürlicher klingt, wenn das Gesprochene im Sprachmuster des Sprechers (NPCs) liegt.
Irgendwie wird bei mir beim Ausführen der search_dialogs.py keine neue metadata.csv erstellt. search_waves.py funktioniert so, wie es soll. Aber sowohl unter Windows 10 als auch Ubuntu funktioniert die search_dialogs.py nicht. Ich habe sogar die Pfade so erstellt, wie du sie vorgegeben hast. Auch habe ich .wav zu .WAV geändert, da die von mir extrahierten Audiodateien alle groß geschrieben waren und es sonst nicht funktioniert hat. Außerdem habe ich auch versucht, die metadata.csv selbst zu erstellen, indem ich mit regulären Ausdrücken alle Zeilen von Sprechern entfernt habe, die nicht die von mir bestimmte Stimme hatte. Das hat mir aber beim Ausführen der train_tacotron.py lauter Fehler ausgegeben, die ich dann auch nicht wirklich verstanden habe, obwohl in der Datei eigentlich alles richtig war. Habe sogar nachgeprüft, ob alle .WAV Dateien, die in der metadata.wav standen wirklich existiert haben. Habe da selbst auch schon tagelang rumprobiert, bin aber nicht auf eine wirkliche Lösung gekommen. Was könnte ich falsch gemacht haben? Habe ich irgendwas Wichtiges vergessen? Das bringt mich echt zum Verzweifeln.
EDIT: Ich kriege dann Fehler wie diese hier:
Code:
Traceback (most recent call last):
File "train_tacotron.py", line 202, in <module>
main()
File "train_tacotron.py", line 98, in main
tts_train_loop(paths, model, optimizer, train_set, lr, training_steps, attn_example)
File "train_tacotron.py", line 126, in tts_train_loop
for i, (x, m, ids, _) in enumerate(train_set, 1):
File "/home/david/anaconda3/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 819, in __next__
return self._process_data(data)
File "/home/david/anaconda3/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 846, in _process_data
data.reraise()
File "/home/david/anaconda3/lib/python3.7/site-packages/torch/_utils.py", line 385, in reraise
raise self.exc_type(msg)
KeyError: Caught KeyError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/home/david/anaconda3/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 178, in _worker_loop
data = fetcher.fetch(index)
File "/home/david/anaconda3/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/home/david/anaconda3/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/home/david/Dokumente/WaveRNN/utils/dataset.py", line 149, in __getitem__
x = text_to_sequence(self.text_dict[item_id], hp.tts_cleaner_names)
KeyError: 'INFO_RIORDIAN_REWARD_14_03'
Geändert von Herobrine (12.12.2019 um 17:52 Uhr)
-
Traditionell mache ich zum Jahresende eine Testlauf des aktuellen CSP Projektes und erzeuge mir eine text-to-speech Sprachausgabe.
Dank deines trainierten Helden Models bin ich dabei für den Helden 9824 Dialoge zu vertonen. Mit ca. 90 Dialogen pro Stunde muss mein PC jetzt ca. 4-5 Tage durcharbeiten.
Weißt du, ob sich das mit bestimmten Parametern beschleunigen lässt?
Mir ist aufgefallen, das bei der Generierung manchmal ein zweiter Satz nicht vertont wird. Meistens, wenn beide Sätze eine recht lange Textzeile ergeben. Hast du Erfahrungen dazu gemacht? Lässt sich das durch Ändern von Konfigurationswerten ändern?
2: Ich muss mich zuerst um die Probleme in Vengard kuemmern. Danach sehen wir weiter.
12: Ich hau dir jetzt im Namen von Agenak ein paar aufs Maul. Er beschwert sich, dass du ihm immer deinen Muell vor die Arena wirfst.
53: Du sagst, ich soll die Geburtsorte der alten Paladine aufsuchen. Meinst du nicht, dass das in diesem Fall etwas kompliziert wird?
Es scheint kein generelles Problem mit zwei Sätzen zu geben, da in 2: beide Sätze gesprochen werden. Bei 12: und 53: fehlt allerdings der zweite Satz.
Hero_Speech_2_12_53.zip
PS:
Ansonsten habe ich festgestellt, das die erzeugte Sprachausgabe deutlich besser ist, wenn die Deutschen Umlaute ersetzt werden:
- Ä -> Ae
- ä -> ae
- Ö -> Oe
- ö -> oe
- Ü -> Ue
- ü -> üe
- ß -> ss
-
Wow, das ist wirklich fantastisch! Hätte nie gedacht, dass sowas schon möglich ist. Damit hat die Zeit der grottenschlecht oder gar nicht vertonten Mods vielleicht bald ein Ende.
Vielen Dank für die Mühe!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|