Розробка мобільного додатка для вивчення мов
Додаток для вивчення мов — один із найтехнічно насичених форматів edtech. Тут сходяться: алгоритм інтервального повторення, синтез та розпізнавання мовлення, офлайн-режим із великими базами контенту та геймифікація, яка повинна працювати без відчуття дешевизни. Duolingo витратив роки на калібровку цих систем — клієнт, який хоче «як Duolingo», повинен розуміти масштаб завдання.
Алгоритм повторень: SM-2 або власна реалізація
Основа будь-якого словникового тренажера — спейсд репетишн. Класичний SM-2 працює: карточка оцінюється від 0 до 5, наступне появлення розраховується за формулою I(n) = I(n-1) * EF, де EF — коефіцієнт легкості. Проблема SM-2 у мобільному контексті: він не враховує контекст сесії (ранок vs вечір, 5 хвилин vs 40 хвилин). Anki використовує модифікований SM-2 з адаптивним кроком — для серйозного додатка варто дивитись у бік FSRS (Free Spaced Repetition Scheduler), який показує кращий retention rate на великих датасетах.
База карточок зберігається локально у SQLite (Room на Android, Core Data або GRDB на iOS). Синхронізація з сервером — через дельта-оновлення, не повна перезагрузка. При 10 000 карточок у базі повна перезагрузка по 3G вбиває UX.
Розпізнавання вимови
Це найбільш болючий компонент. Вбудований SFSpeechRecognizer (iOS) розпізнає мовлення, але не оцінює вимову — просто переводить аудіо в текст. Для оцінки вимови потрібен фонемний аналіз.
Варіанти:
-
Azure Pronunciation Assessment — видає accuracy score, fluency score, completeness score по кожному фонему. Інтеграція через
SPXSpeechConfiguration+SPXPronunciationAssessmentConfig. Добре працює для європейських мов. -
Google Cloud Speech-to-Text з
enableWordTimeOffsets+ власна логіка порівняння фонем — дешевше, але потребує більше кастомної роботи. - On-device через CMU Sphinx / Vosk — підходить для офлайну, але точність помітно нижча.
Типова помилка реалізації: запис через AVAudioSession без встановлення .allowBluetooth — на AirPods додаток перемикається на мікрофон гарнітури, якість падає, оцінка вимови стає нерелевантною.
Офлайн та розмір контенту
Додаток для вивчення мов не може вимагати постійного інтернету. Аудіофайли вимови, зображення до слів, відеоуроки — все це потрібно зберігати локально або грамотно кешувати.
Стратегія: текстовий контент та карточки — у SQLite (10–50 МБ для курсу), аудіо — ліниве завантаження при першому відтворенні з подальшим кешуванням у Caches директорії, відео — опціональне завантаження за запитом користувача. Примусово завантажувати все при встановленні — помилка, яка призводить до видалень через займане місце.
На Android потрібно явно обробляти onLowMemory та очищувати аудіокеш за LRU-політикою. Інакше через місяць активного використання додаток займає 2 ГБ.
Геймифікація без Skinner box
Стрики, XP, ліги — все це працює на retention, але тільки якщо не перетворюється на маніпуляцію. Механіка streak freeze (заморозка серії) знижує тривожність користувача та насправді збільшує довгострокове утримання. Технічно: стрик зберігається на сервері з урахуванням часового поясу користувача — без цього користувачи в UTC+12 втрачають стрик в полудень UTC.
Leaderboards реалізуються через партиційовані тижневі таблиці — глобальний рейтинг з мільйона користувачів розраховувати в реальному часі неможливо.
Процес впровадження
Старт — з визначення мовних пар та типів вправ (переклад, аудіювання, говоріння, граматика). Це одразу визначає архітектуру бази контенту.
Етапи: проектування алгоритму повторень → offline-first архітектура даних → UI компонентів вправ → інтеграція speech API → геймифікація → тестування на цільових мовних парах.
Фінальний етап — A/B тестування порядку вправ: правильна послідовність впливає на retention сильніше, ніж будь-який дизайн.
Часові орієнтири
MVP з однією мовною парою, карточками та базовим TTS — 6–8 тижнів. Повнофункціональний додаток з вимовою, граматичними вправами, геймифікацією та офлайн-режимом — 4–6 місяців.







