For those who are looking for a British English one, here is a list of 123312 words with their corresponding Received Pronunciation in IPA: https://gist.github.com/graphemecluster/bd216027d3a9f3f094794725b02c2775
The pronunciations are generated by eSpeak NG with the following command:
awk '1; {print ""}' en-GB.txt > en-GB_LF-doubled.txt
espeak-ng --ipa --tie -q -v en-GB-x-RP -f en-GB_LF-doubled.txt --phonout en-GB_IPA-only.txt
paste en-GB.txt en-GB_IPA-only.txt > en-GB_IPA.tsv
(You may use espeak
instead of espeak-ng
for legacy eSpeak versions.)
The input consists of only ISO basic Latin alphabet A
to Z
and a
to z
with no diacritics (accent marks), with the straight quote '
being the only character outside the alphabet.
The consonants appeared in the output are:
b, d, d͡ʒ, f, h, j, k, l, m, n, p, s, t, t͡ʃ, v, w, x, z, ð, ŋ, ɡ, ɹ, ʃ, ʒ, θ
And the vowels are:
a͡ɪ, a͡ɪ͡ə, a͡ʊ, e͡ə, e͡ɪ, iː, i͡ə, uː, æ, ɐ, ɑː, ɒ, ɔː, ɔ͡ɪ, ə, ə͡ʊ, ɛ, ɜː, ɪ, ʊ, ʌ
and a special one, /ə͡l
/, that probably reflects the vocalisation of l
. (If you don’t like it, just do a global replacement.)
Some noteworthy points are:
- There are a lot of uncommon and technical words (even “ECMAScript”, “Bugzilla” and “PyTorch”!)
- The original list is intended for autocompletion and autocorrection, so a plenty of words end with
's
.
- Syllable boundaries are unmarked.
- Ties are used to indicate that the adjacent characters are of the same phoneme (i.e. consonant or vowel) (and thus the same syllable) and should be considered as a whole.
- The stress marks (
ˈ
and ˌ
) are placed right before vowels. Originally a eSpeak feature, this effectively facilitates rhyme searching (remember this was the original intent of the OP) without needing the list of phonemes in the program.
- There are at least one primary stress mark (
ˈ
) for every word.
- Spaces may exist at lexeme boundaries in the transcription.
ɹ
and the opentail ɡ
are used throughout the transcriptions instead of r
and the looptail g
.
- Many schwa (/
ə
/) syllables at the start and all schwa syllables at the end of a word (with the exceptions of “the” and “yer”) becomes /ɐ
/.
Some obvious mistakes (which are probably only a small part) are corrected, and phonemes alien to most English speakers, like /ç
/, /ɬ
/ and nasalised vowels, are manually eliminated.
Disclaimer: Except removing phonemes, the output is subject to minimal modification and checks. Use it at your own risk.
Background: Like the OP, I made this for my programming project about rhyming.
Hint: For those lucky enough to get here who are also writing a rhyming program, again, you don’t need to hard code the list of phonemes into your app! You just need to consider the position of the primary stress mark (ˈ
).
Statistics
Statistics of the data can be found at: https://gist.github.com/graphemecluster/e59634a18d1d2927293aa7f40bb060e5