Notices


Reply
Thread Tools
Posts: 770 | Thanked: 2,417 times | Joined on Jan 2011 @ Germany
#1991
Originally Posted by pichlo View Post
I thought that was the case already.
You're right, thanks!
It's under: Options/Navigation/Language

When I first tried modrana I had no GPS signal, so changing anything here had no effect since without a position there were no instructions to be read.
I assumed this menu was supposed to change the UI language or the language of the generic parts of instructions (e.g. "turn left" -> "links abbiegen").
As this didn't happen I assumed that this was a feature that wasn't implemented yet. At that point I hadn't even realized that changing the pronounciation of proper names would even be necessary, so I forgot about that menu.
Instead I expected pronounciation options to be in the Sound menu since I knew it was done by espeak and espeak clearly is sound-related.
 

The Following 6 Users Say Thank You to sulu For This Useful Post:
Posts: 1,450 | Thanked: 6,856 times | Joined on Apr 2010 @ Czech Republic
#1992
Originally Posted by rinigus View Post
Prerecorded voices would require limited phrases. This assumption doesn't hold for routing engines adding street names into the instructions.
Actually, I think in many cases the local names are not thatimportant or even useful, especially if you are in some unknown terrain and the names are in a foreign language (and possibly even in a different alphabet). Knowing the next manuever is a right turn/taking the 5th exit, etc. can be enough.

Originally Posted by rinigus View Post
Also supporting multiple routing engines doesn't help either ...
Yeah, you might not have phrases matching all the manuevers your routing engine could generate. Also the voice samples could be sizeable and distrubution would have to be solved somehow. Properly working TTS is just so much more flexible.

BTW, the Marble project created a rather comprehensive set of navigation voice samples in many languages.


Originally Posted by rinigus View Post
In theory, its possible. I don't know whether Valhalla imports multiple names (if available) when making the tiles. As soon as the names are available, should be possible to tag them in the instructions. Its not done yet, as far as I know.
Interesting! So provided we have a TTS that could use different languages for a single voice message (for example: instructions in English with local names in German), it could make sense to open a RFE with them.

Originally Posted by rinigus View Post
I haven't filed the issue describing it in Valhalla's repo since I am not sure we can actually make use of this output (yet?). I think I saw somewhere mimic/flite issue regarding reading multi-language text, but it wasn't resolved at that time.
Espeak can definitely do that, for example:
Code:
espeak -s 120 -m '<speak xml:lang="en">In 300 meters turn right to <voice name="de">Schloss Sch÷nbrunn</voice> Then continue straight and watch for horse carriages.</speak>'
This says the main message in English with the local name in German and can be easily extended to test other combinations. Would still be good if other TTS engines could do that as well, ideally using the same SSML syntax speak supports. It can do much more than just changing voice, for a more comprehensive example, you can save this to file:

Code:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/10/synthesis http://www.w3.org/TR/speech-synthesis/synthesis.xsd" xml:lang="en-US">
This is not <break strength='none' /> a pause.
This is a <break strength='x-weak' /> phrase break.
This is a <break strength='weak' /> phrase break.
This is a <break strength='medium' /> sentence break.
This is a <break strength='strong' /> paragraph break.
This is a <break strength='x-strong' /> paragraph break.
This is a <break time='3s' /> three second pause.
This is a <break time='4500ms' /> 4.5 second pause.
This is a <break /> sentence break.
<!- Changing Voices ->
This is the default voice. <voice name="en-sc">This is David.</voice> This is the default again.
<voice name="Callie">Callie here.</voice>"
<!- Adjusting Speech Rate ->
I am now <prosody rate='x-slow'>speaking at half speed.</prosody>
I am now <prosody rate='slow'>speaking at 2/3 speed.</prosody>
I am now <prosody rate='medium'>speaking at normal speed.</prosody>
I am now <prosody rate='fast'>speaking 33% faster.</prosody>
I am now <prosody rate='x-fast'>speaking twice as fast</prosody>
I am now <prosody rate='default'>speaking at normal speed.</prosody>
I am now <prosody rate='.42'>speaking at 42% of normal speed.</prosody>
I am now <prosody rate='2.8'>speaking 2.8 times as fast</prosody>
I am now <prosody rate='-0.3'>speaking 30% more slowly.</prosody>
I am now <prosody rate='+0.3'>speaking 30% faster.</prosody>
</speak>
And then play it with:

