# Lyngvo — AI Pronunciation Trainer (Italian) MVP ## Концепция Веб-приложение для тренировки итальянского произношения: 1. Пользователь вводит текст (слово/фразу) 2. Приложение синтезирует эталон (TTS) 3. Пользователь записывает свой голос (MediaRecorder) 4. Приложение транскрибирует запись (Whisper), сравнивает с оригиналом 5. Показывает: similarity score, выделяет пропущенные/лишние слова 6. Воспроизводит target → пауза → user (stereo опционально) ## Tech stack (утверждён) - **Frontend:** HTML + JS (чистый, без React) - **Audio:** Web Audio API, MediaRecorder API - **TTS:** Web Speech API (`speechSynthesis`) — бесплатно, итальянский голос есть - **STT:** требуется внешний Whisper API (aillm.ru не поддерживает) - **Бэкенд:** отсутствует (MVP — только статика) - **DevOps:** minikube / k8s кластер `5.172.178.213`, nginx-ingress ## Что уже сделано - DNS: `lang.kube5s.ru` A → `5.172.178.213` - Проект будет в отдельной репе (пока не создана) - Модель aillm.ru: `gpt-oss-120b` — только текст, STT/TTS не поддерживаются ## Что делать 1. Создать репу (локально `/home/naeel/lyngvo/` + Gitea на ВМ) 2. Развернуть HTML-приложение в кластере (nginx-pod + ingress) 3. Реализовать UI: поле ввода, кнопки Generate / Play TTS / Record / Compare 4. TTS через Web Speech API 5. Запись через MediaRecorder → blob → отправить на Whisper API 6. Сравнение текстов (similarity score, highlight diff) 7. Playback: target → 300-800ms пауза → user 8. Опционально: stereo (left=target, right=user) 9. Настроить HTTPS для `lang.kube5s.ru` (cert-manager / Let's Encrypt) ## Контакты/доступ - ВМ: `naeel@5.172.178.213` ключ `~/.ssh/naeel_vm_id_ed25519` - Кластер: kubectl (там же на ВМ) - S3: `sless-functions` на `s3.msk-1.ngcloud.ru` - AI ключ: `sk-ucI5YvOticoOQ9Kuj5K9mQ` (aillm.ru, только текст)