Handling TomTom Voice packages
Extracting audio data from voice profiles
When you connect your TomTom to your computer via the USB interface, it advertises itself as an USB storage device. You can mount the volume, and explore the filesystem using your normal filemanager. Inside the directory /voices/
, the voice files are stored: And although file *.chk
can only identify them as plain data, they incorporate a well known file format.
In fact, TomTom voice files consist of several OGG Vorbis streams packaged together with some additional header data; You can even "play" such files using the program ogg123
, since it will just skip over the junk header data.
I've written a Perl script called JoeJoe
that can extract the OGG Vorbis streams from the file, as well as recombine new audio files into a TomTom voice package. This way, you can even use your own voice as your guide.
There are 59 samples included in each package, each one containing a specific message part for the driver. TomTom joins those parts together as needed to create the correct advice. So when you create a new voice package, make sure that the combinations of your samples work. The following table contains the samples with their id number, their meaning and their file names when extracted with joejoe
:
| # | message | filename | |
|---|---|---|---|
| 0 | After | 00-After.ogg | |
| 1 | 50 | 01-50.ogg | |
| 2 | 80 | 02-80.ogg | |
| 3 | 100 | 03-100.ogg | |
| 4 | 200 | 04-200.ogg | |
| 5 | 300 | 05-300.ogg | |
| 6 | 400 | 06-400.ogg | |
| 7 | 500 | 07-500.ogg | |
| 8 | 600 | 08-600.ogg | |
| 9 | 700 | 09-700.ogg | |
| 10 | 800 | 10-800.ogg | |
| 11 | Metres | 11-Metres.ogg | |
| 12 | Arrival | 12-Arrival.ogg | |
| 13 | RightTurn | 13-RightTurn.ogg | |
| 14 | SecondLeft | 14-SecondLeft.ogg | |
| 15 | SecondRight | 15-SecondRight.ogg | |
| 16 | ThirdLeft | 16-ThirdLeft.ogg | |
| 17 | ThirdRight | 17-ThirdRight.ogg | |
| 18 | ExitAhead | 18-ExitAhead.ogg | |
| 19 | ExitLeftAhead | 19-ExitLeftAhead.ogg | |
| 20 | ExitRightAhead | 20-ExitRightAhead.ogg | |
| 21 | FerryAhead | 21-FerryAhead.ogg | |
| 22 | KeepLeft | 22-KeepLeft.ogg | |
| 23 | KeepRight | 23-KeepRight.ogg | |
| 24 | LeftTurnAhead | 24-LeftTurnAhead.ogg | |
| 25 | RightTurnAhead | 25-RightTurnAhead.ogg | |
| 26 | UTurnAhead | 26-UTurnAhead.ogg | |
| 27 | BearLeft | 27-BearLeft.ogg | |
| 28 | BearRight | 28-BearRight.ogg | |
| 29 | Charge | 29-Charge.ogg | |
| 30 | Depart | 30-Depart.ogg | |
| 31 | KeepLeft | 31-KeepLeft.ogg | |
| 32 | KeepRight | 32-KeepRight.ogg | |
| 33 | LeftLane | 33-LeftLane.ogg | |
| 34 | RightLane | 34-RightLane.ogg | |
| 35 | TakeMotorway | 35-TakeMotorway.ogg | |
| 36 | ExitMotorway | 36-ExitMotorway.ogg | |
| 37 | ExitMotorwayLeft | 37-ExitMotorwayLeft.ogg | |
| 38 | ExitMotorwayRight | 38-ExitMotorwayRight.ogg | |
| 39 | GoAroundRoundabout | 39-GoAroundRoundabout.ogg | |
| 40 | CrossRoundabout | 40-CrossRoundabout.ogg | |
| 41 | FirstExitRoundabout | 41-FirstExitRoundabout.ogg | |
| 42 | SecondExitRoundabout | 42-SecondExitRoundabout.ogg | |
| 43 | ThirdExitRoundabout | 43-ThirdExitRoundabout.ogg | |
| 44 | FourthExitRoundabout | 44-FourthExitRoundabout.ogg | |
| 45 | FifthExitRoundabout | 45-FifthExitRoundabout.ogg | |
| 46 | SixthExitRoundabout | 46-SixthExitRoundabout.ogg | |
| 47 | LeftRoundabout | 47-LeftRoundabout.ogg | |
| 48 | RightRoundabout | 48-RightRoundabout.ogg | |
| 49 | EndOfRoad | 49-EndOfRoad.ogg | |
| 50 | SharpLeft | 50-SharpLeft.ogg | |
| 51 | SharpRight | 51-SharpRight.ogg | |
| 52 | GoStraight | 52-GoStraight.ogg | |
| 53 | TakeFerry | 53-TakeFerry.ogg | |
| 54 | Then | 54-Then.ogg | |
| 55 | TryUTurn | 55-TryUTurn.ogg | |
| 56 | TurnLeft | 56-TurnLeft.ogg | |
| 57 | UTurn | 57-UTurn.ogg | |
| 58 | Yards | 58-Yards.ogg |
The use of JoeJoe
is simple: To extract the ogg streams from a voice package, e.g. data53.chk
, simply call the program with the parameter -x
:
joejoe.pl -x data53.chk
JoeJoe
will then extract all 59 ogg files to to your current directory, so you might want to copy the voice package to your hard drive before extracting it.
Creating your own voice profile
To create a new voice profile for your TomTom, simply gather all the needed samples in a single directory, and name them according to the table on this page. To make things easier, you can also just use the number associated with it: So 56-TurnLeft.ogg
is equal to 56.ogg
. To start the merging process, simply call joejoe
with the parameter -m
:
joejoe.pl -m outfile.chk
If a specific sample cannot be found or opened, the merging process will abort, otherwise the file outfile.chk
will be created and can be copied to your TomTom device.
Tomtom map installer
Without the official tomtom home software, it is quite difficult to install maps from your DVD. The script ttmapinstall.sh can help: Just mount the tomtom DVD and the memory card of your tomtom device, and point the script to the inf-file belonging to the map:
./ttmapinstall.sh /mnt/dvd/nveur/Deutschland/Deutschland-Map.inf /mnt/tomtom/
GNU/Linux and the TomTom ONE