-
-
Notifications
You must be signed in to change notification settings - Fork 2
uk Translation
SelenaCore використовує Argos Translate для повністю офлайн перекладу між мовою користувача та англомовним внутрішнім ядром.
Внутрішня мова голосового пайплайну — англійська. Це свідоме рішення яке дозволяє:
- Використовувати компактні LLM-промпти для класифікації інтентів (~200 токенів замість 1700+) — локальні моделі 1-3B справляються
- Не перекладати промпти при зміні мови (нуль LLM-викликів)
- Один каталог інтентів/пристроїв/кімнат для всіх мов користувача
- Уникнути плутанини мов та транслітерації від LLM
Маленький офлайн перекладач на краях (після Vosk STT, перед Piper TTS) з'єднує мову користувача з англійським ядром.
Vosk STT → "увімкни світло на кухні"
↓
[InputTranslator] uk→en ~200мс прогрітий
↓
"turn on the light in the kitchen"
↓
IntentRouter (англійський промпт, англ. LLM, англ. інтенти)
↓
result.response = "Turning on the kitchen light."
↓
[OutputTranslator] en→uk ~200мс прогрітий
↓
"Вмикаю світло на кухні."
↓
preprocess_for_tts (числа → українські слова, нижній регістр)
↓
Piper TTS → аудіо
Якщо translation.enabled=false або модель не встановлена — обидва
перекладачі повертають текст без змін, і система працює як одномовний
помічник.
| Параметр | Значення |
|---|---|
| Бібліотека | argostranslate>=1.9.0 |
| Моделі | Pre-compiled, ~50–100 МБ на пару |
| Ліцензія | MIT (бібліотека) + CC0 (моделі) |
| Офлайн | Так — повністю локально після встановлення |
| Мови | 49 підтримуваних (EN ↔ UK, RU, DE, FR, ES, PL, …) |
| Швидкість (warm) | 200–900 мс на речення на Pi 5 |
| RAM | ~300 МБ на завантажену пару |
Моделі зберігаються в ~/.local/share/argos-translate/packages/ та
завантажуються лінько при першому використанні.
Всі endpoint'и під /api/ui/setup/translate/.
{
"enabled": true,
"fallback_to_llm": true,
"active_lang": "uk",
"input_available": true,
"output_available": true
}Повертає повний список мовних пар (49 елементів) з статусом встановлено / активна:
{
"models": [
{
"id": "argos-uk-en",
"lang_code": "uk",
"lang_name": "Ukrainian",
"input_installed": true,
"input_version": "1.9",
"output_installed": true,
"output_version": "1.4",
"installed": true,
"active": true
}
]
}{ "lang": "uk" }Завантажує обидва напрямки (uk→en + en→uk) і автоматично активує
мову якщо це перша встановлена пара.
Опитується UI під час завантаження:
{
"active": true,
"package": "uk→en",
"progress": 70.0,
"error": "",
"done": false
}{ "lang": "uk" }Видаляє обидва напрямки пари. Активну пару видалити не можна.
{ "enabled": true, "fallback_to_llm": true }config/core.yaml:
translation:
enabled: false # Встановити в true після інсталяції пари
active_lang: "" # напр. "uk" — встановлюється автоматично
fallback_to_llm: true # Використовувати core.llm.translate коли
# локальна модель недоступнаНалаштування → Голос та AI → таб Переклад. Кожна мовна пара показує:
- Бейджі якості / розміру
-
Direction badges:
uk→enтаen→uk(зелений якщо встановлено) - Дії Встановити / Активувати / Видалити
- Прогрес-бар завантаження з відсотками в реальному часі
Дві нові події з'являються в живому лозі дебагу:
-
translate_in— викликається відразу після Vosk STT, перед IntentRouter -
translate_out— викликається відразу після IntentRouter, перед Piper TTS
Кожна несе:
{
"event": "translate_in",
"from": "увімкни світло",
"to": "turn on the light",
"lang": "uk",
"ms": 318,
"msg": "🔄 uk→en (318ms): увімкни світло → turn on the light"
}Використовуйте їх щоб бачити затримку перекладу, помилки чи мовні неспівпадіння наскрізно.
Обидва перекладачі замикаються накоротко (повертають текст без змін, ~0 мс) коли:
- Текст вже ASCII (ймовірно англійський)
-
source_lang == "en"для входу /target_lang == "en"для виходу - Модель не встановлена
translation.enabled = false
Це означає що Pi з англомовним Vosk + англомовним голосом Piper не платить нічого за переклад навіть з встановленою парою.
Якість Argos Translate UK↔EN добра для коротких команд розумного дому
(увімкни/вимкни, встановити температуру, запит погоди). Це не
загального призначення перекладач для довгого або художнього тексту.
Для двозначного або спеціалізованого словника LLM fallback
(fallback_to_llm: true) бере на себе через core.llm.translate.
- Відкрити Налаштування → Голос та AI → Переклад
- Знайти мову в каталозі (відсортований за алфавітом)
- Натиснути Встановити — обидва напрямки завантажаться (~100–200 МБ)
- Натиснути Активувати — переклад тепер увімкнено для цієї мови
- Встановити Vosk STT на цю мову та голос Piper на цю мову
- Перевірити через Test Console — події
translate_inтаtranslate_outмають з'явитись в Live Monitor
Чому англійське внутрішнє ядро?
- Локальні LLM (qwen2.5:3b, phi3:mini, gemma2:2b) натреновані переважно на англійській. Не-англійський JSON вивід ненадійний.
- Компактний intent промпт (~200 токенів) поміщається в контекстне вікно 2K малих моделей без обрізання.
- Єдине джерело правди: назви пристроїв, інтенти, локації живуть
англійською в registry (
meta.name_en,meta.location_en). - Вартість перекладу (200–900 мс warm) амортизується по всьому пайплайну — невелика ціна за стабільну поведінку LLM.
Чому не завжди перекладати через LLM?
- LLM переклад повільний (1–3 с на виклик) і залежить від моделі.
- Argos Translate спеціально створений — швидший, послідовніший, повністю офлайн, не впливає на token budget класифікації інтентів.
🤖 This wiki is auto-synced from docs/ in the main repo. Hand-edits on the wiki UI get overwritten on the next push. Open a PR against the main repo instead.
MIT License · Sponsor · Ko-fi
SelenaCore
🇬🇧 English
Getting started
Architecture
Voice & translation
Hardware integration
Development
- Modules overview
- Module development
- System module development
- Module API guide
- Module bus protocol
- Widget development
- User manager / auth
Reference
🇺🇦 Українська
Початок
Архітектура
Голос і переклад
Інтеграція заліза
Розробка
- Розробка модулів
- Розробка системних модулів
- Module API
- Module bus
- Widget development
- User manager / auth
Довідник