Локальная транскрибация вместо облака: как я собрал MVP для расшифровки чувствительных аудиозаписей

22.06.26

Интеграция - Распознавание документов и образов

История о том, как запустить локальное распознавание аудио на Whisper и не сойти с ума, разрываясь между клиентами, техзаданиями и внезапным потопом в квартире. Практический MVP для расшифровки чувствительных записей без облака: от обхода проблем с CUDA под Windows до превращения хаотичного разговора о маркировке в четкую основу для задачи в 1С.

Когда нужно расшифровать рабочую встречу, переговоры с клиентом или запись судебного заседания, первый вариант обычно очевиден: загрузить файл в облачный сервис и получить текст.

Но не всегда это возможно. В записи могут быть персональные данные, детали работы клиента, финансовая информация, коммерческие условия или просто разговор, который не хочется передавать во внешний сервис. При этом вручную расшифровывать 30–40 минут аудио — это уже отдельная задача на несколько часов.

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

Сразу скажу главный вывод: можно. Но Whisper сам по себе не делает готовый протокол встречи. Он хорошо создаёт основу, а дальше начинаются термины, контекст, ошибки распознавания и необходимость проверки человеком. 
 

 

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

В итоге ТЗ для самого себя получилось спартанским: аудио должно оставаться на локальной машине, на выходе — обычный TXT и JSON с таймкодами. Транскрибация не должна крутиться часами — скорость критична. И всё это должно подниматься на коленке, без разворачивания тяжёлой серверной инфраструктуры.

В качестве основы я выбрал Whisper через библиотеку faster-whisper. В результате получился небольшой Python-проект.

 

 

В рабочем варианте сценарий простой:

Берём аудиофайл, запускаем локальную обработку через Whisper, получаем сырой TXT и JSON с сегментами, затем вычищаем критичные ошибки и выделяем решения, задачи и вопросы. Дальше этот черновик становится основой для протокола встречи или постановки задачи.

Сначала проект работал на CPU. Это был рабочий вариант, но ждать приходилось долго. Потом удалось запустить обработку на NVIDIA GPU через CUDA, и разница стала заметна сразу.

На записи длительностью около 34 минут модель medium на CPU обработала файл примерно за 38 минут. На RTX 5070 модель large-v3 обработала тот же файл за 1 минуту 47 секунд. Это не академически чистый benchmark, потому что модели разные, но практический вывод очевиден: при наличии подходящей видеокарты локальная транскрибация перестаёт быть долгой фоновой задачей.

Обработка аудиофайла на CPU

 

 

Обработка того же сценария на GPU через CUDA

 

 

Важный момент: GPU не делает текст умнее. Он просто даёт короткий цикл «запустил — проверил — поправил prompt — запустил ещё раз», а не ожидание по полчаса после каждой попытки.

Как я не потерял проект между клиентами, поездкой и аварией в квартире

Я работаю в достаточно плотном режиме: несколько клиентов, постоянные звонки, письма, срочные и несрочные задачи. В течение дня меня регулярно отвлекают, и иногда очередь задач становится довольно большой.

Поэтому ещё до первой строчки кода я решил опереться на MD-файлы. Идея простая: открыть проект после любого перерыва и сразу понять, в какой точке ты находишься, что уже сделано, какие проблемы всплыли и что делать дальше.

На практике двумя главными файлами стали README.mdчтобы быстро вспомнить, как проект запускать, — и PROGRESS.mdчтобы видеть текущее состояние, принятые решения, результаты тестов и следующие шаги.

Разработку я вёл в Cursor, а отдельные вопросы обсуждал с другим онлайн-ИИ. После каждого заметного изменения в коде, настройках или результатах тестирования я просил обновить PROGRESS.md.

В начале в этом файле было буквально три-четыре пункта. Когда MVP завёлся, в нём уже оказалось больше двадцати: подключение faster-whisper, запуск на CPU, переход на CUDA, настройки моделей, фиксы для CUDA DLL под Windows, замеры производительности, эксперименты с юридическими терминами и подготовка следующего этапа с постобработкой текста.

На словах всё это выглядит как обычная документация. Пока жизнь не вмешалась.

Я начал проект перед поездкой на дачу: создал структуру, подготовил MD-файлы и отправил проект в Git. На даче продолжил работу уже на ноутбуке без GPU, поэтому первые эксперименты запускал на CPU.

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

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

Короче, полная бытовая каша. Но проект я не бросил.