Code:
speak -m -f <path to file>
Originally Posted by rinigus View Post
Which brings the question up regarding partitioning: is it modRana/Poor Maps/... who is supposed to split the sentence and later glue it together or TTS? I would expect TTS to do that, but maybe its na´ve.
I'm not sure I understand - TTS just converts text to speach, so as long as the input text is correctly marked up (say with SSML) all should be fine.

Or do you mean a case where the TTS engine does not support changing settings per "session" and you would have to basically stich multiple sound files together to achieve the same end result?
__________________
modRana: a flexible GPS navigation system
Mieru: a flexible manga and comic book reader
Universal Components - a solution for native looking yet component set independent QML appliactions (QtQuick Controls 2 & Silica supported as backends)
 

The Following 7 Users Say Thank You to MartinK For This Useful Post:
Posts: 1,450 | Thanked: 6,856 times | Joined on Apr 2010 @ Czech Republic
#1993
BTW, I've opened a tracking issue for multilingual turn by turn directions, including available routing engine and TTS languages (as far as I could find - corrections welcome!).

First step should likely be to actually make it possible to set language for the router and for the TTS engine.

That can be later extended by using data from the router to set the correct language for local names (once available).

Actually, just a country code would be enough if no language code is available for the given local name. There is a project called langtable that makes it possible to map languages to country codes (and much more!) with reasonable ammount of certainty.

There would still of course be mistakes but it should IMHO generally handle names without explicit language code quite well.
__________________
modRana: a flexible GPS navigation system
Mieru: a flexible manga and comic book reader
Universal Components - a solution for native looking yet component set independent QML appliactions (QtQuick Controls 2 & Silica supported as backends)
 

The Following 7 Users Say Thank You to MartinK For This Useful Post:
Posts: 468 | Thanked: 2,201 times | Joined on Aug 2016 @ Estonia
#1994
mimic (and most probably flite) does support SSML, at least some parts of it. I was using it to provide pronunciation for some words used in English Pirate instructions by Valhalla.

While supporting SSML, it becomes a bit more difficult to switch the language in the voice engine that has multiple voices for the same language. I guess, that has to be somehow resolved on TTS side. If done, then we can, indeed, give the full phrase with different languages to TTS engine.

As for country->lang matching, there is no need. OSM data gives the names in different languages, not by country code.

In general, I think we do need a decent TTS, whether open-sourced or not. In some parts of the code, you can get around by pre-recording, but that cannot be done for all applications.
 

The Following 2 Users Say Thank You to rinigus For This Useful Post:
Posts: 1,450 | Thanked: 6,856 times | Joined on Apr 2010 @ Czech Republic
#1995
New modRana package ready for testing
While I'm currently mainly working on improving turn-by-turn navigation support in modRana & making use of all the nice text-to-speach code and packages rinigius & otsaloma created, it seem to be taking longer than expected.

So I've decided to start doing more regular modRana package updates with smaller enhancements, fixes and translation updates till the bigger items are ready for shipping as well.

The first such modRana package is ready for testing:

http://www.modrana.org/packages/sail...1.1.noarch.rpm

For testing of this package I would recommend focusing on localization support - you can check the list of languages on Transifex. If you are running your Sailfish OS in one of those languages it would be good if you could check everything is translated properly.

The general plan is to wait till early next week and then publish the new modRana package on OpenRepos & Jolla Store (if no blockers show up).

Thanks in advance for any testing and feedback!
__________________
modRana: a flexible GPS navigation system
Mieru: a flexible manga and comic book reader
Universal Components - a solution for native looking yet component set independent QML appliactions (QtQuick Controls 2 & Silica supported as backends)
 

The Following 9 Users Say Thank You to MartinK For This Useful Post:
Posts: 100 | Thanked: 381 times | Joined on Dec 2014 @ Poland
#1996
Originally Posted by MartinK View Post
New modRana package ready for testing

Thanks in advance for any testing and feedback!
So time for feedback

It's impossible to run this version on Jolla 1. It's crushing at the loading screen.

