Voice translation Qt
Contents
Status
You can get on this page the status of what's missing for each locale.
Get the voices
You can browse the voices online from git online repository or clone it:
git clone https://invent.kde.org/education/gcompris-data.git
Create your voices directory
First copy the English voices as a template in a new directory with you locale name (e.g. my):
cd boards/voices
cp -r en my
Provide your voice translation in boards/voices/my for each English voice.
Recording / Encoding
It is best to choose somebody that speaks and articulate well your language (a teacher is a good candidate).
You can find a lot of practical advices in librivox that can help improve the quality of the recording.
- You can make the recording with audacity. It is mandatory to use mono wav 16bit/44100Hz to get the best quality/size ratio and because this works for any sound card (If you are using a Zoom H1, configure the DIP switches under it with 'LO CUT=ON', 'AUTO LEVEL=ON', 'REC FORMAT=WAV' and select WAV format 44/16 in the display panel).
- Save as WAV file
- Apply loudness transform with sox if necessary. You may use a script like this if the sound is too low:
#!/bin/sh
mkdir modif
for i in *.wav; do
sox $i -r 44100 -b 16 modif/$i norm
done
- In the directory where WAV files are run:
oggenc -q0 --downmix -a "(name of author) -d "date of recording (YYYY/MM/DD)" -c "copyright=GPL V3+" *.wav
The ogginfo command should display the comment.
The last stage is to pass the tool normalize-ogg to make all the sound having a standardized volume level.
- Copy OGG files in the corresponding directory
Spliting a single recorded file
You can make a recording session in a single file and then split it with Audacity. First step is to change it from stereo to mono (menu Tracks -> Stereo to Mono). Then you can label each word or sentence by selecting it and using the "track->add label at selection" option (ctrl-b).
You can label as many words as the file contains. Try to be precise and avoid unnecessary blank at start and end of words. Once the labels are placed, use the 'File->export multiple" feature (ctrl-shift-l). Select ogg, keep the quality option to the default (5) (TBD, is this the best for voices?).
In the meta data dialog, put your name in Artist, album title is GCompris, put the Year and add a Copyright tag with the value GPL V3+. You can then click on 'set default' and no more worry about that. You can even in the global configuration in the export option disable the metadata dialog box entirely.
Tagging
If you don't have the correct tag information in the ogg files, you can retag it with:
for f in *.ogg; do vorbiscomment -w $f -t "ARTIST=<you name>" -t "TITTLE=GCompris" -t "COPYRIGHT=GPL V3+" -t "DATE=2015" done
Normalizing
Volumes of files may mismatch. To normalize them:
for f in *.ogg; do normalize-ogg $f done
Stereo to Mono
If your ogg files are stereo, you can convert them in mono with:
for f in *.ogg do oggdec $f oggenc -o $f --downmix ${f%.*}.wav vorbiscomment -w $f -t "ARTIST=<your name here>" -t "TITTLE=GCompris" -t "COPYRIGHT=GPL V3+" -t "DATE=2015" done
Alphabet
The English alphabet directory contains files named U0030.ogg. These are the voices for each single letter in your locale with a UTF-8 Unicode notation. For example, U+0030 is the character 0, and U+0069 is the character i. You can get the table for each subset.
Warning: We only need the lower case version of each letter. For example, we have U+0061 (letter 'a') but we don't need U+0041 (letter 'A'). Same for accentuated letter.
Lang word list
The lang activity contains a set of about 1000 images originaly comming from the art4apps project and are released under CC-BY-SA. In order to make it available in your language, you must provide a voice recording of each words and an UTF-8 encoded file named content-<your_locale>.json that contains the translation of each word as spoken in the ogg file. The ogg files are in the voice directory <locale>/words and the json file in in the source code under /src/activities/lang/resource/content-<your-locale>.json. If your language has genders it is mandatory to enter them in the recording and the content file.
You can see on a single page the images and their english name.
Shipping
Once done, the easiest way is to tar all this files and send them to the GCompris maintainer.
tar -cvzf voices_my.tgz my
Integration
The voice are packaged in an rcc file. It can be tested by following this instructions.
To create the rcc file, you script generate_voices_rcc.sh. It creates all the rcc files for all the langs in .rcc/voices-ogg. To test your creation, copy the files here under $HOME/.local/share/KDE/gcompris-qt/data2/voices-ogg and run GCompris with the download option disabled or the version of gcompris.net will take.
Once done, the generated rcc must be uploaded on gcompris.net by someone with the admin rights. On gcompris.net go in /opt/gcompris and run the script ./updateVoices.sh. It pulls the latest voice git, pack them in .rcc and install them under /var/www/data2 ready to be downloaded by GCompris.