diff --git a/config.toml b/config.toml index f09b9398..5006a3d1 100644 --- a/config.toml +++ b/config.toml @@ -30,11 +30,13 @@ stripe = "https://donate.organicmaps.app/" address = "Address" back = "Back to News" contact = "Contact Us" +engines = "Supported TTS Engines" install-appgallery = "Install Organic Maps from Huawei AppGallery" install-appstore = "Install Organic Maps from the AppStore" install-googleplay = "Install Organic Maps from Google Play" install-fdroid="Install Organic Maps from F-Droid" language = "English" +const_lang = "Language" name = "Name" token = "Token" diff --git a/content/_index.md b/content/_index.md index 496f69fc..3e91447e 100644 --- a/content/_index.md +++ b/content/_index.md @@ -110,4 +110,4 @@ Organic Maps is an [open-source software][github] licensed under the Apache Lice [fork]: https://en.wikipedia.org/wiki/Fork_(software_development) -{{ references() }} +{{ references() }} \ No newline at end of file diff --git a/content/faq/index.md b/content/faq/index.md new file mode 100644 index 00000000..210d33d5 --- /dev/null +++ b/content/faq/index.md @@ -0,0 +1,76 @@ +--- +title: Text-to-Speech on Android +description: Guide on how to make TTS work on Android +weight: 100 +extra: + menu_title: FAQ +--- + +TLDR: + +Organic Maps uses the system text-to-speech (TTS) engine for voice instructions. The default engines vary by device. The choices can include Google Text-to Speech, device manufacturer's engine or a third-party one. + +The official recommendation from Organic Maps is [RHVoice](https://rhvoice.org/), which is a free and open source speech engine that can be downloaded from [Google Play](https://play.google.com/store/apps/details?id=com.github.olga_yakovleva.rhvoice.android) and [F-Droid](https://f-droid.org/en/packages/com.github.olga_yakovleva.rhvoice.android/). + +## Instructions + +- Open the Settings app on your Android device. +- Select Additional Settings and then select Accessibility. +- Choose your preferred engine, speech rate and pitch. + +If you cannot find the relevant setting, open the settings app and search for Text-to-speech. + +P.S: Do note that these steps will vary based on the phone brand you are using. + +Said options may not appear if you don't have a TTS already installed on your device. Please refer to the table below to install any one of them that supports your native language. + +## Screenshots + +| | | | +| ----------- | ----------- | ----------- | +| Screenshot 1 | Screenshot 2 | Screenshot 3 | + +## Engines + +Below is a comprehensive list showing several engines and the languages they support (download links can be found after the table): + +{{ tts_table() }} + +## Downloads + +- [Acapela Voices TTS](https://play.google.com/store/apps/details?id=com.acapelagroup.android.tts) +- [Amazon Ivona TTS](https://apkpure.com/ivona-text-to-speech-hq/com.ivona.tts/download) +- [eSpeak TTS](https://f-droid.org/en/packages/com.reecedunn.espeak/) +- [Google Speech Services](https://play.google.com/store/apps/details?id=com.google.android.tts) +- [RHVoice TTS (Recommended)](https://play.google.com/store/apps/details?id=com.github.olga_yakovleva.rhvoice.android) +- [Vocalizer (Code Factory)](https://play.google.com/store/apps/details?id=es.codefactory.vocalizertts) +- [Vocalizer 2 (Nuance)](https://nvda.ru/sintezatory-rechi-vocalizer-expressive2-dlja-nvda#) +- [Yandex SpeechKit TTS](https://4pda.to/forum/index.php?showtopic=200728&st=4200#download) + +## Workarounds + +If you’re having trouble initializing the RHVoice TTS engine on LineageOS or other custom ROMs, try this workaround. RHVoice may not initialize properly and the app may crash, especially if you haven’t used any TTS engine on your phone before (e.g., new installation, factory reset, etc.). If you’re using a custom ROM like LineageOS without Google Play services and Speech Services by Google, and you want to use RHVoice as your preferred TTS engine, follow the instructions below as a workaround: + +- Install the [eSpeak TTS engine](https://f-droid.org/en/packages/com.reecedunn.espeak) available on F-Droid + +- Set it as the preferred system engine + + - Go to LineageOS main **Settings**. + + - Scroll down to **Accessibility**. + + - Select **text-to-speech output** and **Preferred engine** (left side) and make sure **eSpeak** is selected. + +- Go back and press **play** to see if it is working + +- Install [RHVoice](https://f-droid.org/en/packages/com.github.olga_yakovleva.rhvoice.android/) available on F-droid. + + - Open it, select the language you want to use, tap on the cloud icon (far left) to download voices. + + - Press play button to verify if it is working + +- Set **RHVoice** as preferred engine (see step 2) + +- Now, you should be able to use RHVoice without any problems + +*In order to hear voice instructions you have to actually start a navigation to receive any voice output, Organic Maps will not give you any voice instructions while you're standing still.* diff --git a/static/images/screenshots/tts_config_1.jpg b/static/images/screenshots/tts_config_1.jpg new file mode 100644 index 00000000..0cd45591 Binary files /dev/null and b/static/images/screenshots/tts_config_1.jpg differ diff --git a/static/images/screenshots/tts_config_2.jpg b/static/images/screenshots/tts_config_2.jpg new file mode 100644 index 00000000..1226f9e0 Binary files /dev/null and b/static/images/screenshots/tts_config_2.jpg differ diff --git a/static/images/screenshots/tts_config_3.jpg b/static/images/screenshots/tts_config_3.jpg new file mode 100644 index 00000000..219a2929 Binary files /dev/null and b/static/images/screenshots/tts_config_3.jpg differ diff --git a/templates/shortcodes/tts_table.md b/templates/shortcodes/tts_table.md new file mode 100644 index 00000000..c17ff72f --- /dev/null +++ b/templates/shortcodes/tts_table.md @@ -0,0 +1,91 @@ +

