From Fedora Project Wiki
This is a draft document

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.

Voice data license

According to Tom Callaway, the voice data should be in one of our Good Free Software , 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>-<upstream>-<variant>

where

  • locale is the locale string.
  • upstream is the upstream 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.

Dialect handling

To ponder

  • Multilingual voice data