| @@ -10,6 +10,7 @@ | |||
| - [Language File](#language-file) | |||
| - [Phoneme Definition File](#phoneme-definition-file) | |||
| - [Dictionary Files](#dictionary-files) | |||
| - [Building Phonemes](#building-phonemes) | |||
| - [Program Code](#program-code) | |||
| - [Compiling Rules File for Debugging](#compiling-rules-file-for-debugging) | |||
| - [Improving a Language](#improving-a-language) | |||
| @@ -100,7 +101,7 @@ To add new language, you have to create or edit following files: | |||
| |------------------------------|--------| | |||
| | Makefile.am |edit | | |||
| | phsource/phonemes |edit | | |||
| | phsource/ph_french |create | | |||
| | phsource/ph_french |create (optional) | | |||
| | dictsource/fr_list |create | | |||
| | dictsource/fr_rules |create | | |||
| | dictsource/fr_extra |create (optional) | | |||
| @@ -121,34 +122,66 @@ Search for configuration of existing languages (e.g. English) | |||
| and add similar lines for your language in following sections. | |||
| E.g. for French: | |||
| phsource/phonemes.stamp: \ | |||
| ... | |||
| phsource/ph_french \ | |||
| ... | |||
| dictionaries: \ | |||
| ... | |||
| espeak-ng-data/fr_dict \ | |||
| espeak-ng-data/fr_dict \ | |||
| ... | |||
| fr: espeak-ng-data/fr_dict | |||
| dictsource/fr_extra: | |||
| touch dictsource/fr_extra | |||
| espeak-ng-data/fr_dict: src/espeak-ng phsource/phonemes.stamp dictsource/fr_list dictsource/fr_rules dictsource/fr_extra | |||
| cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak-ng --compile=fr && cd .. | |||
| espeak-ng-data/fr_dict: dictsource/fr_list dictsource/fr_rules dictsource/fr_extra dictsource/fr_emoji | |||
| ... | |||
| Note, that you don't need to add `fr_extra` reference in the last group, if your language doesn't have this file. | |||
| Note, that you don't need to add `fr_extra` or `fr_emoji` reference in the last group, if your language doesn't have this file. | |||
| Optionally, if you have [phoneme definition file](#phoneme-definition-file), following line also should be added: | |||
| phsource/phonemes.stamp: \ | |||
| ... | |||
| phsource/ph_french \ | |||
| ... | |||
| ### Phonemes File | |||
| Open file `phsource/phonemes` and add following lines into it, | |||
| to make it call your new, e.g. `ph_french` file: | |||
| Open file `phsource/phonemes` and add following lines | |||
| 1. Set of standard (already defined) phonemes for languge | |||
| ``` | |||
| ... | |||
| phonemetable fr base | |||
| ... | |||
| ``` | |||
| where: | |||
| _..._ means other existing lines of the configuration file and | |||
| _base_ is usually is `base1` or code of other (already defined) language: | |||
| * `base` phoneme table contains only definitions of some "control" phonemes | |||
| such as stress marks and pauses defined in top of the `phonemes` file. | |||
| * `base1` includes `base` and also has basic set of vowels and consonants | |||
| defined under `phonemetable base1` section in `phonemes` file. | |||
| * `base2` has additional phonemes (mostly diphones) included from `ph_base2` file. | |||
| * Other language e.g. `en` has all phonemes defined in its corresponding phoneme | |||
| definition file e.g. `phsourc/ph_english` for English language. | |||
| 2. Optionally, if you have customized phonemes in [Phoneme Definition File](#phoneme-definition-file), | |||
| add additional line: to include it: | |||
| ``` | |||
| ... | |||
| include ph_french | |||
| ... | |||
| ``` | |||
| For example, if `phsource/phonemes` has following lines: | |||
| phonemetable fr base | |||
| include ph_french | |||
| it defines a phoneme table `fr` which inherits phoneme definitions from | |||
| `base` table and adds new definitions or overrides existing | |||
| definitions of `base` phonemes from the `phonemes/ph_french` file. | |||
| ### Language File | |||
| @@ -178,38 +211,23 @@ Details of the contents of language files are given in [Voices](voices.md). | |||
| ### Phoneme Definition File | |||
| E.g. `phsource/ph_french` is the phoneme definition file for French. | |||
| This contains phoneme definitions for the vowels and consonants which the language uses. | |||
| Usually it will contain mostly vowels. Most consonants will be inherited from the | |||
| common phoneme definitions in the _master phoneme file_: `phsource/phonemes`. | |||
| You must first decide on the set of phonemes (vowel and consonant | |||
| sounds) for the language. These should be defined in a phoneme | |||
| definition file `ph_french`, where `ph_french` is the name of your | |||
| language. A reference to this file is then included at the end of the | |||
| master phoneme file, `phsource/phonemes`, e.g.: | |||
| phonemetable fr base | |||
| include ph_french | |||
| This example defines a phoneme table `fr` which inherits the | |||
| contents of phoneme table `base`. Its contents are found in the file | |||
| `ph_french`. | |||
| The `base` phoneme table contains definitions of a basic set of | |||
| consonants, and also some "control" phonemes such as stress marks and | |||
| pauses. These are defined in `phsource/phonemes`. The phoneme table | |||
| for a language will inherit these, or alternatively it may inherit the | |||
| phoneme table of another language which in turn inherits the `base` | |||
| phoneme table. | |||
| If you decide to customize definitions of phonemes (vowel and consonant | |||
| sounds) for the language, then you have to create e.g. `phsource/ph_french` | |||
| phoneme definition file for French. | |||
| The phonemes file for the language defines those additional phonemes | |||
| which are not inherited (generally the vowels and diphthongs, plus any | |||
| additional consonants that are needed), or phonemes whose definitions | |||
| differ from the inherited version (eg. the redefinition of a consonant). | |||
| Usually it will contain mostly vowels. Most consonants will be inherited from the | |||
| common phoneme definitions in the _master phoneme file_: `phsource/phonemes` as | |||
| described in [Phonemes File](#phonemes-file) section above. | |||
| Details of phonemes files are given in [Phoneme Tables](phontab.md). | |||
| ### Building Phonemes | |||
| To build the phoneme files, run: | |||
| espeak-ng --compile-phonemes | |||