App: Voice Guided Navigation in more languages

Navigation message voice output in other languages (Kurviger App 3.0.5.) - keyword native language

The app operation in EN is absolutely OK, most users get along with it, also because the settings are reasonably simple - no “cosmic science”.

However, for the navigation message voice output I would very welcome the native language (in my case czech - CZE), which is not available in actual in 3.0.5 (the native language means the least distraction while driving, and since I use for all other apps Vocalizer with CZE voice, it says the EN messages from Kurviger with CZE pronunciation :nauseated_face: ).
The old Kurviger Pro could navigate CZEch, even if with some less nice expressions

As anyway, with a relatively complicated language, like CZE, also the “big ones” (Tomtom, Sygic) often have erroneous/comical/too long statements, I have always adopted the “Dictionary” files - with Tomtom GO the rex_czc.dat in …/czc/speech/components or with Sygic info2.ini in …/TTS Czech, until the two have now hidden it somewhere hard in the code :-(. At Sygic I was still fable to find the workaround using Vocalizer, where user-friendly for each language a user dictionary is possible.

Yes I know, maintenance of several (and more complicated languages) is not esy.
Possible solution: enable the import (and export) of user dictionary (tha basis might be the existing dictionaries you have available anyway for Kurviger Pro if applicable…), and the user may customize it and and import it as awn option (and share with you)

With CZE, I would definitely help.…, with other languages, maybe someone from the forum…

I was able to find a workaround, is easier, than expected (how may this have taken me couple of days? :roll_eyes:)

Vocalizer accepts even EN words (in its user dictionary) and using them with its equivalent in the other language (tested with CZE on some examples as turn, left, right, onto) work as expected :laughing:.

Couple of simple words, it is doable, but for a complete set of voice instructions, it is quite inconvenient to simulate different roads, catch the residual EN words, trying to guess the phrases…

So, I would like to ask boldtrn for his kindly support.
Please, will you provide me with o complete set of instructions, you are sending to the TTS engine while navigating?
Set of words and complete phrases (if you use some combinations/phrases in some expressions) - a list of EN and EN/DE words/phrases would be nice, so that I can have a better understanding…
… and may create properly the user dictionary for Vocalizer to be able to enjoy Kurviger App talking to me in Czech.
Thank you in advance.

1 Like

Thanks for the feedback.

The Kurviger routing is based on GraphHopper, so our voice instructions also follow the GraphHopper instructions.

You can find an excel sheet with the translations here.

If you like, you can add Czech translations in the sheet - this won’t make it available in Kurviger immediately, but will make it easier for us to add this in the future. If you add them, please let me know. The translations are in column K. If you do this, please let me know afterwards.

Thank you very much.

I will have a look and try to prepare the EN-CZ dictionary for Vocalizer and in parallel check the column K, if some changes desirable.

The issue with CZ is, “kilometers” e.g. may be spoken out in couple of ways according to the number and preposition:
EN: for %1$s kilometers
E.g. “follow the road for 12 kilometers”
CZ: %1$s kilometrů (if %1$s >= 5) / %1$s kilometry (if 2 <= %1$s <= 4) / %1$s kilometr (if %1$s = 1)

That is it what makes the speech sometimes suboptimal.
But, as far as a was able to learn from simulations, you are using the first variant in actual Kurviger App, so that it is a less of an issue…

But let’s try…

One question, may I try directly to add some columns into

or do I have to create my own “sandbox”?

Thanks for looking into this :slight_smile:.

Please don’t create new columns or rows in this Google Doc. Only enter data in existing fields. If it doesn’t work for CZ that is also a valid finding.

I fear at least for the time being, something like this is not supported by GraphHopper, we might be able to create special rules for Kurviger (I don’t want to promise too much :slight_smile:).

1 Like

I would not say that so strictly,
%1$s kilometrů should cover the majority of usage (for %1$s >= 5).

Kurviger App 3 is using it with greater numbers as well, if I am not wrong…, so I think even

are not urgently necessary…

I have updated the column L of the Czech: cs_CZ in

In rows 119 and 124 I used the variant for *%1$s >= 5 as possibly the most useful one.

Hope I got i right…

Thanks for looking into this, I think most common for navigation is the case “in 1 km” and “in 2 kms”. I don’t know how much this changes the meaning in CZ. When you are done, let me know, then I can add this update to GraphHopper. (For now not in Kurviger, as this requires different changes)

In rows 119 and 124, it is only for the route continuation message (kms and miles). I consider the variant for >=5 to be a reasonable compromise (in Kurviger App you do not use the road continuation message if under 5km, if I got it right…)

For standard navigation messages (“in 1km” ans “in 2 kms” e.g.), it is already divided into singular and plural in GraphHopper in rows 116, 117 (121, 122 for miles), so I think, it is may be used the way I updated it in GraphHopper I18N

If for others interesting/of some use, here my TTS user dictionary EN->CZ, I use at the moment with Kurviger 3.0.5:

TTS user dictionary EN->CZ, Kurviger 3.0.5
.Kurviger MOD . .*.*.*.0.0.
.-------------------------------------------.some CZ tuning--.*.*.*.0.0.
.follow the road for.pokračujte.*.*.*.0.0.
.in 300 meters.po třechstech metrech.*.*.*.0.0.
.in one kilometer.po jednom kilometru.*.*.*.0.0.
.in 2 kilometers.po dvou kilometrech.*.*.*.0.0.
.-------------------------------------------.GraphHoper based.*.*.*.0.0.
.continue onto.pokračujte směr.*.*.*.0.0.
.arrive at destination.příjezd do cíle.*.*.*.0.0.
.keep left.držte se vlevo.*.*.*.0.0.
.keep right.držte se vpravo.*.*.*.0.0.*.*.*.0.0.
.turn left.vlevo.*.*.*.0.0.
.turn right.vpravo.*.*.*.0.0.
.turn slight left.mírně vlevo.*.*.*.0.0.
.turn slight right.mírně vpravo.*.*.*.0.0.
.turn sharp left.ostře vlevo.*.*.*.0.0.
.turn sharp right.ostře vpravo.*.*.*.0.0.
.make a U-turn.otočte se.*.*.*.0.0.
.and drive toward.a jeďte směr.*.*.*.0.0.
.and take.a jeďte na.*.*.*.0.0.
.get off the bike.sesedněte z kola.*.*.*.0.0.
.small way.pešina.*.*.*.0.0.
.waypoint.průjezdní bod.*.*.*.0.0.
.Enter roundabout.Kruhový objezd.*.*.*.0.0.
.At roundabout, take exit.Kruhový objezd, výjezd.*.*.*.0.0.
.In 1 kilometer.Po jednom kilometru.*.*.*.0.0.
.then.a poté.*.*.*.0.0.
.In 1 mile.Po jedné míli.*.*.*.0.0.

This is, how it looks like for Vocalizer, but might be easily adoptable for other TTS engines (if user dictionaries supported), as the syntax is quite straightforward:

.message in EN.message in other language.*.*.*.0.0.

I have shortened some messages to keep the speech compact by:

  • not saying “turn” generally (as “left” and “right” are already 2-syllable words in CZ)
  • not saying “enter” and “at” in messages at roundabout
  • not saying “take” when taking the exit from roundabout
1 Like