Code:
[nemo@Sailfish ~]$ python /usr/share/harbour-modrana/modrana.py
INFO :  == modRana Starting == 
INFO :   0.55.8
INFO :   Python 2.7.9
INFO core.platform_detection: ** detecting current device **
INFO core.platform_detection: ** selected jolla as device module ID **
INFO :  * device: A Jolla device module (5.49 ms)
INFO : loading options
INFO : possible upgrade detected
INFO core.config: upgrading modRana configuration files in /home/nemo/.config/harbour-modrana
INFO core.config: no configuration files needed upgrade
INFO : importing modules:
INFO :  * turnByTurn: A turn by turn navigation module. (5.07 ms)
INFO :  * textEntry: A module for handling text entry. (0.88 ms)
INFO :  * interfaceFeedback: A sample pyroute module (0.58 ms)
INFO :  * display: A platform independent display device control module (1.01 ms)
INFO :  * theme: ModRana theming module (7.02 ms)
INFO :  * clickHandler: handle mouse clicks (1.50 ms)
INFO :  * mapLayers: Map layer handling (58.78 ms)
INFO :  * location: Supplies position info from a position source (3.05 ms)
INFO :  * showPOI: Show POI on the map and in the menu. (3.75 ms)
INFO :  * askMenu: A module providing yes/no question dialogs (0.89 ms)
INFO :  * info: A modRana information handling module (4.55 ms)
INFO :  * example: A sample modRana module (0.64 ms)
INFO :  * sketch: Sketching functionality (0.70 ms)
INFO :  * notification: This module provides notification support. (1.37 ms)
INFO :  * updateTiles: Update stored map tiles. (0.58 ms)
INFO :  * input: Handle input from keyboard, buttons, etc. (0.55 ms)
INFO :  * onlineServices: A module for talking to various online services (83.20 ms)
INFO :  * menu: Handle menus (7.33 ms)
INFO :  * animatedMapView: A sample pyroute module (1.25 ms)
ERROR : module: mod_tileserver/tileserver failed to load
Traceback (most recent call last):
  File "/usr/share/harbour-modrana/modrana.py", line 415, in _loadModule
    module = a.getModule(self, moduleName, importName)
  File "modules/mod_tileserver.py", line 42, in getModule
    return Tileserver(*args, **kwargs)
  File "modules/mod_tileserver.py", line 58, in __init__
    if self.modrana.gui.needsLocalhostTileserver():
AttributeError: 'NoneType' object has no attribute 'needsLocalhostTileserver'
INFO :  * units: a unit handling module  (1.31 ms)
INFO :  * tracklog: Record tracklogs (156.57 ms)
DEBUG mod.storeTiles: tile loading debug messages state: disabled
INFO :  * storeTiles: Single-file-fs tile storage (36.66 ms)
INFO :  * search: Search for POI (1.59 ms)
INFO :  * showTracklogs: draws a GPX track on the map (1.28 ms)
INFO :  * loadTracklogs: A sample pyroute module (1.83 ms)
INFO :  * routeProfile: Creates a route profile (an elevation chart) (0.92 ms)
INFO core.poi_db: POI database path:
INFO core.poi_db: /home/nemo/.local/share/harbour-modrana/poi/modrana_poi.db
INFO core.poi_db: connection to POI db established
INFO :  * storePOI: Store POI data. (5.43 ms)
INFO :  * stats: Handles statistics (0.95 ms)
INFO :  * markers: A module handling markers on the map. (1.98 ms)
INFO :  * voice: Handle text to speech. (0.92 ms)
INFO :  * route: Routes (6.68 ms)
INFO :  * projection: Projection code (lat/long to screen conversions) (1.89 ms)
INFO :  * keys: A keyboard input handling module (0.70 ms)
INFO :  * positionMarker: A sample pyroute module (0.76 ms)
INFO :  * icons: Draw icons (1.37 ms)
INFO :  * mapView: Controls the view being displayed on the map (1.04 ms)
INFO :  * showOSD: Draw OSD (On Screen Display). (1.22 ms)
INFO :  * tracklogManager: Module for managing tracklogs (1.71 ms)
INFO mod.mapTiles: in memory tile cache size: 150
INFO mod.mapTiles: map folder path: /home/nemo/.local/share/harbour-modrana/maps
INFO :  * mapTiles: Display map images (109.72 ms)
INFO :  * messages: Handles messages (0.82 ms)
INFO :  * options: Handle options (3.42 ms)
INFO :  * mapData: Handle downloading of map data (11.51 ms)
ERROR : module: mod_cron/cron failed to load
Traceback (most recent call last):
  File "/usr/share/harbour-modrana/modrana.py", line 413, in _loadModule
    a = imp.load_module(importName, fp, pathName, description)
  File "modules/mod_cron.py", line 30, in <module>
    import pyotherside