Открываю PROGRESS.md — и сразу вижу, где остановился.

Не нужно заново собирать в голове, что именно я настраивал вчера, где остановился и почему принял то или иное решение. Для меня это стало подтверждением: документация в небольшом AI-проекте нужна не только «для порядка». Она помогает не потерять контекст, когда разработка идёт рывками, на разных устройствах и между десятком других рабочих и личных задач.

Для тестов я использовал аудиозапись судебного заседания. В этом процессе я защищал свои интересы самостоятельно, без юриста.

К заседанию я готовился с помощью NotebookLM: использовал его как инструмент для изучения материалов и подготовки аргументов. Аудиозапись самого заседания стала хорошим тестом для локальной транскрибации: в ней есть юридические термины, формальные формулировки, несколько участников разговора и не всегда идеальное качество звука.

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

 

От протоколов встреч — к PROGRESS.md

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

Но мой друг Владимир Гусев, опытный разработчик 1С с большим практическим опытом, уже много лет продвигает другой подход. Именно он предложил мне написать эту статью для Инфостарта — так что за идею отдельное спасибо и привет Владимиру.

Честно говоря, раньше я относился к этому довольно спокойно и не всегда видел необходимость тратить на это время. Но по мере работы с проектами всё чаще сталкивался с ситуациями, когда к старому вопросу возвращались через полгода или год, а детали обсуждения уже никто толком не помнил.

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

Через полгода или год к вопросу возвращаются — и начинаются знакомые вопросы: почему выбрали именно этот вариант, кто предложил решение, что не устроило в альтернативе и о чём вообще договорились. А еще это может затрагивать вновь поставленные задачи.

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

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

Когда разработка постоянно прерывается звонками, другими задачами, поездками и бытовыми вопросами, такой файл избавляет от попыток вспомнить всё с нуля.

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

В PROGRESS.md я руками поправил только несколько фраз. Остальное Cursor вносил по моей просьбе после очередной доработки или теста.

 

Проблема с CUDA под Windows

После переход на GPU появилась проблема. После установки CUDA-зависимостей faster-whisper не всегда видел нужные DLL-библиотеки из виртуального окружения. Обычный запуск Python мог завершиться ошибкой вида:

cublas64_12.dll is not found

То есть CUDA-библиотеки были установлены, но Windows не находила их при запуске.

Я не стал вручную копировать DLL-файлы по папкам. Вместо этого сделал отдельный PowerShell-скрипт запуска: он добавляет каталоги cublas и cudnn из .venv в переменную окружения PATH, а затем запускает проект. Дополнительно добавил обработку путей к DLL в коде, но на практике launcher оказался надёжнее.

Для меня здесь был важен сам подход. Я описал ошибку и структуру проекта AI-помощнику, получил варианты причин, последовательно проверил их и закрепил рабочее решение в проекте. Не нужно было быть специалистом по CUDA или неделями искать ответ на форумах.

Конечно, AI не «починил всё сам»: нужно было запускать команды, смотреть ошибки и проверять результат. Но он сильно сократил путь от непонятного сообщения cublas64_12.dll is not found до рабочего запуска на GPU.

 

Проверка на реальной рабочей встрече

После того как основной пайплайн заработал, я проверил его на обычной рабочей записи.

У меня была запись встречи с клиентом продолжительностью около 26 минут. Запись обсуждения я записал на обычный диктофон в смартфоне. Обсуждали работу с маркировкой в «Честном Знаке»: получение кодов, приёмку товара, сверку нескольких тысяч кодов, Excel-файлы, коробки, импорт, ГТД, возможную интеграцию с 1С и ЭДО.

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

По практической оценке, сохранность общего смысла составила примерно 88–90%, а без прослушивания исходника читается около 80% фраз. Это не классический WER (коэффициент ошибок в словах): для него нужна эталонная ручная расшифровка. Здесь я оцениваю не каждую букву, а то, можно ли по тексту восстановить ход обсуждения и принятые решения.

Именно инженерная боль в расшифровке была видна сразу:

— нужно сверить несколько тысяч кодов маркировки и не утонуть в ручной проверке;

— нужно быстро найти конкретный код среди реестров и понять, в какой коробке он лежит;

— нужно автоматизировать поиск в Excel, а не копировать куски длинного кода руками.

Из того же текста понятен и контекст: почему для приёмки используется Excel, какие сложности создают ГТД и импортный товар и почему пока решили остаться в личном кабинете «Честного Знака», а не тащить процесс в 1С и ЭДО.

