Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Added text to speech instructions #171

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a better way to name this?

name = "Name"
token = "Token"

Expand Down
2 changes: 1 addition & 1 deletion content/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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() }}
76 changes: 76 additions & 0 deletions content/faq/index.md
Original file line number Diff line number Diff line change
@@ -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

| | | |
| ----------- | ----------- | ----------- |
| <img src='/images/screenshots/tts_config_1.jpg' width='400' alt='Screenshot 1'> | <img src='/images/screenshots/tts_config_2.jpg' width='400' alt='Screenshot 2'> | <img src='/images/screenshots/tts_config_3.jpg' width='400' alt='Screenshot 3'> |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These alt tags are not useful at all. Please a more descriptive text.


## 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 <ins>without Google Play services and Speech Services by Google</ins>, 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

meenbeese marked this conversation as resolved.
Show resolved Hide resolved
- 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.*
Binary file added static/images/screenshots/tts_config_1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/screenshots/tts_config_2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/screenshots/tts_config_3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
91 changes: 91 additions & 0 deletions templates/shortcodes/tts_table.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
<p id="tts-table" />

{{ trans(key='const_lang', lang=lang) }} | &emsp; {{ trans(key='engines', lang=lang) }}
:------------------|:----------------------------------------------------------
Afrikaans | &emsp; eSpeak
Albanian | &emsp; RHVoice, eSpeak
Arabic | &emsp; Vocalizer, Acapela, Nuance
Aragonese | &emsp; eSpeak
Armenian | &emsp; eSpeak
Basque | &emsp; Vocalizer, Nuance
Bengal | &emsp; Vocalizer, Google, Nuance
Bhojpuri | &emsp; Vocalizer, Nuance
Bulgarian | &emsp; Vocalizer, Nuance, eSpeak
Cantonese | &emsp; Vocalizer, Google, Nuance, eSpeak
Catalan | &emsp; Vocalizer, Acapela, Nuance, eSpeak
Croatian | &emsp; Vocalizer, Nuance, eSpeak
Czech | &emsp; Vocalizer, Acapela, Nuance, eSpeak
Danish | &emsp; Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak
Dongbei | &emsp; Vocalizer
Dutch (BE) | &emsp; Vocalizer, Nuance
Dutch (NL) | &emsp; Vocalizer, Google, Acapela, Ivona, Nuance
English (AU) | &emsp; Vocalizer, Google, Acapela, Nuance, RHVoice
English (IE) | &emsp; Vocalizer, Nuance
English (IN) | &emsp; Vocalizer, Google, Acapela, Nuance
English (SCT) | &emsp; Vocalizer, Nuance, RHVoice
English (UK) | &emsp; Vocalizer, Google, Acapela, Yandex, RHVoice, eSpeak
English (US) | &emsp; Vocalizer, Google, Acapela, Ivona, Yandex, Nuance, RHVoice, eSpeak
English (ZA) | &emsp; Vocalizer, Nuance
Esperanto | &emsp; RHVoice, eSpeak
Estonian | &emsp; eSpeak
Faroese | &emsp; Acapela
Farsi | &emsp; Vocalizer, Nuance, eSpeak
Finnish | &emsp; Vocalizer, Google, Acapela, Nuance, eSpeak
French (BE) | &emsp; Vocalizer
French (CA) | &emsp; Vocalizer, Nuance
French (FR) | &emsp; Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak
Galician | &emsp; Vocalizer, Nuance
Georgian | &emsp; RHVoice, eSpeak
German | &emsp; Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak
Greek | &emsp; Vocalizer, Acapela, Nuance, eSpeak
Hebrew | &emsp; Vocalizer, Nuance
Hindi | &emsp; Vocalizer, Nuance, eSpeak
Hungarian | &emsp; Vocalizer, Google, Nuance, eSpeak
Icelandic | &emsp; eSpeak
Indonesian | &emsp; Vocalizer, Google, Nuance, eSpeak
Irish | &emsp; eSpeak
Italian | &emsp; Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak
Japanese | &emsp; Vocalizer, Google, Acapela, Nuance
Kannada | &emsp; Vocalizer, Nuance, eSpeak
Korean | &emsp; Vocalizer, Google, Acapela, Nuance
Kurdish | &emsp; eSpeak
Kyrgyz | &emsp; RHVoice
Latvian | &emsp; eSpeak
Lithuanian | &emsp; eSpeak
Lojban | &emsp; eSpeak
Macedonian | &emsp; RHVoice, eSpeak
Malay | &emsp; Vocalizer, Nuance, eSpeak
Malayalam | &emsp; eSpeak
Mandarin (CN) | &emsp; Vocalizer, Acapela, eSpeak
Mandarin (TW) | &emsp; Vocalizer, Google, Nuance
Marathi | &emsp; Vocalizer, Nuance
Nepalese | &emsp; eSpeak
Norwegian | &emsp; Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak
Polish | &emsp; Vocalizer, Google, Acapela, Ivona, Nuance, RHVoice, eSpeak
Portuguese (BR) | &emsp; Vocalizer, RHVoice
Portuguese (PT) | &emsp; Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak
Punjabi | &emsp; eSpeak
Romanian | &emsp; Vocalizer, Ivona, Nuance, eSpeak
Russian | &emsp; Vocalizer, Google, Acapela, Ivona, Yandex, RHVoice, eSpeak
Serbian | &emsp; eSpeak
Shaanxi | &emsp; Vocalizer
Shanghainese | &emsp; Vocalizer
Sichuanese | &emsp; Vocalizer
Slovak | &emsp; Vocalizer, Nuance, eSpeak
Slovenian | &emsp; Vocalizer
Spanish (AR) | &emsp; Vocalizer, Nuance
Spanish (CL) | &emsp; Vocalizer, Nuance
Spanish (CO) | &emsp; Vocalizer
Spanish (ES) | &emsp; Vocalizer, Google, Acapela, Ivona, Nuance, eSpeak
Spanish (MX) | &emsp; Vocalizer
Swahili | &emsp; eSpeak
Swedish | &emsp; Vocalizer, Ivona, Nuance, eSpeak
Tamil | &emsp; Vocalizer, Nuance, eSpeak
Telugu | &emsp; Vocalizer
Tatar | &emsp; RHVoice
Thai | &emsp; Vocalizer, Google, Nuance
Turkish | &emsp; Vocalizer, Google, Acapela, Ivona, Yandex, Nuance, eSpeak
Ukrainian | &emsp; Vocalizer, Nuance, RHVoice
Valencian | &emsp; Vocalizer
Vietnamese | &emsp; Vocalizer, Nuance, eSpeak
Welsh | &emsp; eSpeak
3 changes: 2 additions & 1 deletion templates/top_menu.html
Original file line number Diff line number Diff line change
Expand Up @@ -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 %}
Expand Down