hi,
problem with distance is weird ... I'll tell you in basic, how my system works.
new location comes from GPS, I then update location on map and start compute of new location on route. Locus compute nearest point projected on route and distance from this point to next cross. Lets say you ride 50km/h and you're now 510 metres to cross. I reduce distance to cross by one second of ride (to remove some GPS delay), so it's 460m and I'm then searching for closest text to say. Closest are 400 and 500m, so I take 500 in this case. Before I start search for text to say, I convert metres to yards if needed, so I just compute 460 * 1.09361 and search text for this.
you say "Either way, could you make the TTS measurements and annoucements match the distance units" but as I wrote, I'm already taking "metres" and "yards" units, so this should work correctly