Loading voices...
OddVoices is a project to create free and open source singing synthesizers for American English. This app contains a WebAssembly version of OddVoices, so everything happens in your browser and nothing is sent to a server. Please note that this is experimental alpha software and has many bugs.
See oddvoices/oddvoices on GitLab for the core DSP code and command-line version of OddVoices, and oddvoices/oddvoices-web for the source code of it's Web application version for MIDI + lyrics input.
OddVoices uses the CMU Pronouncing Dictionary to pronounce most words. OddVoices does not identify parts of speech, so heteronyms like "lead" and "read" are not handled intelligently. For OOV (out-of-vocabulary) words, OddVoices will guess the pronunciation by converting individual letters and pairs of letters to phonemes.
To supply custom pronunciations to override the defaults, X-SAMPA notation is supported. Surround the X-SAMPA pronunciation with forward slashes (like this: /hEloU/ ) and make sure no additional punctuation immediately precedes or follows the slashes. The table of phonemes is:
| X-SAMPA | IPA | Pronunciation |
|---|---|---|
| /{}/, /{/, /&/ | /æ/ | hat |
| /A/, /O/ | /ɑ/, /ɔ/ | caught, cot |
| /I/ | /ɪ/ | bit |
| /E/ | /ɛ/ | let |
| /@/, /V/ | /ə/, /ʌ/ | cub |
| /U/ | /ʊ/ | look |
| /@`/, /3`/ | /ɚ/, /ɝ/ | bird |
| /i/ | /i/ | seed |
| /N/ | /ŋ/ | hang |
| /tS/ | /tʃ/ | child |
| /dZ/ | /dʒ/ | jet |
| /T/ | /θ/ | thing |
| /D/ | /ð/ | wither |
| /S/ | /ʃ/ | shock |
| /Z/ | /ʒ/ | measure |
| /oU/ | /oʊ/ | doe |
| /eI/ | /eɪ/ | hay |
| /aI/ | /aɪ/ | lie |
| /OI/ | /ɔɪ/ | oil |
| /aU/ | /aʊ/ | owl |
| /l/ | /l/ | long |
| /r/ | /r/ | red |
| /w/ | /w/ | wonder |
| /j/ | /j/ | yard |
| /m/ | /m/ | mat |
| /n/ | /n/ | no |
| /h/ | /h/ | hay |
| /k/ | /k/ | cut |
| /g/ | /g/ | god |
| /p/ | /p/ | pile |
| /b/ | /b/ | bay |
| /t/ | /t/ | toad |
| /d/ | /d/ | dine |
| /f/ | /f/ | fast |
| /v/ | /v/ | vase |
| /s/ | /s/ | sad |
| /z/ | /z/ | zany |
| /u/ | /u/ | new |
There are some peculiarities worth noting here. First is the cot-caught merger that equates /ɑ/ and /ɔ/ along with other low back vowels. This admittedly reflects a bias towards the American West Coast and towards a younger demographic of singers. The exception to this merger is that /ɔr/ (horde) and /ɑr/ (hard) are distinct. If you enter /O/ or /A/ they will sound the same in OddVoices, but /Or/ and /Ar/ are different.
Second is the unification of /ə/ and /ʌ/. When sung, the English schwa is difficult to pin down and really represents a multitude of vowels. In varieties of North American English, /ə/ and /ʌ/ are closely linked and differ primarily by stress, so /ʌ/ is the best candidate for absorbing /ə/. Similarly, OddVoices doesn't distinguish /ɚ/ and /ɝ/. The CMU Pronouncing Dictionary unfortunately uses schwas a lot, so OddVoices enunciates a lot of words weirdly, like "im-uh-tate" for "imitate."
Finally, X-SAMPA's /{/ causes bracket matching issues in some text editors, so // and /&/ are provided as alternatives. The latter is borrowed from the so-called Conlang X-SAMPA or CXS.