Итог встречи читается достаточно ясно: основная проблема — поиск и сверка кодов среди тысяч позиций, а первым кандидатом на автоматизацию является поиск кода в Excel и его привязка к конкретной коробке.

Для меня это важный вывод. Расшифровка не заменила полноценный протокол встречи, но позволила быстро восстановить ход обсуждения и не потерять важные решения. А дальше из такого черновика уже можно собрать нормальный итог встречи, задачу в 1С или техническое задание.

 

Разделение по собеседникам

На скриншоте структуры проекта можно увидеть файл diarizer.py. Пока это заготовка для следующего этапа — в текущий MVP разделение по голосам не вошло.

Сейчас Whisper формирует текст и JSON-сегменты с таймкодами, но без указания участников разговора. Для восстановления смысла встречи этого достаточно, но для полноценного протокола хотелось бы получать диалог в формате:

Клиент: ...
Разработчик: ...

Следующий этап проекта — подключить диаризацию и сопоставить её результаты с сегментами Whisper. Рассматриваю готовые решения, например pyannote.audio.

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

 

Исходный код проекта

Код, инструкция по запуску и текущий PROGRESS.md опубликованы в GitVerse:

https://gitverse.ru/sarus/audio-agent

В репозитории лежит рабочий MVP локальной транскрибации: запуск Whisper через faster-whisper, работа на CPU и CUDA, сохранение результатов в TXT и JSON, а также заготовки для следующих этапов — постобработки текста и разделения собеседников.

Вступайте в нашу телеграмм-группу Инфостарт

Whisper faster-whisper CUDA Speech-to-Text локальная транскрибация Распознавание речи Локальный ИИ Автоматизация процессов Протокол встречи нейросети Python обработка аудио AI-разработка

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Учет документов Распознавание документов и образов Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Одна из наиболее удобных обработок автоматического прикрепления большого количества документов-оригиналов к документам 1С. Для файлов поточного сканирования автоматически определяются начало и конец каждого документа. Поддерживаются штрихкоды, QR-коды, отсканированные PDF документы без штрихкодов, сформированные в ЭДО текстовые PDF документы. Поддерживаются входящие и исходящие документы-оригиналы.

87108 руб.

23.12.2021    16736    33    25    

14

SALE! 35%

Интеграция Нейросети DevOps и автоматизация разработки Распознавание документов и образов 1C:ERP 1С:КА 1С:УНФ Химическая промышленность Горнодобывающая промышленность Металлургическая промышленность Россия Платные (руб)

От чертежа до себестоимости — за минуты, а не дни. ИИ-Технолог автоматически распознаёт чертежи и техническую документацию (включая фото, сканы, PDF, Excel), рассчитывает нормы времени, формирует технологические маршруты, оценивает возможность изготовления и точную себестоимость. Интеграция с 1С (ERP, MES, КА, УНФ) и отраслевыми нормативами (ГОСТы).

366000 руб.

18.06.2026    269    0    2    

0

Распознавание документов и образов WEB-интеграция Программист 1С 8.3 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

Представлен модуль интеграции с сервисом SberScan.

1 стартмани

16.06.2026    215    0    tori131313    0    

1

Распознавание документов и образов Обмен с ГосИС Программист 1С 8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1C:ERP Бесплатно (free)

HTTP-сервис на python для распознавания DataMatrix штрихкодов "Честный Знак" из изображений. Принимает изображение в формате base64, выполняет распознавание и возвращает результат в JSON.

09.06.2026    671    rozer    2    

9

Сканер штрих-кода Терминал сбора данных WEB-интеграция Распознавание документов и образов Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Коротко о новых возможностях 1Scan: WebSocket-обмен с Android-устройством, передача штрихкодов, фото, файлов и координат в 1С, а также OCR-распознавание текста камерой.

03.06.2026    455    kild    3    

3

Нейросети Распознавание документов и образов Программист Бесплатно (free)

В статье представлены реальные примеры применения искусственного интеллекта для автоматизации кейтеринга в условиях Крайнего Севера. Объясняем, почему ИИ стал оптимальным решением для ускорения обслуживания и повышения эффективности, и как удалось объединить терминалы самообслуживания, технологии машинного зрения и платформу 1С:Предприятие в единую систему. Показываем, как использование нейросетей повысило скорость обслуживания и качество клиентского опыта. В завершение рассмотрим перспективы развития технологии, расширения ее функционала и применения собранных данных для оптимизации бизнес-процессов.

