Программа для распознавания и перевода звука с совещаний

Программа для распознавания и перевода звука с совещаний

Сидя на очередном митинге в Teams с коллегами, говорящими на французском, автор в очередной раз понял, что упускает суть обсуждения — уровень языка оставлял желать лучшего. Вместо того чтобы полагаться на встроенные инструменты, он решил создать собственное решение.

Результат — небольшая утилита, которая перехватывает звук с устройства, разбивает его на фразы, распознаёт речь с помощью Whisper и переводит на указанный язык. Поддерживаются русский, английский и французский.

Как это работает

Программа написана на C#. Основной функционал реализован с минимальным объёмом кода — около 80% сгенерировано с помощью ИИ, остальное — ручные правки.

Для распознавания речи (STT) автор тестировал несколько локальных решений:

  • Sherpa с ONNX-моделями — нашлась только потоковая версия для французского, не совместимая с архитектурой приложения.
  • Foundry Local от Microsoft — слишком сырая, использует тот же Whisper, но обмен данными происходит через файлы.
  • Другие варианты не подошли или забыты.

В итоге остановился на Whisper. Модель base работает быстро, но не учитывает контекст. Small уже пытается следить за логикой, но может подтормаживать. Medium не успевает за живой речью — очередь фрагментов быстро растёт. К сожалению, не удалось задействовать NPU/GPU, нагрузка ложится на оперативную память, но качество распознавания остаётся хорошим.

Перевод

Реализовано два варианта перевода:

  • Через OpenAI — нужно указать ключ, модель и URL.
  • Через Azure Translator — достаточно указать ключ. Обеспечивает быструю обработку и 2 миллиона бесплатных символов в месяц, но требует учётной записи Azure.

Интеграция с Yandex API не реализована — требуется платёжный аккаунт, а у автора нет способов оплаты из РФ. Однако добавить новый переводчик просто: в коде есть чёткий интерфейс ITranslationService.

Локальные библиотеки для перевода автор рассмотрел, но не нашёл подходящих решений.

Особенности и настройки

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

Вторая строка настроек отвечает за разбиение речи на фразы. Можно регулировать чувствительность по громкости и длительности пауз. В правом нижнем углу отображается уровень звука и флаги определения речи — это помогает точно настроить параметры.

Важно: программа перехватывает только звук, воспроизводимый через динамики или наушники. Микрофон системы она не слышит — это не инструмент для записи разговоров.

Рекомендуемая модель — small, с температурой 0.1–0.2. Качество аудио на совещаниях обычно высокое, поэтому результат получается стабильным.

Утилита создана для узкой задачи, но может быть полезна тем, кто регулярно участвует в международных звонках. Исходный код доступен на GitHub: https://github.com/whitebehemoth/chacka.

Читать оригинал