+ +{{ trans(key='const_lang', lang=lang) }} |   {{ trans(key='engines', lang=lang) }} +:------------------|:---------------------------------------------------------- +Afrikaans |   eSpeak +Albanian |   RHVoice, eSpeak +Arabic |   Vocalizer, Acapela, Nuance +Aragonese |   eSpeak +Armenian |   eSpeak +Basque |   Vocalizer, Nuance +Bengal |   Vocalizer, Google, Nuance +Bhojpuri |   Vocalizer, Nuance +Bulgarian |   Vocalizer, Nuance, eSpeak +Cantonese |   Vocalizer, Google, Nuance, eSpeak +Catalan |   Vocalizer, Acapela, Nuance, eSpeak +Croatian |   Vocalizer, Nuance, eSpeak +Czech |   Vocalizer, Acapela, Nuance, eSpeak +Danish |   Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak +Dongbei |   Vocalizer +Dutch (BE) |   Vocalizer, Nuance +Dutch (NL) |   Vocalizer, Google, Acapela, Ivona, Nuance +English (AU) |   Vocalizer, Google, Acapela, Nuance, RHVoice +English (IE) |   Vocalizer, Nuance +English (IN) |   Vocalizer, Google, Acapela, Nuance +English (SCT) |   Vocalizer, Nuance, RHVoice +English (UK) |   Vocalizer, Google, Acapela, Yandex, RHVoice, eSpeak +English (US) |   Vocalizer, Google, Acapela, Ivona, Yandex, Nuance, RHVoice, eSpeak +English (ZA) |   Vocalizer, Nuance +Esperanto |   RHVoice, eSpeak +Estonian |   eSpeak +Faroese |   Acapela +Farsi |   Vocalizer, Nuance, eSpeak +Finnish |   Vocalizer, Google, Acapela, Nuance, eSpeak +French (BE) |   Vocalizer +French (CA) |   Vocalizer, Nuance +French (FR) |   Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak +Galician |   Vocalizer, Nuance +Georgian |   RHVoice, eSpeak +German |   Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak +Greek |   Vocalizer, Acapela, Nuance, eSpeak +Hebrew |   Vocalizer, Nuance +Hindi |   Vocalizer, Nuance, eSpeak +Hungarian |   Vocalizer, Google, Nuance, eSpeak +Icelandic |   eSpeak +Indonesian |   Vocalizer, Google, Nuance, eSpeak +Irish |   eSpeak +Italian |   Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak +Japanese |   Vocalizer, Google, Acapela, Nuance +Kannada |   Vocalizer, Nuance, eSpeak +Korean |   Vocalizer, Google, Acapela, Nuance +Kurdish |   eSpeak +Kyrgyz |   RHVoice +Latvian |   eSpeak +Lithuanian |   eSpeak +Lojban |   eSpeak +Macedonian |   RHVoice, eSpeak +Malay |   Vocalizer, Nuance, eSpeak +Malayalam |   eSpeak +Mandarin (CN) |   Vocalizer, Acapela, eSpeak +Mandarin (TW) |   Vocalizer, Google, Nuance +Marathi |   Vocalizer, Nuance +Nepalese |   eSpeak +Norwegian |   Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak +Polish |   Vocalizer, Google, Acapela, Ivona, Nuance, RHVoice, eSpeak +Portuguese (BR) |   Vocalizer, RHVoice +Portuguese (PT) |   Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak +Punjabi |   eSpeak +Romanian |   Vocalizer, Ivona, Nuance, eSpeak +Russian |   Vocalizer, Google, Acapela, Ivona, Yandex, RHVoice, eSpeak +Serbian |   eSpeak +Shaanxi |   Vocalizer +Shanghainese |   Vocalizer +Sichuanese |   Vocalizer +Slovak |   Vocalizer, Nuance, eSpeak +Slovenian |   Vocalizer +Spanish (AR) |   Vocalizer, Nuance +Spanish (CL) |   Vocalizer, Nuance +Spanish (CO) |   Vocalizer +Spanish (ES) |   Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak +Spanish (MX) |   Vocalizer +Swahili |   eSpeak +Swedish |   Vocalizer, Ivona, Nuance, eSpeak +Tamil |   Vocalizer, Nuance, eSpeak +Telugu |   Vocalizer +Tatar |   RHVoice +Thai |   Vocalizer, Google, Nuance +Turkish |   Vocalizer, Google, Acapela, Ivona, Yandex, Nuance, eSpeak +Ukrainian |   Vocalizer, Nuance, RHVoice +Valencian |   Vocalizer +Vietnamese |   Vocalizer, Nuance, eSpeak +Welsh |   eSpeak diff --git a/templates/top_menu.html b/templates/top_menu.html index ab9ae6fa..8c4603e3 100644 --- a/templates/top_menu.html +++ b/templates/top_menu.html @@ -8,7 +8,8 @@ {% for page in [ get_section(path="news/_index.md"), get_page(path="donate/index.md"), - get_page(path="support-us/index.md") + get_page(path="support-us/index.md"), + get_page(path="faq/index.md") ] %} {% set translated = page.translations | filter(attribute='lang', value=lang) | first %} {% if translated %}