08.05.2026    1682    user1415700    18    

25

Периферийные устройства Распознавание документов и образов Системный администратор Программист 1С 8.3 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

Расширение конфигурации, реализующее сканирование посредством scanimage на клиенте Linux без использования компоненты ImageScan. Если Ваш сканер виден и работает в SANE, но категорически не хочет видеться в 1С, то это расширение решает данную проблему. Проверено на БП 3.0.194.23 и ЗУП 3.1.37.49. В ДО, вроде, нет обработки «сканирование», так что переделать немного надо будет.

5 стартмани

27.04.2026    485    0    Горыня    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 1103 22.06.26 15:17 Сейчас в теме
На AMD можно ускорять Whisper или до сих пор красные в пролёте ?
3. starik-2005 3263 22.06.26 15:24 Сейчас в теме
(1)
На AMD можно ускорять Whisper
А в чем проблема? https://github.com/ggml-org/whisper.cpp поддерживает сборку под vulkan или HIP.

Более того, на HF в разделе железяг 9060XT в чистой ИИ-производительности быстрее, чем 5070ti.
Прикрепленные файлы:
SerVer1C; +1 Ответить
4. starik-2005 3263 22.06.26 16:07 Сейчас в теме
(3)
whisper.cpp
Они воткнули паракит в последних патчах, а это значит:
Феноменальная скорость:
Модель архитектуры FastConformer-TDT оптимизирована под графические процессоры (GPU) NVIDIA. Она способна обработать и расшифровать 1 час аудио всего за 1 секунду (что в десятки раз быстрее аналогов).
Высокая точность:
В бенчмарках (например, Hugging Face Open ASR Leaderboard) модели Parakeet занимают лидирующие строчки, демонстрируя средний уровень ошибок (WER) в районе 6.05% – 6.34%.
Легковесность:
Актуальные версии (например, Parakeet-TDT-0.6B-v3) содержат всего 600 миллионов параметров, что позволяет запускать их локально даже на обычных ПК или ноутбуках без огромных затрат видеопамяти.
Мультиязычность:
Модель поддерживает 25 языков (включая русский, английский, немецкий, испанский и др.), автоматически определяя язык спикера без дополнительных подсказок.
7. otcheskiy 17 22.06.26 16:22 Сейчас в теме
(4) я работал с Whisper не потому, что считаю его единственно правильным, а потому что хотел быстро собрать рабочий локальный MVP.
Parakeet выглядит интересно именно как следующий кандидат на сравнение

Но для моей задачи важен не только benchmark WER и RTFx, а качество на реальных записях: переговоры, перебивания, юридические термины, шум, несколько участников и длинное аудио. Поэтому правильнее будет взять одну и ту же запись, прогнать её через Whisper и Parakeet на одной машине и сравнить не только скорость, но и смысловую пригодность текста

Фраза про час аудио за секунду впечатляет, но я бы воспринимал её как лабораторный benchmark , а не как ожидаемый результат на одной локальной записи. Для статьи или следующего эксперимента интереснее показать реальные замеры на одинаковом файле
8. starik-2005 3263 22.06.26 16:30 Сейчас в теме
(7)
лабораторный benchmark
Скоро выкачу статью, как учить свою модель и как добиться от нее какой-нить полезности.
2. starik-2005 3263 22.06.26 15:19 Сейчас в теме
А как на тему обучить свою модель? Ну чтобы чисто русский язык без всего того мультиязычного, что в моделях whisper намучено? Я вот на 20М параметров сетку обучал. 9-я эпоха 0,85 loss, на 90-й зафайнтюненой WER уже -> 0,3. И это на датасете 100ч всего а аугментацией по резанным спектрограммам и шумам.
Прикрепленные файлы:
5. otcheskiy 17 22.06.26 16:07 Сейчас в теме
(2) Я думаю это следующий этап развития. По грубым расчетам у меня ушл 8-12 часов работы. У меня была цель: быстро создать локальное решение на windows, чтобы получить рабочий черновик без отправки аудио в облако
6. starik-2005 3263 22.06.26 16:10 Сейчас в теме
(5)
быстро создать локальное решение на windows
У меня без ИИ час ушел, чтобы с вишером разобраться на CPU. Но это было уже год назад, сейчас я понимаю, что в те времена вообще ничего не знал об этом.
ЗЫ: На паракит поглядите. https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3
WER ru 5.51%
Для отправки сообщения требуется регистрация/авторизация