Add VOICES.md

pull/454/head
Michael Hansen 2 months ago
parent 01e4f939f9
commit 580f411329

@ -18,7 +18,7 @@ Voices are trained with [VITS](https://github.com/jaywalnut310/vits/) and export
Our goal is to support Home Assistant and the [Year of Voice](https://www.home-assistant.io/blog/2022/12/20/year-of-voice/).
[Download voices](https://huggingface.co/rhasspy/piper-voices/tree/v1.0.0) for the supported languages:
[Download voices](VOICES.md) for the supported languages:
* Arabic (ar_JO)
* Catalan (ca_ES)

@ -0,0 +1,258 @@
# Voices
* العربية (`ar_JO`, Arabic)
* kareem
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ar/ar_JO/kareem/low/ar_JO-kareem-low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ar/ar_JO/kareem/medium/ar_JO-kareem-medium.onnx?download=true)
* Català (`ca_ES`, Catalan)
* upc_ona
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ca/ca_ES/upc_ona/x_low/ca_ES-upc_ona-x_low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ca/ca_ES/upc_ona/medium/ca_ES-upc_ona-medium.onnx?download=true)
* upc_pau
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ca/ca_ES/upc_pau/x_low/ca_ES-upc_pau-x_low.onnx?download=true)
* Čeština (`cs_CZ`, Czech)
* jirka
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cs/cs_CZ/jirka/low/cs_CZ-jirka-low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cs/cs_CZ/jirka/medium/cs_CZ-jirka-medium.onnx?download=true)
* Dansk (`da_DK`, Danish)
* talesyntese
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/da/da_DK/talesyntese/medium/da_DK-talesyntese-medium.onnx?download=true)
* Deutsch (`de_DE`, German)
* eva_k
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/eva_k/x_low/de_DE-eva_k-x_low.onnx?download=true)
* karlsson
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/karlsson/low/de_DE-karlsson-low.onnx?download=true)
* kerstin
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/kerstin/low/de_DE-kerstin-low.onnx?download=true)
* mls
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/mls/medium/de_DE-mls-medium.onnx?download=true)
* pavoque
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/pavoque/low/de_DE-pavoque-low.onnx?download=true)
* ramona
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/ramona/low/de_DE-ramona-low.onnx?download=true)
* thorsten
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/low/de_DE-thorsten-low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/medium/de_DE-thorsten-medium.onnx?download=true)
* [high](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/high/de_DE-thorsten-high.onnx?download=true)
* thorsten_emotional
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten_emotional/medium/de_DE-thorsten_emotional-medium.onnx?download=true)
* Ελληνικά (`el_GR`, Greek)
* rapunzelina
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/el/el_GR/rapunzelina/low/el_GR-rapunzelina-low.onnx?download=true)
* English (en_GB)
* alan
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/alan/low/en_GB-alan-low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/alan/medium/en_GB-alan-medium.onnx?download=true)
* alba
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/alba/medium/en_GB-alba-medium.onnx?download=true)
* aru
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/aru/medium/en_GB-aru-medium.onnx?download=true)
* cori
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/cori/medium/en_GB-cori-medium.onnx?download=true)
* [high](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/cori/high/en_GB-cori-high.onnx?download=true)
* jenny_dioco
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/jenny_dioco/medium/en_GB-jenny_dioco-medium.onnx?download=true)
* northern_english_male
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/northern_english_male/medium/en_GB-northern_english_male-medium.onnx?download=true)
* semaine
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/semaine/medium/en_GB-semaine-medium.onnx?download=true)
* southern_english_female
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/southern_english_female/low/en_GB-southern_english_female-low.onnx?download=true)
* vctk
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/vctk/medium/en_GB-vctk-medium.onnx?download=true)
* English (en_US)
* amy
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/amy/low/en_US-amy-low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/amy/medium/en_US-amy-medium.onnx?download=true)
* arctic
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/arctic/medium/en_US-arctic-medium.onnx?download=true)
* danny
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/danny/low/en_US-danny-low.onnx?download=true)
* hfc_female
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/hfc_female/medium/en_US-hfc_female-medium.onnx?download=true)
* hfc_male
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/hfc_male/medium/en_US-hfc_male-medium.onnx?download=true)
* joe
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/joe/medium/en_US-joe-medium.onnx?download=true)
* kathleen
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/kathleen/low/en_US-kathleen-low.onnx?download=true)
* kristin
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/kristin/medium/en_US-kristin-medium.onnx?download=true)
* kusal
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/kusal/medium/en_US-kusal-medium.onnx?download=true)
* l2arctic
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/l2arctic/medium/en_US-l2arctic-medium.onnx?download=true)
* lessac
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/low/en_US-lessac-low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx?download=true)
* [high](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/high/en_US-lessac-high.onnx?download=true)
* libritts
* [high](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts/high/en_US-libritts-high.onnx?download=true)
* libritts_r
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts_r/medium/en_US-libritts_r-medium.onnx?download=true)
* ljspeech
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ljspeech/medium/en_US-ljspeech-medium.onnx?download=true)
* [high](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ljspeech/high/en_US-ljspeech-high.onnx?download=true)
* ryan
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/low/en_US-ryan-low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/medium/en_US-ryan-medium.onnx?download=true)
* [high](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/high/en_US-ryan-high.onnx?download=true)
* Español (`es_ES`, Spanish)
* carlfm
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/carlfm/x_low/es_ES-carlfm-x_low.onnx?download=true)
* davefx
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/davefx/medium/es_ES-davefx-medium.onnx?download=true)
* mls_10246
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/mls_10246/low/es_ES-mls_10246-low.onnx?download=true)
* mls_9972
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/mls_9972/low/es_ES-mls_9972-low.onnx?download=true)
* sharvard
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/sharvard/medium/es_ES-sharvard-medium.onnx?download=true)
* Español (`es_MX`, Spanish)
* ald
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_MX/ald/medium/es_MX-ald-medium.onnx?download=true)
* claude
* [high](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_MX/claude/high/es_MX-claude-high.onnx?download=true)
* فارسی (`fa_IR`, Farsi)
* amir
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/amir/medium/fa_IR-amir-medium.onnx?download=true)
* gyro
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/gyro/medium/fa_IR-gyro-medium.onnx?download=true)
* Suomi (`fi_FI`, Finnish)
* harri
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fi/fi_FI/harri/low/fi_FI-harri-low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fi/fi_FI/harri/medium/fi_FI-harri-medium.onnx?download=true)
* Français (`fr_FR`, French)
* gilles
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/gilles/low/fr_FR-gilles-low.onnx?download=true)
* mls
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/mls/medium/fr_FR-mls-medium.onnx?download=true)
* mls_1840
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/mls_1840/low/fr_FR-mls_1840-low.onnx?download=true)
* siwis
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/siwis/low/fr_FR-siwis-low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/siwis/medium/fr_FR-siwis-medium.onnx?download=true)
* tom
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/tom/medium/fr_FR-tom-medium.onnx?download=true)
* upmc
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx?download=true)
* Magyar (`hu_HU`, Hungarian)
* anna
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/hu/hu_HU/anna/medium/hu_HU-anna-medium.onnx?download=true)
* berta
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/hu/hu_HU/berta/medium/hu_HU-berta-medium.onnx?download=true)
* imre
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/hu/hu_HU/imre/medium/hu_HU-imre-medium.onnx?download=true)
* íslenska (`is_IS`, Icelandic)
* bui
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/bui/medium/is_IS-bui-medium.onnx?download=true)
* salka
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/salka/medium/is_IS-salka-medium.onnx?download=true)
* steinn
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/steinn/medium/is_IS-steinn-medium.onnx?download=true)
* ugla
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/ugla/medium/is_IS-ugla-medium.onnx?download=true)
* Italiano (`it_IT`, Italian)
* riccardo
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/it/it_IT/riccardo/x_low/it_IT-riccardo-x_low.onnx?download=true)
* ქართული ენა (`ka_GE`, Georgian)
* natia
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ka/ka_GE/natia/medium/ka_GE-natia-medium.onnx?download=true)
* қазақша (`kk_KZ`, Kazakh)
* iseke
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/kk/kk_KZ/iseke/x_low/kk_KZ-iseke-x_low.onnx?download=true)
* issai
* [high](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/kk/kk_KZ/issai/high/kk_KZ-issai-high.onnx?download=true)
* raya
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/kk/kk_KZ/raya/x_low/kk_KZ-raya-x_low.onnx?download=true)
* Lëtzebuergesch (`lb_LU`, Luxembourgish)
* marylux
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/lb/lb_LU/marylux/medium/lb_LU-marylux-medium.onnx?download=true)
* नेपाली (`ne_NP`, Nepali)
* google
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ne/ne_NP/google/x_low/ne_NP-google-x_low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ne/ne_NP/google/medium/ne_NP-google-medium.onnx?download=true)
* Nederlands (`nl_BE`, Dutch)
* nathalie
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/nathalie/x_low/nl_BE-nathalie-x_low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/nathalie/medium/nl_BE-nathalie-medium.onnx?download=true)
* rdh
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/rdh/x_low/nl_BE-rdh-x_low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/rdh/medium/nl_BE-rdh-medium.onnx?download=true)
* Nederlands (`nl_NL`, Dutch)
* mls
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/mls/medium/nl_NL-mls-medium.onnx?download=true)
* mls_5809
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/mls_5809/low/nl_NL-mls_5809-low.onnx?download=true)
* mls_7432
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/mls_7432/low/nl_NL-mls_7432-low.onnx?download=true)
* Norsk (`no_NO`, Norwegian)
* talesyntese
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/no/no_NO/talesyntese/medium/no_NO-talesyntese-medium.onnx?download=true)
* Polski (`pl_PL`, Polish)
* darkman
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/darkman/medium/pl_PL-darkman-medium.onnx?download=true)
* gosia
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/gosia/medium/pl_PL-gosia-medium.onnx?download=true)
* mc_speech
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/mc_speech/medium/pl_PL-mc_speech-medium.onnx?download=true)
* mls_6892
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/mls_6892/low/pl_PL-mls_6892-low.onnx?download=true)
* Português (`pt_BR`, Portuguese)
* edresson
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/edresson/low/pt_BR-edresson-low.onnx?download=true)
* faber
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/faber/medium/pt_BR-faber-medium.onnx?download=true)
* Português (`pt_PT`, Portuguese)
* tugão
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_PT/tugão/medium/pt_PT-tugão-medium.onnx?download=true)
* Română (`ro_RO`, Romanian)
* mihai
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ro/ro_RO/mihai/medium/ro_RO-mihai-medium.onnx?download=true)
* Русский (`ru_RU`, Russian)
* denis
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/denis/medium/ru_RU-denis-medium.onnx?download=true)
* dmitri
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/dmitri/medium/ru_RU-dmitri-medium.onnx?download=true)
* irina
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/irina/medium/ru_RU-irina-medium.onnx?download=true)
* ruslan
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/ruslan/medium/ru_RU-ruslan-medium.onnx?download=true)
* Slovenčina (`sk_SK`, Slovak)
* lili
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sk/sk_SK/lili/medium/sk_SK-lili-medium.onnx?download=true)
* Slovenščina (`sl_SI`, Slovenian)
* artur
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sl/sl_SI/artur/medium/sl_SI-artur-medium.onnx?download=true)
* srpski (`sr_RS`, Serbian)
* serbski_institut
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sr/sr_RS/serbski_institut/medium/sr_RS-serbski_institut-medium.onnx?download=true)
* Svenska (`sv_SE`, Swedish)
* nst
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sv/sv_SE/nst/medium/sv_SE-nst-medium.onnx?download=true)
* Kiswahili (`sw_CD`, Swahili)
* lanfrica
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sw/sw_CD/lanfrica/medium/sw_CD-lanfrica-medium.onnx?download=true)
* Türkçe (`tr_TR`, Turkish)
* dfki
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/tr/tr_TR/dfki/medium/tr_TR-dfki-medium.onnx?download=true)
* fahrettin
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/tr/tr_TR/fahrettin/medium/tr_TR-fahrettin-medium.onnx?download=true)
* fettah
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/tr/tr_TR/fettah/medium/tr_TR-fettah-medium.onnx?download=true)
* украї́нська мо́ва (`uk_UA`, Ukrainian)
* lada
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/uk/uk_UA/lada/x_low/uk_UA-lada-x_low.onnx?download=true)
* ukrainian_tts
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/uk/uk_UA/ukrainian_tts/medium/uk_UA-ukrainian_tts-medium.onnx?download=true)
* Tiếng Việt (`vi_VN`, Vietnamese)
* 25hours_single
* [low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/vi/vi_VN/25hours_single/low/vi_VN-25hours_single-low.onnx?download=true)
* vais1000
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/vi/vi_VN/vais1000/medium/vi_VN-vais1000-medium.onnx?download=true)
* vivos
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/vi/vi_VN/vivos/x_low/vi_VN-vivos-x_low.onnx?download=true)
* 简体中文 (`zh_CN`, Chinese)
* huayan
* [x_low](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/zh/zh_CN/huayan/x_low/zh_CN-huayan-x_low.onnx?download=true)
* [medium](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/zh/zh_CN/huayan/medium/zh_CN-huayan-medium.onnx?download=true)

