Владимир Сыркин syrkinairina
Разработка мобильных и настольных приложений.
Рейтинг
112
№ 16 230 в каталоге
Отзывы
0
Профессионализм
-/10
Коммуникация
- /10
Город
Москва
Опыт работы
11 месяцев
На сайте с
2024 года

AudioTranslate — офлайн-расшифровка и перевод аудиозаписей на Windows для операторов раций и работы с архивами записей без облачных сервисов.

Описание

Клиент работает с архивом аудиозаписей с радиопереговоров и сканера (диапазон около 418–462 МГц): короткие фрагменты эфира, шум, помехи, разные языки. Ручная расшифровка занимала много времени, а облачные сервисы (Google, Yandex и т.п.) не подходили — записи конфиденциальны, интернет на рабочем месте нестабилен или отсутствует, нельзя отправлять данные на сторонние серверы.

Задача клиента: автоматизировать путь «аудиофайл → текст → перевод на нужный язык» на локальном Windows-ПК, без облака и подписок, с простым интерфейсом для оператора без навыков программирования.

Цель: сократить время обработки записей, получать читаемый текст и перевод для анализа, архивации и отчётности; обрабатывать как отдельные файлы, так и целые папки; сохранять результат в TXT и JSON.

Ключевые требования:

Полностью локальная работа — распознавание и перевод на машине клиента, без передачи аудио в интернет.
Качество на «радио»-записях — шум, статика, обрывки фраз; меньше «галлюцинаций» Whisper на бессмысленном сигнале.
Многоязычность — автоопределение языка и перевод на выбранный (английский, русский и др.).
Пакетная обработка — папка с десятками/сотнями файлов за один запуск.
Переносимость — установка на другой ПК (USB, архив), минимум ручных шагов (install.bat, ZAPUSK.bat).
Ограничения железа — типичный ПК с Windows 10/11, желательно NVIDIA GPU для Whisper; перевод на CPU при нехватке VRAM.
Техническое решение под цель:

Распознавание: Whisper (large-v3) через whisper-faster; режим «Рация» с порогами VAD, фильтрацией сегментов и промптами под радиосвязь.
Перевод: Ollama + Gemma 3 12B локально; запасной офлайн-канал (NLLB/Marian), если Ollama недоступна.
Интерфейс: десктопное приложение (CustomTkinter): выбор файла/папки, язык записи и перевода, статус, сохранение.
Сборка: дистрибутив с моделями (~25 ГБ), скрипты упаковки и установки, учёт проблем Windows (пути без кириллицы, стабильность whisper-faster).
Ожидаемый результат для клиента: оператор выбирает запись или папку, нажимает «Обработать» и получает расшифровку с переводом в output/transcripts/ — без облака, под контролем данных и с учётом специфики радиозаписей.

Решение

1. Анализ и архитектура
Разобрал рабочий процесс клиента: одиночные файлы и папки с записями сканера, требования к конфиденциальности и офлайн-режиму. Спроектировал модульное приложение на Python: core (логика), gui (интерфейс), config (настройки), vendor (Whisper и Ollama). Цепочка: аудио → транскрипт → перевод → сохранение в output/transcripts/.

2. Распознавание речи (Whisper)
Подключил whisper-faster с моделью large-v3. Реализовал модуль transcriber.py: запуск через subprocess, парсинг JSON/TXT, определение языка, оценка уверенности по сегментам.

Для радиозаписей добавил режим «Рация (462 МГц)»: повышенные пороги VAD и no_speech_threshold, отключение condition_on_previous_text, промпты под радиосвязь на разных языках, фильтрация «мусорных» сегментов (короткие фрагменты, повторы символов, низкий logprob). Режим «Макс. качество» — увеличенный beam size и patience.

Учёл ограничения Windows: копирование файлов с кириллицей в ASCII-путь, обработка краша whisper-faster (0xC0000005), миграция старых транскриптов.

3. Перевод текста
Модуль translator.py: основной канал — Ollama API (Gemma 3 12B) с разбивкой длинного текста на чанки; запасной — Gemma 3 4B; офлайн-fallback — NLLB-200 и Marian (Helsinki-NLP) при недоступности Ollama.

Для радиорежима — более буквальный перевод (сохранение стиля переговоров). Автовыбор backend с отображением в интерфейсе.

4. Управление Ollama
Модуль ollama_manager.py: автозапуск встроенного ollama.exe, изолированные OLLAMA_MODELS и профиль в data/, контроль загрузки модели, сброс битых partial-файлов, таймауты. GPU отдан Whisper (OLLAMA_NUM_GPU=0), перевод на CPU — чтобы 12B-модель работала на типичном ПК клиента.

5. Графический интерфейс
Десктопное приложение на CustomTkinter (gui/app.py): выбор файла или папки, язык записи (авто/вручную), целевой язык перевода, чекбоксы «Рация» и «Макс. качество», два окна (транскрипт и перевод), пакетная обработка папки, сохранение результатов. Длительные операции — в фоновом потоке, статус и блокировка кнопок во время работы.

6. Сборка и перенос на другой ПК
Скрипты package_release.ps1, PACKAGE.bat, install.bat, ZAPUSK.bat: переносимый дистрибутив с кодом, Whisper (~6 ГБ), Ollama runtime (~4 ГБ), Gemma 3 12B (~8 ГБ). Инструкция INSTALL.txt: требования, путь без кириллицы, установка и запуск. Опция install.bat full — офлайн-переводчик NLLB при отсутствии Ollama.

7. Надёжность и эксплуатация
Централизованные пути в config.py и paths.py, bootstrap при старте (main.py): проверка Ollama, предупреждение об отсутствии модели. Поддержка mp3, wav, m4a, ogg, flac; вывод в TXT и JSON с метаданными.

Результат

Клиент получил локальное Windows-приложение «выбрал файл → нажал «Обработать» → получил расшифровку и перевод» без облака, с учётом шумных радиозаписей и возможностью переноса на другие машины одним архивом.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT DocScan - Мобильное приложение для Android: сканирование документов камерой, автообрезка, улучшение качества и экспорт в PDF. Для тех, кому нужен сканер без принтера и облака.
DocScan - Мобильное приложение для Android: сканирование документов камерой, автообрезка, улучшение качества и экспорт в PDF. Для тех, кому нужен сканер без принтера и облака.
40