Introduction
System-wide voice data packages enable the text-to-speech functionality of application. Usually, the voice data are independently developed for certain application, should it be customized web browsers, or input methods which use voice to confirm the input.
If neither of those are feasible, try:
- License it under one of our approved content licenses:
https://fedoraproject.org/wiki/Licensing#Good_Licenses_3
Voice data license
According to Tom Callaway, the voice data should be in one of our Good Free Software , [[Licensing#Good_Licenses_3|Approved content License], or at least freely redistributable with out limitation.
Voice file format
Voice data can be stored as individual files, packed in an archived file, or produced by synthesizers.
Voice data should be stored in open audio format format such as ogg. If using archive files, the archive file should be in open format such as 7z or tar. 7z is recommend for its capability of handling cross platform unicode filename.
Package naming guide
voicedata-<locale>-<org>-<variant;>
where
- locale is the locale string.
- org is the organization or the project name that provide the voice. default should be reserved word, as it will be a link to the preferred voice from org/variant.
- variant is an optional field for noticeable info, such as the person who provide the voice, algorithm name.
For example, gcin voice data in this scheme should be named as:
voicedata-zh_TW-gcin-EdwardLiu
Voice data preference can show something like:
Locale | Voice |
---|---|
en_US | UncleSam |
en_GB | QueenElizabeth |
....... | ....... |
zh_TW | EdwardLiu |
Package Contents
The contents of package should be in %{_datadir}/voicedata/locale/org/variant
Besides voice data and license file, it is recommend that we have a database to maintain the voice data. The field of that database.
Phoneme | Voice file | Archive | Command |
---|---|---|---|
a | a/a.ogg | a.7z | null |
ai | a/ai.ogg | a.7z | null |
b | b/b.ogg | b.7z | null |
where
- Phoneme: Phoneme or word to be pronounced. Cannot be null.
- Voice file: Relative filename of voice file, can be null if using a voice synthesizer.
- Archive: Archive file that hold the voice file, can be null if not using an archive file.
- Command: Command that produce the voice. This field is mainly for synthesizer. Can be null.
Requires
The package may require a command-line audio player, file unarchiver, or synthesizer.
Post install
If no previous voice data in the locale, the package may "register" itself as default by pointing the default symbolic link at %{_datadir}/voicedata/locale/ to its own org/variant directory.
To do and ponder
- Dialect handling
- Multilingual voice data