AI-система транскрибации и суммаризации подкастов под ключ

Вступление Подкастеры тратят часы на ручную расшифровку и подготовку шоунотов. Средний часовой эпизод — около 10 000 слов текста. Даже с современными ASR-системами Word Error Rate (WER) достигает 20% на записях с несколькими спикерами. Мы используем [Whisper](https://en.wikipedia.org/wiki/Whisper

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Вступление

Подкастеры тратят часы на ручную расшифровку и подготовку шоунотов. Средний часовой эпизод — около 10 000 слов текста. Даже с современными ASR-системами Word Error Rate (WER) достигает 20% на записях с несколькими спикерами. Мы используем Whisper large-v3 от OpenAI: модель с 1550 миллионами параметров, обученная на 680 000 часов многоязычных данных. Она снижает WER до 4–8% на чистых студийных записях, а после дообучения (fine-tuning) — до 3–5%. Связка с GPT-4o позволяет за 5–10 минут получить готовые шоуноты с временными метками.

Как Whisper large-v3 справляется с шумом?

Whisper large-v3 превосходит предыдущие версии благодаря архитектуре encoder-decoder с вниманием на 128 токенов контекста. На зашумлённых записях — уличный шум, эхо, перекрёстные диалоги — модель устойчивее за счёт обучения на синтетических шумах. Для специфических акцентов или радиопомех мы применяем fine-tuning: дообучаем модель на 1–2 часах ваших данных с использованием LoRA-адаптеров. Это поднимает точность на 10–15% без переобучения всей модели.

Почему стоит автоматизировать суммаризацию?

Ручное написание шоунотов для одного подкаста может занимать 2–3 часа. GPT-4o с правильным chain-of-thought промптом справляется за 30 секунд, выделяя до 10 ключевых тем и генерируя краткое описание. Сокращение затрат на редактуру — до 80% по сравнению с наймом копирайтера. При этом качество не уступает: модель учитывает временные метки и тематические переходы.

Сравнение моделей транскрибации

Модель WER (чистое аудио) Скорость (1 час на GPU) Особенности
Whisper large-v3 4–8% 3–4 мин Лучшая точность, open-source
Google Speech-to-Text 10–15% 2–3 мин Хорошая интеграция с GCP
Wav2Vec 2.0 12–18% 1–2 мин Требует дообучения под язык

Whisper large-v3 в два раза точнее Wav2Vec 2.0 по WER и обрабатывает аудио длиной до 12 часов без потери контекста. В отличие от Google API, модель можно развернуть локально — полный контроль над данными и конфиденциальность.

Детальный пайплайн обработки

  1. Загрузка аудиофайла или RSS-ленты. Для RSS мониторинг настроен на опрос фида каждые 6 часов.
  2. Предобработка: нормализация громкости (LUFS -16) и спектральное шумоподавление через библиотеку noisereduce.
  3. Транскрибация Whisper large-v3 с параметрами language="ru", word_timestamps=True.
  4. Диаризация спикеров через pyannote-audio: разделение на голоса, привязка к сегментам.
  5. Генерация шоунотов через GPT-4o с промптом, содержащим транскрипт (до 6000 токенов) и временные метки.
  6. Формирование RSS-фида с новыми элементами и публикация через API вашей CMS.
import whisper from openai import AsyncOpenAI async def transcribe_and_summarize_podcast(audio_path: str) -> dict: # Транскрибация model = whisper.load_model("large-v3") result = model.transcribe( audio_path, language="ru", task="transcribe", verbose=False, word_timestamps=True ) transcript = result["text"] segments = result["segments"] # [{start, end, text}, ...] # Генерация shownotes через GPT-4o client = AsyncOpenAI() response = await client.chat.completions.create( model="gpt-4o", messages=[{ "role": "system", "content": "Создай shownotes для подкаста: краткое описание эпизода (3-5 предложений), ключевые темы списком, временные метки для основных тем в формате MM:SS." }, { "role": "user", "content": transcript[:6000] }] ) # Временные метки ключевых тем chapters = extract_chapters(segments) return { "transcript": transcript, "shownotes": response.choices[0].message.content, "chapters": chapters, "duration_sec": segments[-1]["end"] if segments else 0 } def extract_chapters(segments: list) -> list[dict]: """Выделяем тематические блоки по паузам и семантике""" chapters = [] # Ищем паузы > 3 секунды как границы глав for i in range(1, len(segments)): gap = segments[i]["start"] - segments[i-1]["end"] if gap > 3.0: chapters.append({ "timestamp": int(segments[i]["start"]), "text": segments[i]["text"][:80] }) return chapters 

Интеграция с RSS-лентой

Для подкастов с регулярными выпусками настраиваем RSS-мониторинг. Новый эпизод автоматически скачивается, транскрибируется, и шоуноты публикуются на сайте.

import feedparser import httpx async def process_podcast_feed(rss_url: str) -> list[dict]: feed = feedparser.parse(rss_url) results = [] for entry in feed.entries[:5]: # последние 5 эпизодов audio_url = next( (enc.href for enc in entry.enclosures if enc.type.startswith("audio")), None ) if not audio_url: continue async with httpx.AsyncClient() as client: audio_data = await client.get(audio_url) with open(f"/tmp/{entry.id}.mp3", "wb") as f: f.write(audio_data.content) result = await transcribe_and_summarize_podcast(f"/tmp/{entry.id}.mp3") result["title"] = entry.title result["published"] = entry.published results.append(result) return results 

Что вы получаете?

Полный пайплайн транскрибации и суммаризации, готовый к продакшену. Включены: анализ вашего контента, выбор оптимальной модели (Whisper large-v3 или fine-tuned версия), настройка диаризации, интеграция с вашим сайтом через RSS или API, документация в репозитории, обучение команды. Поддержка после запуска — 1 месяц с гарантией стабильного WER не выше 10% после адаптации. Опыт команды — более 7 лет в NLP и 50+ реализованных проектов по обработке аудио.

Типичные ошибки и как их избежать

Низкое качество записи — главная причина высокого WER. Используйте студийные микрофоны и избегайте реверберации. Для длинных эпизодов (более 2 часов) контекстное окно GPT-4o ограничено 128K токенов, поэтому мы разбиваем аудио на части по 30 минут с перекрытием в 5 секунд для склейки. Алгоритм выделения глав по паузам требует калибровки: мы настраиваем порог тишины под ваш темп речи — от 2 до 4 секунд.

Сроки и стоимость

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

Мы гарантируем стабильную работу и точность. Оценим ваш проект и предложим оптимальную архитектуру — пишите, обсудим детали.