A tokenizer, text cleaner, and IPA phonemizer for several human languages.
It is possible to try this software live at hashtron.cloud.
go install github.com/neurlang/goruut/cmd/goruut@latest
Clone the repo and then run in root directory this command:
sudo docker compose up -d --force-recreate --build
- Afrikaans
- Amharic
- Arabic
- Azerbaijani
- Belarusian
- Bengali
- Bengali Dhaka
- Bengali Rahr
- Burmese
- Cebuano
- Chechen
- Chinese Mandarin
- Czech
- Danish
- Dutch
- Dzongkha
- English
- Esperanto
- Farsi
- Finnish
- French
- German
- Greek
- Gujarati
- Hausa
- Hebrew
- Hindi
- Hungarian
- Icelandic
- Indonesian
- Isan
- Italian
- Jamaican
- Japanese
- Javanese
- Kazakh
- Korean
- Luxembourgish
- Macedonian
- Malayalam
- Malay Arab
- Malay Latin
- Maltese
- Marathi
- Mongolian
- Nepali
- Norwegian
- Pashto
- Polish
- Portuguese
- Punjabi
- Romanian
- Russian
- Slovak
- Spanish
- Swahili
- Swedish
- Tamil
- Telugu
- Thai
- Tibetan
- Turkish
- Ukrainian
- Urdu
- Uyghur
- Vietnamese Central
- Vietnamese Northern
- Vietnamese Southern
- Zulu
The goal is to support all of voice2json's languages. Please Add a language if you have the necessary data.
There are currently 3 target languages (IPA flavors). They are:
- IPA - Copy the output into ipa-reader.xyz and pick a correct language voice
- Espeak - Copy the output into espeak. For example czech:
espeak -v cs "[[ru:Zovi: ku:n^]]"
- Antvaset - Copy the output into antvaset.com and pick a correct language voice
See go.mod file for an up-to-date list of depended-on projects. Minimum supported version of golang is go 1.18 (project uses type parameters).
Unsupported. Please write them using words.
To start, launch the server using the example config (in configs dir):
./goruut -configfile configs/config.json
This will launch the server at a specific http port. You should see the port which you specified in the config file:
INFO[0000] Binding port: 18080
Then you can run queries:
POST http://127.0.0.1:18080/tts/phonemize/sentence
{
"Language": "Czech",
"Sentence": "jsem supr"
}
Output should be:
{
"Words": [
{
"Linguistic": "jsem",
"Phonetic": "jsɛm"
},
{
"Linguistic": "supr",
"Phonetic": "supr"
}
]
}
goruut is useful for transforming raw text into phonetic pronunciations, similar to phonemizer. Unlike phonemizer, goruut looks up words in a pre-built lexicon (pronunciation dictionary) or guesses word pronunciations with a pre-trained grapheme-to-phoneme model.