ImportError: No module named pyotherside
INFO : Loaded all modules in 572.47 ms, initialising
Traceback (most recent call last):
  File "/usr/share/harbour-modrana/modrana.py", line 963, in <module>
    start()
  File "/usr/share/harbour-modrana/modrana.py", line 947, in start
    modrana = ModRana()
  File "/usr/share/harbour-modrana/modrana.py", line 211, in __init__
    self._loadModules()
  File "/usr/share/harbour-modrana/modrana.py", line 346, in _loadModules
    self._modulesLoadedPreFirstTime()
  File "/usr/share/harbour-modrana/modrana.py", line 467, in _modulesLoadedPreFirstTime
    if self.gui.showQuitButton():
AttributeError: 'NoneType' object has no attribute 'showQuitButton'
http://www.heypasteit.com/clip/0IJM13

Last edited by atlochowski; 2018-05-18 at 07:47.
 

The Following User Says Thank You to atlochowski For This Useful Post:
Posts: 1,450 | Thanked: 6,856 times | Joined on Apr 2010 @ Czech Republic
#1997
Code:
[nemo@Sailfish ~]$ python /usr/share/harbour-modrana/modrana.py
Running modrana.py directly won't currently work due to how the Qt 5 & PyOtherSide based GUI works on Sailfish OS. Also modRana expects Python 3 on Sailfish OS while the "python" executable on Sailfish OS is still Python 2.

To run packaged modRana frol the command line on Sailfish OS do this:

Code:
sailfish-qml harbour-modrana
That should show the same errors as clicking the modRana icon.
__________________
modRana: a flexible GPS navigation system
Mieru: a flexible manga and comic book reader
Universal Components - a solution for native looking yet component set independent QML appliactions (QtQuick Controls 2 & Silica supported as backends)
 

