Summerts wird zum Gedenken an die kommenden und vergangenen Sommer von 2023 verwendet
veranschaulichen
- Summerts ist ein unabhängig kompiliertes Sprachsyntheseprogramm (TTS). Es kann lokal ausgeführt werden, ohne dass ein Netzwerk erforderlich ist, und es gibt keine zusätzliche Abhängigkeit. Eine Ein-Klick-Zusammenstellung kann für die chinesische und englische Sprachsynthese verwendet werden.
- Die zugrunde liegende Computerbibliothek von Summertts verwendet Eigen, bei denen es sich um eine Reihe von vorlagendefinierten Funktionen handelt. In den meisten Fällen muss nur Header -Dateien enthalten sein, sodass dieses Projekt keine anderen Abhängigkeiten enthält und in der C ++ - Umgebung unabhängig ausgeführt werden kann.
- Dieses Projekt verwendet die von Eigen bereitgestellte Matrixbibliothek, um den Betreiber neuronaler Netzwerke zu implementieren, und muss sich nicht auf andere NN -Betriebsumgebungen wie Pytorch, Tensorflow, NCNN usw. verlassen.
- Dieses Projekt wird auf Ubuntu zusammengestellt und ausgeführt. Andere Linux-ähnliche Plattformen wie Android, Raspberry Pi usw. sollten keine größeren Probleme haben. Sie wurden nicht unter Windows getestet und müssen möglicherweise ein wenig geändert werden.
- Das Modell dieses Projekts basiert auf dem Sprachsynthesealgorithmus Vits und wird auf C ++ - Engineering durchgeführt
- Dieses Projekt gilt für die MIT -Lizenz. Die Entwicklung, der Benutzer oder die Organisation basierend auf diesem Projekt folgen Sie die MIT-Lizenz: https://mit-license.org
Aktualisieren Sie das Protokoll
- 2024-12-14: Lizenzinformationen zur MIT-Lizenz hinzufügen: https://mit-license.org
- 2023-06-16: Aktualisiert, um ein schnelleres Modell der englischen Sprachsynthese hinzuzufügen: Single_speaker_english_fast.bin oder auf der folgenden Netzwerkscheibe ist die Geschwindigkeit schneller und die synthetisierte Klangqualität wird nicht wesentlich reduziert:
Link: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq?pwd=2D5H Extraktionscode: 2D5H - 2023-06-15: Unterstützen Sie die Synthese der reinen englischen Aussprache, und Sie müssen den neuesten Code synchronisieren. Verwenden Sie die Modelldatei in der folgenden Netzwerkdiskette: Single_speaker_english.bin und synthetisieren die englische Aussprache auf folgende Weise:
./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav
Der Pfad der Netzwerkscheibe ist wie folgt. Die vorherige chinesische Aussprachesynthese und -verwendung sind nicht betroffen. Es ist zu beachten, dass dieses Update nur die synthese der reinen englischen Aussprache unterstützt und das chinesische gemischte Englisch es vorerst nicht unterstützt.
Link: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq?pwd=2D5H Extraktionscode: 2D5H - 2023-06-09: Es wurde ein mittelgroßes einsprachiges Modell hinzugefügt: Single_speaker_mid.bin, das etwas langsamer ist als das Vorgängermodell, aber die synthetisierte Klangqualität scheint besser zu sein (ich bin nicht empfindlich gegenüber meinen Ohren und ich bin besser, vielleicht ist es eine psychologische Wirkung: P). Der Code muss nicht aktualisiert werden, ich muss nur Single_speaker_mid.bin in der vorherigen Netzwerkdiskette herunterladen und verwenden.
- 2023-06-08: Test/main.cpp ändern, um die Synthese von Newlines und ganzem Text zu unterstützen
- 2023-06-03: Fix hat einen Fehler in der gestrigen Version. Vielen Dank an begeisterte Netizen Telen für die Bereitstellung von Tests und Hinweisen. Es sind nur Code -Updates erforderlich, und das Modell muss nicht aktualisiert werden.
- 2023-06-02: Die Genauigkeit der polyphonischen Aussprachesynthese wurde stark verbessert. In Baidu NetDisk wird ein neues Modell benötigt, um die verbesserte polyphonische Aussprache und Textregularisierung (Textnormalisierung) zu verwenden. Der aktualisierte Code heute kann das Vorgängermodell nicht verwenden, andernfalls kann er zum Absturz führen
- 2023-05-30: Integrierte Wettext-Verarbeitung als Front-End-Text-Regularisierungsmodul und die korrekte Aussprachesynthese von Zahlen, Währungen, Temperaturen, Daten usw. erheblich verbessern
- 2023-5-23: Die Verwendung neuer Algorithmen hat die Sprachsynthesegeschwindigkeit einzelner Lautsprecher erheblich verbessert.
- 2023-4-21: Erste Schöpfung
Anweisungen zur Verwendung
Klonen Sie den Code dieses Projekts lokal, vorzugsweise eine Ubuntu Linux -Umgebung
Laden Sie das Modell von der folgenden Baidu-Netzwerk-Datenträgeradresse herunter und setzen
Nachdem die Modelldatei platziert wurde, lautet die Modellverzeichnisstruktur wie folgt:
Modelle/
├── Multi_speakers.bin
├── Single_speaker_mid.bin
├── Single_speaker_english.bin
├── Single_speaker_english_fast.bin
└── Single_speaker_fast.bin
Geben Sie das Build -Verzeichnis ein und führen Sie den folgenden Befehl aus:
cmake ..
Machen
Nach Abschluss der Zusammenstellung wird der TTS_TEST -Ausführende im Build -Verzeichnis generiert.
Führen Sie den folgenden Befehl aus, um die chinesische Sprachsynthese (TTS) zu testen:
./tts_test ../test.txt ../models/single_speaker_fast.bin out.wav
Führen Sie den folgenden Befehl aus, um die englische Sprachsynthese (TTS) zu testen:
./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav
In dieser Befehlszeile:
Der erste Parameter ist der Pfad zur Textdatei, der den Text enthält, der für die Sprache synthetisiert werden muss.
Der zweite Parameter ist der Pfad zum oben genannten Modell. Single und Multi am Anfang des Dateinamens geben an, ob das Modell einen einzelnen Sprecher oder mehrere Sprecher enthält. Empfohlenes Einzellautsprechermodell: Single_speaker_fast.bin, die Synthesegeschwindigkeit ist schneller und die Klangqualität der Synthese ist auch in Ordnung. Der dritte Parameter ist die synthetisierte Audiodatei. Nachdem das Programm ausgeführt wurde, kann es mit einem Spieler geöffnet werden.
Das obige Testprogramm ist in Test/Main.cpp implementiert, und die spezifische synthetisierte Schnittstelle ist wie folgt in Include/Synthesizertrn.H definiert:
int16_t * infer (const String & Zeile, int32_t sid, float lencale, int32_t & datalen)
Die Schnittstelle:
Der erste Parameter ist die Zeichenfolge der Sprache, die synthetisiert werden soll.
Der zweite Parameter gibt an, dass die ID des Sprechers zur Synthese der Sprache verwendet wird. Dieser Parameter gilt für das Modell mit mehreren Lautsprechern und für das Einsender-Modell auf 0 fest. Die Anzahl der Redner kann per Schnittstelle int32_t getSpeakernum () zurückgegeben werden, und die gültige ID beträgt 0 und die Anzahl der an die Schnittstelle zurückgegebenen Lautsprecher wird um 1 reduziert.
Die dritte Parameterlänge stellt die Sprachgeschwindigkeit der synthetischen Sprache dar, und je größer sein Wert zeigt, dass die Sprachgeschwindigkeit langsamer ist.
Der zu synthetisierte Text kann arabische Ziffern und Punktionen enthalten, aber da das TN -Modul (TN) dieses Projekts noch sehr rau ist, wird er für englische Zeichen ignoriert. Auch weil das TN -Modul (Text Regularization) immer noch sehr rau ist, ist die Aussprache polyphonischer Zeichen in verschiedenen Kontexten manchmal ungenau.
Follow-up-Entwicklung
- Modelltraining und Konvertierungsskripte werden später geöffnet
- In Zukunft werden wir versuchen, zu trainieren und Modelle mit einer besseren Klangqualität zu versorgen
Wenden Sie sich an den Autor
- Wenn Sie weitere Fragen haben oder diese benötigen, können Sie eine E -Mail an [email protected] senden oder WeChat: hwang_2011 hinzufügen. Ich werde mein Bestes geben, um zu antworten.
Lizenz
- Dieses Projekt gilt für die MIT -Lizenz. Die Entwicklung, der Benutzer oder die Organisation basierend auf diesem Projekt folgen Sie die MIT-Lizenz: https://mit-license.org
dankbar
Dieses Projekt verwendet das folgende Schema in Bezug auf Quellcode und Algorithmen. Danke hier. Wenn rechtliche Probleme auftreten können, kontaktieren Sie mich rechtzeitig, um sie zu koordinieren und zu lösen.
- Eigen
- vits (https://github.com/jaywalnut310/vits)
- vits_chinese (https://github.com/uehqzxi/vits_chinese)
- Mb-istft-vits (https://github.com/masayakawamura/mb-istft-vits)
- WetextProcessing (https://github.com/wenet-e2e/wetextprocessing)
- Glog (https://github.com/google/glog)
- gflags (https://github.com/gflags/gflags)
- OpenFST (https://github.com/kkm000/openfst)
- Chinesische Charaktere für Pinyin (https://github.com/yangyangwithgnu/HAND2PINY)
- cppjieba (https://github.com/yanyiwu/cppjieba)
- g2p_en (https://github.com/kyubyong/g2p)
- Englisch-to-ipa (https://github.com/mphilli/english-to-ipa)
- Das chinesische Single-Lautsprecher-Modell dieses Projekts basiert auf dem Open-Source-Biaobei-Datensatztraining, dem Multi-Sprecher-Modell basiert auf dem Open-Source-Datensatz Aishell3-Training und das englische Single-Lautsprecher-Modell basiert auf dem LJ-Sprachdatensatz.