@ -0,0 +1,136 @@
#!/usr/bin/env python3
import argparse
import logging
from collections import defaultdict
from dataclasses import dataclass
from pathlib import Path
@dataclass
class Voice:
lang_family: str
lang_code: str
dataset: str
quality: str
url: str
@dataclass
class Language:
native: str
english: str
country: str
_LANGUAGES = {
"ar_JO": Language("العربية", "Arabic", "Jordan"),
"ca_ES": Language("Català", "Catalan", "Spain"),
"cs_CZ": Language("Čeština", "Czech", "Czech Republic"),
"da_DK": Language("Dansk", "Danish", "Denmark"),
"de_DE": Language("Deutsch", "German", "Germany"),
"el_GR": Language("Ελληνικά", "Greek", "Greece"),
"en_GB": Language("English", "English", "Great Britain"),
"en_US": Language("English", "English", "United States"),
"es_ES": Language("Español", "Spanish", "Spain"),
"es_MX": Language("Español", "Spanish", "Mexico"),
"fa_IR": Language("فارسی", "Farsi", "Iran"),
"fi_FI": Language("Suomi", "Finnish", "Finland"),
"fr_FR": Language("Français", "French", "France"),
"is_IS": Language("íslenska", "Icelandic", "Iceland"),
"it_IT": Language("Italiano", "Italian", "Italy"),
"hu_HU": Language("Magyar", "Hungarian", "Hungary"),
"ka_GE": Language("ქართული ენა", "Georgian", "Georgia"),
"kk_KZ": Language("қазақша", "Kazakh", "Kazakhstan"),
"lb_LU": Language("Lëtzebuergesch", "Luxembourgish", "Luxembourg"),
"ne_NP": Language("नेपाली", "Nepali", "Nepal"),
"nl_BE": Language("Nederlands", "Dutch", "Belgium"),
"nl_NL": Language("Nederlands", "Dutch", "Netherlands"),
"no_NO": Language("Norsk", "Norwegian", "Norway"),
"pl_PL": Language("Polski", "Polish", "Poland"),
"pt_BR": Language("Português", "Portuguese", "Brazil"),
"pt_PT": Language("Português", "Portuguese", "Portugal"),
"ro_RO": Language("Română", "Romanian", "Romania"),
"ru_RU": Language("Русский", "Russian", "Russia"),
"sk_SK": Language("Slovenčina", "Slovak", "Slovakia"),
"sl_SI": Language("Slovenščina", "Slovenian", "Slovenia"),
"sr_RS": Language("srpski", "Serbian", "Serbia"),
"sv_SE": Language("Svenska", "Swedish", "Sweden"),
"sw_CD": Language("Kiswahili", "Swahili", "Democratic Republic of the Congo"),
"tr_TR": Language("Türkçe", "Turkish", "Turkey"),
"uk_UA": Language("украї́нська мо́ва", "Ukrainian", "Ukraine"),
"vi_VN": Language("Tiếng Việt", "Vietnamese", "Vietnam"),
"zh_CN": Language("简体中文", "Chinese", "China"),
}
_QUALITY = {"x_low": 0, "low": 1, "medium": 2, "high": 3}
_LOGGER = logging.getLogger()
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument(
"--piper-voices", required=True, help="Path to piper-voices root"
)
parser.add_argument(
"--url-format",
default="https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/{lang_family}/{lang_code}/{dataset}/{quality}/{lang_code}-{dataset}-{quality}.onnx?download=true",
help="URL format string with lang_family, lang_code, dataset, and quality",
)
args = parser.parse_args()
logging.basicConfig(level=logging.DEBUG)
voices_by_lang_code = defaultdict(list)
piper_voices = Path(args.piper_voices)
for onnx_path in piper_voices.rglob("*.onnx"):
_LOGGER.debug(onnx_path)
parts = onnx_path.stem.split("-")
if len(parts) != 3:
_LOGGER.warning("Skipping %s", onnx_path)
continue
lang_code, dataset, quality = parts
assert lang_code in _LANGUAGES, f"Missing {lang_code}"
lang_family = lang_code.split("_")[0]
url = args.url_format.format(
lang_family=lang_family,
lang_code=lang_code,
dataset=dataset,
quality=quality,
)
voices_by_lang_code[lang_code].append(
Voice(
lang_family=lang_family,
lang_code=lang_code,
dataset=dataset,
quality=quality,
url=url,
)
)
print("# Voices")
print("")
for lang_code in sorted(voices_by_lang_code):
lang_info = _LANGUAGES[lang_code]
if lang_code.startswith("en_"):
print("*", lang_info.native, f"({lang_code})")
else:
print("*", lang_info.native, f"(`{lang_code}`, {lang_info.english})")
last_dataset = None
for voice in sorted(
voices_by_lang_code[lang_code],
key=lambda v: (v.dataset, _QUALITY[v.quality]),
):
if voice.dataset != last_dataset:
print(" *", voice.dataset)
last_dataset = voice.dataset
print(" *", f"[{voice.quality}]({voice.url})")
if __name__ == "__main__":
main()
Loading…
Cancel
Save