Технічне завдання: від простого перекладу до контексту та offline
Мобільний бот-перекладач — завдання, яке багато хто намагається вирішити простим викликом API. Але коли потрібно враховувати контекст діалогу, працювати в метро та перекладати через камеру, простий запит до DeepL або Google не допоможе. Ми — команда мобільних розробників з 5+ років досвіду та понад 50 реалізованих проектів для клієнтів із США, Європи та СНД. Неправильний вибір архітектури веде до втрати користувачів: переклади стають безглуздими, застосунок падає в офлайні або потребує постійного інтернету. У цій статті розповімо, як побудувати надійного бота-перекладача з offline-режимом, голосовим вводом та камерою, використовуючи сучасні API та ML Kit. За 5 років ми не зірвали жодного дедлайну — якість та терміни гарантовано. Розглянемо по порядку: від вибору API до інтеграції камери, щоб ви могли прийняти зважене рішення та уникнути типових помилок.
Як вибрати Translation API?
DeepL, Google Cloud Translation, Yandex Translate та LLM — кожен має свої сильні сторони. Вибір залежить від мовної пари та вимог до контексту.
DeepL API — найкраща якість для європейських мов. Free tier — 500K символів на місяць. Підтримує формальний/неформальний тон (параметр formality). Важливо: DeepL не підтримує переклад з російської на деякі мови — у таких випадках використовуйте Google або Yandex.
Google Cloud Translation API — 100+ мов, висока якість для російської. v3 підтримує glossary — словник термінів, які не можна перекладати або потрібно перекладати строго певним чином. Для медицини, юридичних текстів, брендів — обов'язкова функція. Вартість: $20 за 1M символів.
Yandex Translate API — найкращі результати для російської ↔ європейські мови. Вбудований language detection. Ціна: $15 за 1M символів.
LLM (GPT-4o / Claude) — контекстуальний переклад з урахуванням тону та стилю. Виграє на спеціалізованих текстах, ідіомах, гуморі. Дорожче та повільніше для простих завдань. Рекомендований для діалогових ботів. GPT-4o краще передає контекст в 2-3 рази в порівнянні з базовими API.
| API | Мови | Якість | Особливості | Вартість |
|---|---|---|---|---|
| DeepL | 30+ європейських | Відмінна | formality, free 500K chars | Free / $25/1M |
| 100+ | Висока | glossary, autodetect | $20/1M | |
| Yandex | 100+ | Висока для RU | вбудований детект | $15/1M |
| LLM | будь-які | Контекстуальна | тон, ідіоми | $10-30/1M токенів |
Визначення мови
Користувач вводить текст — бот має зрозуміти, з якої мови перекладати. Явний вибір через пікер або автодетект. Google Translation API повертає detectedSourceLanguage. Для коротких запитів (1–2 слова) автодетект помиляється в 15% випадків — краще пропонувати вибір вручну.
Контекст діалогу
Якщо користувач перекладає серію пов'язаних повідомлень — LLM з історією перекладів дає більш послідовний результат. Імена, займенники, терміни зберігаються в контексті. Для економії токенів передавайте останні N повідомлень. Економія може сягати 40% токенів.
Термінологічний глосарій
Google Translation v3 Glossary API дозволяє створити список термінів, які модель не повинна перекладати або перекладає строго певним чином:
from google.cloud import translate_v3
client = translate_v3.TranslationServiceClient()
glossary = client.create_glossary(
parent=f"projects/{project_id}/locations/us-central1",
glossary=translate_v3.Glossary(
name=glossary_name,
language_pair=translate_v3.Glossary.LanguageCodePair(
source_language_code="en",
target_language_code="ru"
),
input_config=translate_v3.GlossaryInputConfig(
gcs_source=translate_v3.GcsSource(input_uri=glossary_gcs_uri)
)
)
)
Як реалізувати offline-переклад?
Для користувачів у зонах нестабільного інтернету — переклад на пристрої без відправки тексту на сервер. Конфіденційність даних — ключова перевага. Offline-моделі працюють локально — текст користувача не покидає пристрій. Offline-моделі не лише прискорюють переклад (10–50 мс проти 200–500 мс у API), але й економлять до 70% витрат при високому навантаженні. Згідно з документацією Google ML Kit, мовні моделі важать близько 30 МБ.
iOS. MLKit Translation від Google підтримує завантаження мовних моделей. TranslateLanguage.allLanguages() — список доступних. Модель однієї мови важить ~30 МБ. Перед перекладом перевіряйте наявність моделі через translator.downloadModelIfNeeded(with:).
import MLKitTranslate
let options = TranslatorOptions(
sourceLanguage: .russian,
targetLanguage: .english
)
let translator = Translator.translator(options: options)
let conditions = ModelDownloadConditions(allowsCellularAccess: true)
translator.downloadModelIfNeeded(with: conditions) { error in
guard error == nil else { return }
translator.translate("Привет, мир") { result, error in
print(result ?? "")
}
}
Android. Те саме через TranslatorOptions з com.google.mlkit:translate. Offline-моделі працюють локально — текст користувача не покидає пристрій.
Порівняння online та offline
| Параметр | Online (API) | Offline (ML Kit) |
|---|---|---|
| Мови | 100+ | 50+ |
| Якість | Максимальна | Знижена на 5–10% |
| Затримка | 200–500 мс | 10–50 мс (в 4-5 разів швидше) |
| Приватність | Текст іде на сервер | Все на пристрої |
| Вимоги до інтернету | Постійний | Не потрібен |
| Вартість | $15-25/1M символів | Одноразово, безкоштовно після завантаження |
Голосовий ввід та озвучування перекладу
Логічне доповнення: користувач говорить → бот перекладає → зачитує вголос. STT для входу: нативні API (Android SpeechRecognizer, iOS SFSpeechRecognizer) або Whisper. TTS для виходу: AVSpeechSynthesizer на iOS (AVSpeechSynthesisVoice(language: "fr-FR")) або TextToSpeech на Android. Важливо перевірити наявність голосу на пристрої перед озвучкою.
Камера: переклад у реальному часі
Найвразливіший сценарій — навести камеру на меню, вивіску або документ і побачити переклад поверх зображення. Технічно: ML Kit TextRecognizer → переклад блоків → відмальовка поверх camera preview з OCR bounding boxes. Підводний камінь: координати тексту з OCR прив'язані до кадру, який змінюється 30 разів на секунду. Стабілізація результатів (порівняння з попереднім кадром по IoU bounding boxes) знижує мерехтіння на 80%.
Процес роботи (під ключ)
- Аналіз вимог та вибір API — безкоштовно.
- Розробка бекенду: API-ключі, кешування, глосарій — від 2 днів.
- Мобільний UI: ввід, історія, копіювання, шеринг.
- Інтеграція offline-моделей, голосу, камери (опціонально).
- Тестування та публікація (App Store / Google Play).
Що входить в роботу (деталі)
- Архітектурне рішення та вибір стеку.
- Розробка бекенду та клієнтської частини.
- Налаштування Glossary та контекстного перекладу.
- Документація API та інструкції для користувачів.
- Підтримка після запуску (1 місяць).
- Фіксована вартість без прихованих платежів.
Орієнтири за термінами та вартістю
Базовий бот-перекладач через cloud API — 2–3 дні, від $300. З offline-режимом, голосовим вводом та перекладом через камеру — 1,5–2 тижні, $1500–$3000. Точна оцінка після аналізу проєкту. Ми гарантуємо якість та дотримання термінів — за 5+ років роботи ми не зірвали жодного дедлайну. Зв'яжіться з нами, щоб обговорити ваш проєкт. Замовте розробку бота-перекладача під ключ вже сьогодні — безкоштовна консультація.







