Почему я начал делать iazShadow
Созвонов много, проекты разные, а после каждого нужны план работ и запись: кто что сказал, что подтвердил, в чём отказал. Ещё нужно саммари переговоров.
Идут они то в Телемосте, то в Zoom, то в Google Meet. В Zoom у нас какое-то время подключался автоматический бот-ассистент (названия уже не помню). Потом он пропал, но видеозапись встреч всё равно шла, и мы получали файл. Для других сервисов такого не было, а расшифровку очень хотелось. Я записывал экран, и встал вопрос: что делать с файлом?
Первая идея была отдать запись облачной нейросети, например Gemini. Но у чатов есть ограничения на размер файла. Я вырезал аудиодорожку (это просто), но длинные записи всё равно упирались в лимиты. Через API (например, Vertex AI от Google Cloud) запись можно обрабатывать, некоторые так и делали, но уже за деньги.
Я выбрал другой путь: обрабатывать запись локально, на своём компьютере. Цена этого пути — моё время. Плюсы — бесплатно и приватно: разговоры точно никуда не утекут (хотя тогда это для меня не было критичным).
Нашёл Whisper — модель распознавания речи от OpenAI. Поднял её в Docker, настроил и примерно за час-два получил текст созвона. Как же это было приятно! Пока не посмотрел результат:
- Segment 1: Добрый день, коллеги, начинаем нашу встречу.
- Segment 2: Сегодня мы обсуждаем архитектуру и план развёртывания.
- Segment 3: Подскажите, есть ли вопросы по предыдущему этапу?
- Segment 4: Да, у меня есть вопрос по производительности на GPU.
- Segment 5: Отлично, давайте разберём этот момент подробно.
Текст есть, а кто что сказал — непонятно. Whisper только распознаёт речь, а делить её по говорящим не умеет. Ещё часа два ушло на знакомство с диаризацией: это разметка записи по говорящим. Программа находит, когда говорил один и тот же голос, и помечает его меткой (SPEAKER_00, SPEAKER_01…), не зная ни имён, ни того, кто это. Получилось уже удобоваримо:
- SPEAKER_00: Добрый день, коллеги, начинаем нашу встречу.
- SPEAKER_00: Сегодня мы обсуждаем архитектуру и план развёртывания.
- SPEAKER_00: Подскажите, есть ли вопросы по предыдущему этапу?
- SPEAKER_01: Да, у меня есть вопрос по производительности на GPU.
- SPEAKER_00: Отлично, давайте разберём этот момент подробно.
Радость снова была недолгой: в конце текста я увидел SPEAKER_12 — при всего четырёх участниках. Оказалось, это типичная болезнь диаризации — переразбиение на спикеров. Междометия вроде «угу» и «ну», перепады интонации и фоновый шум делают один и тот же голос непохожим на самого себя, и программа заводит нового «участника». Ошибиться и склеить двух разных людей для неё хуже, чем создать лишнего, поэтому лишних набегает много. Тринадцатый спикер на четверых — это ещё скромно.
На то, чтобы победить это настройками, времени уже не хватило. Именно тогда я задумался о собственной программе: с транскрибацией, которая работает на обычном компьютере, и с диаризацией, которой можно доверять.
Так начался iazShadow — невидимый секретарь для созвонов под Windows. Он превращает разговор в текст прямо на вашем компьютере, без облака и без бота во встрече.
Что будет на этом Boosty. Базовые версии моих программ бесплатны. Здесь я буду показывать, как всё устроено изнутри: выбор моделей, бенчмарки, архитектурные решения, грабли и находки. Закрытые посты, предрелизные сборки и опросы о приоритетах функций доступны на уровне «Ранний доступ и инсайды» (350 ₽ в месяц). Собранные деньги пойдут на сертификат подписи кода, серверы раздачи моделей и локальное саммари созвонов. Подробнее о целях и уровнях — на странице выше.
В следующем посте расскажу, почему для распознавания я выбрал GigaAM и sherpa-onnx вместо Whisper и что это дало в скорости.
#iazshadow
#созвоны
#транскрибация
#распознаваниеречи
#диаризация
#whisper
#локальныйии
#приватность
#разработкапо
#независимаяразработка
Creator has disabled comments for this post.