Разделение говорящих в записи встречи: локальная диаризация и транскрипт
На странице · 4 разделов
Чтобы разделить говорящих в записи встречи локально, нужны две разные задачи: ASR расшифровывает речь, а диаризация отмечает, кто говорил и когда. WhisperX соединяет распознавание, выравнивание и метки спикеров; альтернативно можно сопоставить транскрипт с сегментами локальной модели диаризации. Метки «speaker 0/1» не являются именами людей, а перекрывающиеся реплики и русские имена нужно сверять с исходным аудио.
Источник и дата проверки — 30 сентября 2026 года. Ни один вариант не запускался Modelium на встрече; ниже — процедура для вашего собственного проверяемого пилота, а не результаты нашего испытания.
Что значит «разделить говорящих» в записи?
Диаризация отвечает «кто говорил и в какие интервалы», но по умолчанию возвращает условные speaker_0, speaker_1, а не имена людей: так устроен пример вывода локального Community-1 s1. ASR превращает аудио в текст. Для подписанного транскрипта нужны оба результата и сопоставление времени; WhisperX документирует связку транскрипции, выравнивания и speaker ID s2. Не выдавайте условную метку за подтверждённую личность участника.
Вход пилота — разрешённая запись встречи, по возможности с известным числом участников и согласованным контрольным транскриптом. Выход — строки с таймкодом, текстом, анонимной меткой и отметкой «неуверенно/перекрытие». Это редакционное определение результата: готовый продукт и гарантия качества из него не следуют. Сохраняйте исходную запись для ручной проверки, ограничьте доступ к аудио и не отправляйте конфиденциальные файлы в неизвестный сервис только ради расшифровки.
Какой локальный стек выбрать для русской встречи?
- Один конвейер: WhisperX описывает ASR на базе faster-whisper, выравнивание слов и диаризацию через pyannote Community-1 s2. В pinned-коде выравнивания для
ruуказанjonatasgrosman/wav2vec2-large-xlsr-53-russian; это наличие конфигурации, а не независимый тест русских совещаний s3. Карточка Whisper large-v3 перечисляетruсреди языков многоязычной ASR-модели, но не подтверждает точность на вашем микрофоне и лексике s5. - Раздельные слои: faster-whisper выдаёт транскрипт с интервалами; у него есть
word_timestampsи VAD для фильтрации тишины s4. Community-1 выдаёт интервалы/метки говорящих при локальном запуске после получения модели s1. Затем необходимо сопоставить интервалы вручную либо собственной проверяемой логикой, особенно при пересечении реплик. Это схема интеграции, а не утверждение, что оба инструмента сами образуют готовое приложение. - Другой диаризатор: по карточке автора Nemotron 3 Diarization выдаёт интервалы и условные метки до восьми голосов, поддерживает пакетный и потоковый режим s6. Он не заменяет ASR-текст; для русской встречи сверяйте и спикеров, и слова. Публикуемые автором результаты не переносите на свои записи без отдельного замера s6.
Не смешивайте лицензии кода, весов и сторонних компонентов: при корпоративном использовании проверьте отдельные условия выбранного чекпойнта и всех зависимостей. pyannote/speaker-diarization-community-1 требует принять условия модели и получить токен Hugging Face перед загрузкой; локальный инференс Community-1 в README отличён от облачного precision-2 s1. Поэтому «локально» здесь означает выполнение инференса на своей машине после подготовки, а не отсутствие сетевых запросов при первой установке.
Что подготовить до первого запуска?
- Получите разрешённую короткую запись с двумя или тремя знакомыми голосами, тишиной, быстрой сменой спикеров и хотя бы одним наложением реплик. Для проверки подготовьте ручную разметку «начало — конец — говорящий — дословная реплика». Храните реальный список имён отдельно от анонимных speaker ID.
- Зафиксируйте устройство, ОС, версии Python, WhisperX, pyannote и скачанных чекпойнтов, длительность записи и способ работы: CPU или GPU. Документация WhisperX допускает CPU-команду
--compute_type int8 --device cpu, но не устанавливает универсальной минимальной RAM/VRAM для всех моделей и длительностей s2. Размер файла весов не равен памяти во время выполнения. - Для самого простого пути установите WhisperX по инструкции проекта, примите условия
speaker-diarization-community-1и передайте собственный read-only HF-токен в параметр--hf_tokenбез включения его в опубликованные логи s2. Документация описывает--diarizeи задание числа говорящих через--min_speakersи--max_speakers; не выставляйте точное число, если оно неизвестно s2. Русский--language ruпроверяйте вместе с фактически загруженной моделью выравнивания s2s3. - Перед реальными данными попробуйте этот же путь на несекретной тестовой записи; затем проверьте, что данные и логи не уходят наружу. Наличие локального процесса не доказывает полную сетевую изоляцию; для неё используйте отдельную проверку офлайн-контура.
Команды ниже синтаксис из документации, не исполненный Modelium прогон s2:
pip install whisperx
whisperx meeting.wav --model large-v2 --language ru --diarize \
--hf_token "$HF_READ_TOKEN"
Подставьте свой путь к файлу и токену через локальное окружение; аргумент --hf_token после подстановки переменной может быть виден в списке процессов и логах запуска, поэтому на общем компьютере используйте изолированную учётную запись и не печатайте команду с реальным токеном. Версии зависимостей и выбранный HF-чекпойнт фиксируйте отдельно: pip install без закрепления версии не даёт воспроизводимого окружения. Если нужна предсказуемая установка, сначала проверьте поддерживаемые версии проекта и закрепите их в локальном файле зависимостей. Успех команды — наличие результата, а не правильность имён и текста.
Как обнаружить ошибку по голосам и тексту?
Для каждого контрольного фрагмента сравните начало и конец реплики, распознанные слова и метку говорящего с исходным аудио. Отдельно отметьте пропущенное короткое «да», смену говорящего в одной фразе, речь поверх речи, фоновые голоса, имена и профессиональные термины. WhisperX прямо предупреждает, что наложенная речь обрабатывается плохо и диаризация далека от идеала; отдельное выравнивание может не поставить таймкод слову вне словаря фонетической модели s2. Если VAD отрезал тихую или короткую реплику, проверьте настройки на исходной дорожке: faster-whisper документирует отдельный фильтр VAD и настраиваемые параметры s4.
Заведите таблицу на своей выборке: число реальных и найденных говорящих, доля верно привязанных реплик, пропуски речи, ошибки слов и примеры пересечений. Не сообщайте «точность русской диаризации» без метода, ручной разметки, ревизий моделей, железа и результатов: Modelium такого замера не выполнял. При сомнении помечайте спикера «неизвестно» и просите человека сверить фрагмент перед протоколом встречи или автоматической записью в CRM.
Основной следующий шаг: посмотрите модель локальной диаризации Nemotron 3, затем проверьте её метки на той же разрешённой записи рядом с ручной разметкой. Это отдельный кандидат, не доказанный победитель для русской речи s6.
Источники
- pyannote.audio — README Community-1, Git revision b749285 — revision b749285c5cdd4636b2edc7f766f1352c8dde9369. Получено 30.09.2026.
- WhisperX — README, Git revision 771b4a1 — revision 771b4a14a9486f8fd5aef18ef49e35d639523dd3. Получено 30.09.2026.
- WhisperX — alignment.py, Git revision 771b4a1 — revision 771b4a14a9486f8fd5aef18ef49e35d639523dd3. Получено 30.09.2026.
- faster-whisper — README, Git revision ed9a06c — revision ed9a06cd89a93e47838f564998a6c09b655d7f43. Получено 30.09.2026.
- OpenAI Whisper large-v3 — model card, HF revision 06f233f — revision 06f233fe06e710322aca913c1bc4249a0d71fce1. Получено 30.09.2026.
- NVIDIA Nemotron 3 Diarization — model card, HF revision f667ed7 — revision f667ed73aee57d40cc39428eb768b4fd87a0a29e. Получено 30.09.2026.