German Speech Files

User: ralfherzog
Date: 3/13/2008 2:03 am
Views: 4740
Rating: 20

I have modified Timo's pronunciation lexicon "voxDE20071211.pr0n.gz." I made some minor changes (deleted a few entries).  And I made it compatible with the Pronunciation Lexicon Specification.  I hope that it fits the standard.  But of course, I can't guarantee it.  So please tell me if I made a mistake.

The lexicon is licensed under the GPL.

Timo, I would like to know how did you extract the lexicon voxDE20071211.pr0n.gz from our German prompt files?  Which scripts did you use? It would be helpful if you would explain a little bit.  It is easier to rebuild the wheel than to reinvent it.

I didn't use any scripts to make Timo's lexicon compatible with the PLS.  I just recorded several macros with Notepad++, and applied those macros.

Greetings, Ralf
Re: de-pronunciation-lexicon-20080313.xml
User: kmaclean
Date: 3/14/2008 9:17 pm
Views: 485
Rating: 26

Hi Ralf,

1. I think that Timo created a unique list of words from your prompts file using the HTK script (or created his own):

$perl ../HTK_scripts/prompts2wlist prompts wlist

See Step 2 in the tutorial for additional information. 

2. He then used eSpeak for grapheme to phoneme conversion

Graphemes correspond to all the individual symbols of a writing system.  In this case, it essentially corresponds to letters of the alphabet.  The idea is to get a text-to-speech ('TTS') engine to generate the phonemes from the letters in a word, using the 'rules' built-in to the TTS engine to generate the phonemes for a particular word (since this is what a TTS engine must do to generate speech).  You run all your unknown words through the TTS engine using a script (like Timo's script), make some corrections, and voila, you have a good first draft of a pronuniciation dictionary.

Timo's page on the VoxForgeDev Wiki describes the script, and how to use it with eSpeak, so it can be used to generate pronunciations for a list of words:

$espeak -v de -x -q 3>&1 1>&2 2>&3 | ./ 

I am not familiar with the espeak parameters, but the ">" characters redirect output from the program. Here is a good description of what I/O redirection is all about:

There are always three default "files" open, stdin (the keyboard), stdout (the screen), and stderr (error messages output to the screen). These, and any other open files, can be redirected. Redirection simply means capturing output from a file, command, program, script, or even code block within a script (see Example 3-3 and Example 3-4) and sending it as input to another file, command, program, or script.

Each open file gets assigned a file descriptor. [1] The file descriptors for stdin, stdout, and stderr are 0, 1, and 2, respectively. For opening additional files, there remain descriptors 3 to 9

File descriptor 3 corresponds to the "pipe's" (see below) read channel. 

As Timo describes: 

The 3>&1 1>&2 2>&3 voodoo is necessary as espeak outputs its phonemes on stderr instead on stdout.

The "|" character'pipes' or transmits the output of one program (eSpeak in this case) to the input of another program (Timo's script).



Thanks for your answer, Ken.
User: ralfherzog
Date: 3/18/2008 4:24 am
Views: 76
Rating: 16
Thanks for your answer, Ken. I will continue to try.