› Forums › Speech Synthesis › Festival › Festival's Lexicon
- This topic has 7 replies, 5 voices, and was last updated 4 years, 1 month ago by Simon.
-
AuthorPosts
-
-
October 13, 2015 at 14:59 #291
How can we determine whether a particular word is in the lexicon/dictionary of the current Festival voice or has gone through Letter-to-Sound rules?
-
October 14, 2015 at 11:41 #312
The function lex.lookup calls the complete LTS module that tries the lexicon and then calls the letter-to-sound model if the word is not found.
Use the lex.lookup_all function to only look in the dictionary. This will return ‘nil’ when the word is not found, rather than passing the word on to the letter-to-sound model.
-
October 29, 2020 at 17:44 #12811
How can we set the variables when I want to lookup content as a noun?
-
October 29, 2020 at 18:13 #12816
You can simply use
lex.lookup_all
which shows you all available entries in the lexicon for a word:festival> (lex.lookup_all "content") (("content" jj (((k @ n) 0) ((t e n ?) 1))) ("content" nn (((k oo n) 1) ((t e n ?) 0))) ("content" vb (((k @ n) 0) ((t e n ?) 1))) ("content" vbp (((k @ n) 0) ((t e n ?) 1))))
-
October 30, 2020 at 09:22 #12824
and what notation is festival using for transcribing i.e. (k@nten?) etc. because otherwise i dont know how to check online and compare to the proper pronunciation of a word. also i am not sure where to find the proper pronunciation of the word transcribed, i can listen to audio on most dictionary sites but cant see one with a transcription in ipa or somethng like that.
-
October 30, 2020 at 09:38 #12825
The best way to understand the phone set is to look up common words that you know. See also this topic.
The determine the correct pronunciation for a word not in the dictionary, a good technique is to look up similar-sounding words and assemble a pronunciation from parts of them. For example, to work out the pronunciation of “Simonification” (a word I just made up, but a plausible word in English), I would use
lex.lookup_all
to ensure I am only retrieving dictionary entries and not using G2P:festival> (lex.lookup_all "Simon") (("simon" nnp (((s ae) 1) ((m @ n) 0)))) festival> (lex.lookup_all "magnify") (("magnify" vb (((m a g) 1) ((n i) 0) ((f ae) 0))) ("magnify" vbp (((m a g) 1) ((n i) 0) ((f ae) 0)))) festival> (lex.lookup_all "classification") (("classification" nn (((k l a s) 2) ((i) 0) ((f i) 0) ((k ei) 1) ((sh n!) 0))))
from which I would decide that “Simonification” might be pronounced as
s ae m @ n i f i k ei sh n!
I could optionally refine that by thinking about syllabification or syllable stress (perhaps “Simonification” should have stress on the second syllable so the vowel should be full, not reduced to schwa
@
).I could also compare this to what the G2P model predicts:
festival> (lex.lookup "Simonification") ("Simonification" nil (((s ae m) 0) ((oo n) 0) ((i f) 0) ((i k) 0) ((ei sh n!) 0)))
In this case, the prediction looks reasonable.
-
October 30, 2020 at 18:33 #12843
Thank you for the answers.
Is it possible for Festival to use G2P for a word that is already in its dictionary and make a mistake?
-
October 30, 2020 at 18:35 #12845
No – if a word is in the dictionary then Festival will always use that in preference to G2P. This is true even if there is no dictionary entry with the required POS: it will then ignore POS and pick another entry.
-
-
AuthorPosts
- You must be logged in to reply to this topic.