Голосові пакети
This article is incomplete & needs to be reviewed. You can help by creating a pull request.
OsmAnd підтримує два типи голосових пакетів:
- Text-To-Speech (https://developer.android.com/reference/android/speech/tts/TextToSpeech) доступний в магазинах додатків або попередньо встановлений
- Записані голосові пакети, які містять записані голоси.
Якщо ви не знайшли потрібний голосовий пакет, будь ласка, скористайтеся наступними прикладами та створіть власний голосовий пакет. Приклади - https://github.com/osmandapp/OsmAnd-resources/tree/master/voice, німецький пакет de_0.voice.zip, англійський пакет en_0.voice.zip.
Різниця між TTS та записаними пакетами
- двигун Text-To-Speech підтримує вимову назв вулиць, посилань, назв POI
- усі пакети, що підтримуються Text-To-Speech, постачаються та оновлюються разом із додатком
- записаний пакет потрібно встановлювати та оновлювати вручну (хоча файл конфігурації може оновлюватися разом із оновленням додатка)
- записаний пакет може не підтримувати деякі правильні форми, і підтримка обмежена
- записаний пакет не вимагає встановлення будь-якого пропрієтарного двигуна TTS
Структура пакета
Голосовий пакет зазвичай поширюється як .voice.zip, де zip містить одну папку з lang_tts.js (основний файл конфігурації) та звукові файли, якщо вони присутні.
Файли конфігурації написані мовою JavaScript. Усі файли конфігурації за замовчуванням є TTS-пакетами, навіть якщо ще немає TTS для підтримки мови. А пізніше конфігурація розширюється шляхом зіставлення "словникових фраз" з "назвами записаних файлів".
function populateDictionary(tts) {
// ROUTE CALCULATED
dictionary["route_is1"] = tts ? "Die berechnete Strecke ist" : "route_is1.ogg";
dictionary["route_is2"] = tts ? "lang" : "route_is2.ogg";
dictionary["route_calculate"] = tts ? "Route neu berechnet" : "route_calculate.ogg";
dictionary["distance"] = tts ? "die Entfernung beträgt" : "distance.ogg";
// LEFT/RIGHT
dictionary["prepare"] = tts ? "Demnächst " : "prepare.ogg"; // Demnächst sounds better then Vorbereiten zum
dictionary["after"] = tts ? "nach" : "after.ogg";
dictionary["left"] = tts ? "links abbiegen" : "left.ogg";
.....
}
function route_recalc(dist, seconds) {
return dictionary["route_calculate"] + (tts ? ", " : " ") + distance(dist, "nominativ") + (tts ? ", " : " ") + dictionary["time"] + " " + time(seconds) + (tts ? ". " : " ");
}
Створення власного пакета
Будь ласка, перегляньте ресурси проєкту та використовуйте ту саму структуру папок, що й німецький пакет - просто скопіюйте. Після цього ви можете змінити, запустити скрипт генерації та вказати необхідні аргументи. Довідка знаходиться всередині скрипта.
Тестування голосового пакета (Android)
Для тестування можна використовувати:
- Навігацію
- Симуляцію навігації,
- або зручну версію плагіна розробки OsmAnd, який симулює різні голосові команди для тестування.