The Following User Says Thank You to MartinK For This Useful Post:
Posts: 100 | Thanked: 381 times | Joined on Dec 2014 @ Poland
#1998
Code:
[nemo@Sailfish ~]$ sailfish-qml harbour-modrana
[D] unknown:0 - Using Wayland-EGL
[D] unknown:0 - Got library name:  "/usr/lib/qt5/qml/io/thp/pyotherside/libpyothersideplugin.so"
[D] info:23 - INFO: Actions: Sailfish media keys initialized
[W] unknown:0 - Deprecated import of org.nemomobile.keepalive upgrade code to Nemo.KeepAlive 1.1
[D] info:23 - INFO: KeepAlive: keep alive control initialized
[D] info:23 - INFO: Screen: screen blanking control initialized
[D] info:23 - INFO: importing the modRana Python core
[D] info:23 - INFO: starting the modRana Python core
DEBUG : argv from QML:
['-u', 'qt5', '-d', 'jolla']
DEBUG : full argv:
['modrana.py', '-u', 'qt5', '-d', 'jolla']
INFO :  == modRana Starting == 
INFO :   0.55.8
INFO :   Python 3.4.3
INFO :  * device: A Jolla device module (31.50 ms)
INFO : loading options
INFO : possible upgrade detected
INFO core.config: upgrading modRana configuration files in /home/nemo/.config/harbour-modrana
INFO core.config: no configuration files needed upgrade
INFO : using PyOtherSide 1.5.1
INFO :  * gui: A Qt + QML GUI module (108.78 ms)
INFO : importing modules:
INFO :  * input: Handle input from keyboard, buttons, etc. (3.91 ms)
INFO :  * textEntry: A module for handling text entry. (7.75 ms)
INFO :  * units: a unit handling module  (15.66 ms)
INFO :  * showPOI: Show POI on the map and in the menu. (23.78 ms)
INFO :  * icons: Draw icons (29.91 ms)
DEBUG mod.storeTiles: tile loading debug messages state: disabled
INFO :  * storeTiles: Single-file-fs tile storage (121.81 ms)
INFO :  * showOSD: Draw OSD (On Screen Display). (21.46 ms)
INFO :  * location: Supplies position info from a position source (12.54 ms)
INFO :  * mapData: Handle downloading of map data (87.62 ms)
INFO :  * clickHandler: handle mouse clicks (17.70 ms)
INFO :  * display: A platform independent display device control module (14.80 ms)
INFO :  * onlineServices: A module for talking to various online services (358.49 ms)
INFO :  * loadTracklogs: A sample pyroute module (35.04 ms)
INFO :  * positionMarker: A sample pyroute module (8.82 ms)
INFO :  * animatedMapView: A sample pyroute module (7.23 ms)
INFO :  * markers: A module handling markers on the map. (19.05 ms)
INFO :  * projection: Projection code (lat/long to screen conversions) (20.17 ms)
INFO mod.mapTiles: in memory tile cache size: 150
INFO mod.mapTiles: map folder path: /home/nemo/.local/share/harbour-modrana/maps
INFO :  * mapTiles: Display map images (434.85 ms)
INFO :  * notification: This module provides notification support. (15.32 ms)
INFO :  * interfaceFeedback: A sample pyroute module (3.94 ms)
INFO :  * cron: A Qt 5 timing and scheduling module for modRana (15.23 ms)
INFO :  * keys: A keyboard input handling module (5.10 ms)
INFO :  * mapView: Controls the view being displayed on the map (15.69 ms)
INFO :  * mapLayers: Map layer handling (73.31 ms)
INFO :  * messages: Handles messages (7.69 ms)
INFO core.poi_db: POI database path:
INFO core.poi_db: /home/nemo/.local/share/harbour-modrana/poi/modrana_poi.db
INFO core.poi_db: connection to POI db established
INFO :  * storePOI: Store POI data. (31.53 ms)
INFO :  * menu: Handle menus (92.54 ms)
INFO :  * theme: ModRana theming module (15.96 ms)
INFO :  * showTracklogs: draws a GPX track on the map (20.02 ms)
INFO :  * routeProfile: Creates a route profile (an elevation chart) (10.50 ms)
INFO :  * askMenu: A module providing yes/no question dialogs (5.40 ms)
INFO :  * tracklog: Record tracklogs (423.32 ms)
INFO :  * tileserver: A modRana built-in tileserver (46.09 ms)
INFO :  * info: A modRana information handling module (13.22 ms)
INFO :  * sketch: Sketching functionality (5.49 ms)
INFO :  * voice: Handle text to speech. (10.22 ms)
INFO :  * stats: Handles statistics (8.09 ms)
INFO :  * options: Handle options (64.79 ms)
INFO :  * turnByTurn: A turn by turn navigation module. (34.49 ms)
INFO :  * route: Routes (70.69 ms)
INFO :  * search: Search for POI (38.45 ms)
INFO :  * updateTiles: Update stored map tiles. (3.97 ms)
INFO :  * tracklogManager: Module for managing tracklogs (17.21 ms)
INFO :  * example: A sample modRana module (4.00 ms)
INFO : Loaded all modules in 2324.46 ms, initialising
DEBUG mod.mapTiles: automatic tile download queue size: 100
INFO core.threads: Running Thread: automaticTileDownloadWorker1 (1215402896)
INFO core.threads: Running Thread: automaticTileDownloadWorker2 (1208886160)
INFO core.threads: Running Thread: automaticTileDownloadWorker3 (1205859216)
INFO core.threads: Running Thread: automaticTileDownloadWorker4 (1217500048)
INFO core.threads: Running Thread: automaticTileDownloadWorker5 (1220260752)
INFO core.threads: Running Thread: automaticTileDownloadWorker6 (1223685008)
INFO core.threads: Running Thread: automaticTileDownloadWorker7 (1233122192)
INFO core.threads: Running Thread: automaticTileDownloadWorker8 (1236235152)
INFO core.threads: Running Thread: automaticTileDownloadWorker9 (1238524816)
INFO core.threads: Running Thread: automaticTileDownloadWorker10 (1241416592)
INFO core.threads: Running Thread: modRanaTileDownloadManager (1244156816)
INFO mod.mapView: switching map drag mode to default
INFO mod.mapView: switching centering disable threshold to 2048
INFO mod.loadTracklogs: ** making a list of available tracklogs
INFO mod.loadTracklogs: *  using this tracklog folder:
INFO mod.loadTracklogs: * /home/nemo/.local/share/harbour-modrana/tracklogs
INFO mod.loadTracklogs: *  there are 2 tracklogs available
INFO mod.loadTracklogs: **
INFO mod.options: reloading Monav data pack list
INFO : Initialization complete in 79.14 ms
INFO : ** modRana startup timing **
INFO : # device: Jolla (jolla)
INFO : * modRana start (0 ms), 0/5783 ms
INFO : * imports done (597 ms), 597/5783 ms
INFO : * GUI creation (2276 ms), 2873/5783 ms
INFO : * all modules loaded (2827 ms), 5700/5783 ms
INFO : * all modules initialized (83 ms), 5783/5783 ms
INFO : ** whole startup: 5783 ms **
INFO mod.gui.qt5.qml: redirecting QML log to the Python log
INFO mod.gui.qt5.qml: theme changed to: Silica theme (id: silica)
INFO mod.gui.qt5.qml: __init__ running
INFO mod.gui.qt5.qml: Qt5 location initialized
INFO mod.gui.qt5.qml: Qt5 GUI location provider: undefined
[D] unknown:0 - Geoclue client path: "/org/freedesktop/Geoclue/Master/client12"
[W] unknown:0 - QMetaMethod::invoke: Unable to handle unregistered datatype 'QGeoPositionInfo'
INFO mod.gui.qt5.qml: keeping screen on
DEBUG mod.gui.qt5.qml: startup values loaded
DEBUG mod.gui.qt5.qml: handling back button display
DEBUG mod.gui.qt5.qml: handling fullscreen state
DEBUG mod.gui.qt5.qml: loading map layers
INFO mod.gui.qt5.qml: layer tree loaded
INFO mod.gui.qt5.qml: layer dict loaded
DEBUG mod.gui.qt5.qml: loading map page
[D] unknown:0 - ItemChildAddedChange
[D] unknown:0 - ItemChildAddedChange
[D] unknown:0 - ItemChildAddedChange
[D] unknown:0 - ItemChildAddedChange
DEBUG mod.gui.qt5.qml: Worker script not yet initialized.
[D] unknown:0 - "" QQuickGridLayoutBase::componentComplete() MapPage_QMLTYPE_69(0x47810f68)
[D] unknown:0 - QQuickGridLayoutBase::updateLayoutItems
[D] unknown:0 - QQuickGridLayoutBase::invalidate()
[D] unknown:0 - QQuickLayout::invalidate(), polish()
[D] unknown:0 - QQuickGridLayoutBase::updateLayoutItems LEAVING
[D] unknown:0 - "" QQuickGridLayoutBase::rearrange() QSizeF(0, 0)
DEBUG mod.gui.qt5.qml: Tile model worker script has been initialized.
DEBUG mod.gui.qt5.qml: Replaying deferred messages to tile model worker script.
DEBUG mod.gui.qt5.qml: Replaying message nr.: 1
INFO mod.gui.qt5.qml: map page: loaded, loading layers
INFO mod.gui.qt5.qml: pinchmap: loading overlay settings for main
INFO mod.gui.qt5.qml: map page: setting map center to: 49.2,16.616667
DEBUG mod.gui.qt5.qml: true
DEBUG mod.gui.qt5.qml: map page loaded
DEBUG mod.gui.qt5.qml: pinchmap: overlay settings for main loaded
Naruszenie ochrony pamięci
Memory protection violation
 

The Following 2 Users Say Thank You to atlochowski For This Useful Post:
Posts: 266 | Thanked: 597 times | Joined on Aug 2011 @ suncity
#1999
Hi MartinK,

it does not seem to work on n900 either because of six.py which tries to access methods (?) that does not available on python2.5: viewkeys = operator.methodcaller("viewkeys").
 

The Following 3 Users Say Thank You to justmemory For This Useful Post:
Reply

Tags
bada rox, martin_rocks, modrana, navigation, openstreetmap, the best, wehasgps

Thread Tools

 
Forum Jump


All times are GMT. The time now is 22:28.