TIXO — ambient scenes и music player
Приложение для релакса и ambience: сцены (видео-фоны), встроенный музыкальный плеер и таймер сессии.
Google PlayMedia playbackSession timerUI/UX
Work Time — трекинг смен и расчёты
Приложение для учёта рабочих смен: календарь, история, расчёт часов и калькуляторы, связанные с оплатой.
KotlinJetpack ComposeMVVMCoroutinesFlow
- Ввод смен (start/end/break) с автоматическим расчётом часов
- Месячный календарь и редактирование записей
- Калькуляторы (net/gross), настройки, профиль и встроенная справка
Nobel Tower — система управления обслуживанием здания
Экосистема для управления заявками и плановым обслуживанием в офисном здании: прозрачность процессов для арендаторов, техников и администратора.
QR navigationRequest workflowPhoto/Video evidencePDF protocolsNotifications
- QR-идентификация помещений и оборудования + история объекта
- Заявки со статусами, фото/видео-фиксацией и подписью арендатора
- PDF-протоколы/отчётность и админ-панель
- Плановое обслуживание: календарь, напоминания, push/email
local-meet-translator
Self-hosted прототип для почти-реального времени перевода веб-созвонов (Google Meet / Zoom Web / Teams Web).
Chrome/Edge Extension (MV3)Java 21 Local BridgeOpenAI STT & TTSlocalhost token
Ключ OpenAI не хранится в расширении: все запросы идут через localhost bridge-сервис, защищённый токеном.
Подробнее
Ключевая идея
- OpenAI API-ключ хранится только локально (.env на ПК).
- Расширение использует только локальный токен (X-Auth-Token), а не ключ OpenAI.
Технологический стек
- Extension: JavaScript/HTML/CSS, Chrome Extensions MV3 (tabCapture, getUserMedia, offscreen, content_script).
- Local Bridge: Java 21, HttpServer/HttpClient (JDK), Jackson, Maven (shade-plugin), запуск PowerShell/Batch.
Входящий перевод (субтитры)
- tabCapture → MediaRecorder чанки (OGG/Opus предпочтительно).
- POST /transcribe-and-translate → OpenAI STT (whisper-1) → перевод через /v1/responses (gpt-4o-mini, temperature=0).
- Отображение перевода поверх страницы звонка (content_script overlay).
Исходящий голосовой перевод (TTS)
- getUserMedia микрофона → чанки → распознавание/перевод.
- POST /tts → OpenAI TTS (/v1/audio/speech, gpt-4o-mini-tts, mp3).
- Воспроизведение в виртуальный аудиокабель (например VB-Audio Virtual Cable), чтобы Meet использовал это как микрофон.
Защиты
- VAD/порог тишины (RMS): тишина не отправляется на распознавание.
- Mute mic during TTS: во время проигрывания TTS микрофонные чанки игнорируются.
- Дедупликация текста: похожие результаты в коротком окне пропускаются.
Локальный API (127.0.0.1)
- Требуется X-Auth-Token == LOCAL_MEET_TRANSLATOR_TOKEN.
- GET /health, POST /translate-text, POST /transcribe-and-translate, POST /tts (ENABLE_TTS=true).
Конфигурация (env)
- OPENAI_API_KEY, LOCAL_MEET_TRANSLATOR_PORT (8799), LOCAL_MEET_TRANSLATOR_TOKEN.
- OPENAI_TRANSCRIBE_MODEL (whisper-1), OPENAI_TEXT_MODEL (gpt-4o-mini).
- ENABLE_TTS, OPENAI_TTS_MODEL (gpt-4o-mini-tts).