Hi all,
I hope that I don't bother you (hoffentlich gehe ich keinem auf die Nerven)!
I made another approach to speechoutput and displayed informations at
the moment the next waypoint is reached.
Up to now I tried to have a speechoutput about 10 seconds (with 30 km/h)
and about 30 seconds (with 100 km/h) before the next waypoint is reached
to have enough time to react with the car (change the lane, reduce speed
etc.). With the discussed definitions of ROUTEREACH it was quite good.
But there was a great disadvantage: At the moment the speechoutput and
the displayed banner appeared, the pointer pointed to the next waypoint
(sometimes 200 or 500 m before the waypoint was reached). And another
disadvantage was, that if nearby the motorwayexit are some more
waypoints, they were all anounced and displayed (because of the high
speed and the great number of 30 seconds) immediately after the exit. I
didn't reach the first given waypoint after leaving the motorway and I
heared three or four anouncements of the following waypoints. The
pointer showed to the next not anounced waypoint, I have no actual
distance to the next real waypoint, not very promising if I didn't
remember the right anouncement of the three or four given. Difficult to
explain ...
Now I changed the code in gpsdrive.c (current version: routes.c) in this
way: 40 seconds before I reach a waypoint the speechoutput and the
banner will be given, BUT the pointer will point to the waypoint until I
reach the waypoint (up to now, I repeat it, the pointer points to the
next waypoint at the moment the speechoutput is given, no matter if the
waypoint is really reached).
The code works quite good without festival (with running festival the
anouncement doesn't stop, it will be repeated over and over, I do not
know why), flite does it better, but it doesn't have a German voice.
So I changed the code:
gpsdrive.h
#define ROUTEREACH1 (30*groundspeed/(3600*milesconv))
#define ROUTEREACH2 (5*groundspeed/(3600*milesconv))
gpsdrive.c/routes.c
line 3534 ff
+ if (d < ROUTEREACH1)
+ {
+ g_strlcpy (mappath, homedir, sizeof (mappath));
+ g_strlcpy (mappath, activewpfile, sizeof (mappath));
+ saytargettext (mappath, targetname);
+ {
if ((d < ROUTEREACH2) || forcenextroutepoint)
{
...
Then I recompiled the code and it works with the mentioned problems in
festival.
Please have a look at this feature to improve the behaviour of
speechoutput and displayed banner informations!
My additional ideas:
- speechoutput out of dsc-file and the system adds the distance to the
waypoint as prefix to the text and repeats the message every 5 seconds
until the waypoint is reached
- speechoutput out of dsc-file and the system adds "NOW" as prefix to
the text exactly at the waypoint (adjustable with ROUTEREACH2)
Thank you very much,
Thomas Schönhütl.
|