
Whisper для транскрипции звонков: точное преобразование речи в текст для телефонных разговоров
Eric King
Author
Транскрипция телефонных звонков — один из самых распространённых и ценных сценариев для speech-to-text. OpenAI Whisper особенно хорошо подходит для этой задачи благодаря устойчивости к шуму, акцентам и несовершенному качеству аудио.
В этой статье рассказано, как использовать Whisper для транскрипции звонков: форматы аудио, разделение говорящих, оптимизация точности и практические схемы развёртывания.
Почему Whisper для транскрипции звонков?
По сравнению с классическими ASR-движками Whisper хорошо работает на:
- Низкокачественном телефонном аудио (8 кГц)
- Акцентах и неносителях языка
- Фоновом шуме
- Длинных разговорах (10–120 минут)
- Многоязычных звонках и переключении языков
Типичные сценарии:
- Журналы звонков в поддержку
- Анализ продажных звонков
- QA и комплаенс
- Саммари и инсайты по звонкам
- Автоматизация CRM
Типичный пайплайн транскрипции звонков
Call (PSTN / VoIP)
↓
Call Recording (WAV / MP3)
↓
Preprocessing (resample, channel split)
↓
Whisper Transcription
↓
Speaker Diarization (optional)
↓
Post-processing (punctuation, timestamps, summaries)
Форматы аудио: что лучше всего
Рекомендуемые настройки
| Параметр | Значение |
|---|---|
| Частота дискретизации | 8 кГц или 16 кГц |
| Каналы | Моно или стерео |
| Формат | WAV (предпочтительно), FLAC |
| Разрядность | 16-битный PCM |
Whisper сам пересэмплирует сигнал, но чистый вход повышает точность.
Моно и стерео в звонках
Моно (чаще всего)
- Оба собеседника смешаны в одном канале
- Проще пайплайн
- Сложнее разделить говорящих
Подходит для:
- Простой транскрипции
- Поиска и архивации
Стерeo (лучшая практика)
- Агент на левом канале
- Клиент на правом
Преимущества:
- Чёткое разделение говорящих
- Диаризация не нужна
- Выше точность на следующих этапах
# Split stereo call into two mono tracks
import torchaudio
audio, sr = torchaudio.load("call.wav")
agent = audio[0]
customer = audio[1]
Затем транскрибируйте каждый канал отдельно.
Диаризация говорящих с Whisper
В Whisper нет встроенной диаризации, но её можно комбинировать с:
- Pyannote.audio
- WebRTC VAD + кластеризация
- Разделение по каналам (предпочтительно)
Типичный подход:
- Запустить модель диаризации
- Разрезать аудио по сегментам говорящих
- Транскрибировать каждый сегмент Whisper
- Объединить результаты с метками говорящих
Лучшие модели Whisper для звонков
| Модель | Точность | Скорость | Рекомендация |
|---|---|---|---|
| base | Средняя | Быстро | ❌ Короткие звонки |
| small | Высокая | Средне | ✅ Большинство случаев |
| medium | Очень высокая | Медленнее | ✅ Комплаенс |
| large-v3 | Отличная | Медленно | ✅ Юридический / QA |
Рекомендация: small или medium для колл-центров
Длинные звонки (30–120 минут)
Для длинных звонков не подавайте весь файл целиком.
Лучшая практика
- Делите аудио на фрагменты по 2–5 минут
- Используйте небольшие перекрытия (5–10 секунд)
- Сохраняйте временные метки
result = model.transcribe(
audio_chunk,
condition_on_previous_text=True
)
Так сохраняется контекст между фрагментами.
Повышение точности на телефонных звонках
1. Нормализация аудио
- Удаление тишины
- Нормализация громкости
- При необходимости шумоподавление
2. Подсказки по языку
model.transcribe(audio, language="en")
3. FP16 на GPU
Быстрее и стабильнее инференс.
4. Избегайте слишком мелких чанков
Слишком короткие фрагменты снижают контекст и точность.
Реальное время и пакетная транскрипция звонков
| Режим | Сценарий |
|---|---|
| Реальное время | Мониторинг в реальном времени, алерты |
| Почти в реальном времени | QA-дашборды |
| Пакетно | Аналитика, архив |
Большинство колл-центров используют почти реальное время или пакетный режим ради стабильности и стоимости.
Масштабирование Whisper в колл-центрах
Малый масштаб (≤ 100 звонков в день)
- Один GPU-сервер
- Whisper small
Средний масштаб (1k–10k звонков в день)
- Пул GPU
- Асинхронная очередь задач (RabbitMQ / Kafka)
- Обработка по чанкам
Крупный масштаб (enterprise)
- Несколько GPU-узлов
- Сервис предобработки аудио
- Пайплайны транскрипции и саммари
Постобработка и извлечение ценности
После транскрипции обычно делают:
- Пунктуацию предложений
- Метки говорящих
- Извлечение ключевых слов
- Анализ тональности
- Саммари звонков (LLM)
- Интеграцию с CRM
Whisper и облачные API для транскрипции звонков
| Критерий | Whisper | Облачные API |
|---|---|---|
| Стоимость | Низкая (self-hosted) | Высокая |
| Конфиденциальность | Полный контроль | Зависит от вендора |
| Точность | Очень высокая | Высокая |
| Кастомизация | Полная | Ограниченная |
Whisper подходит командам, которым нужны приватность, контроль затрат и гибкая настройка.
Заключение
Whisper — сильный выбор для транскрипции звонков, особенно для:
- Поддержки клиентов
- Продаж и QA
- Отраслей с жёсткими требованиями комплаенса
При грамотной обработке аудио, разбиении на чанки и при необходимости диаризации Whisper обеспечивает промышленную транскрипцию звонков в большом масштабе.
