R1HIM
Developer

Проекты

Меня зовут Олег Рахимов (R1HIM). Здесь — мои проекты, материалы (видео/скриншоты/PDF) и контакты.

TIXO — ambient scenes и music player

Приложение для релакса и ambience: сцены (видео-фоны), встроенный музыкальный плеер и таймер сессии.

Google PlayMedia playbackSession timerUI/UX

Work Time — трекинг смен и расчёты

Приложение для учёта рабочих смен: календарь, история, расчёт часов и калькуляторы, связанные с оплатой.

KotlinJetpack ComposeMVVMCoroutinesFlow
  • Ввод смен (start/end/break) с автоматическим расчётом часов
  • Месячный календарь и редактирование записей
  • Калькуляторы (net/gross), настройки, профиль и встроенная справка
Work Time preview

Nobel Tower — система управления обслуживанием здания

Экосистема для управления заявками и плановым обслуживанием в офисном здании: прозрачность процессов для арендаторов, техников и администратора.

QR navigationRequest workflowPhoto/Video evidencePDF protocolsNotifications
  • QR-идентификация помещений и оборудования + история объекта
  • Заявки со статусами, фото/видео-фиксацией и подписью арендатора
  • PDF-протоколы/отчётность и админ-панель
  • Плановое обслуживание: календарь, напоминания, push/email
Nobel Tower preview

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).