⚖️ Старый vs Новый: аудио и мультимодальный pipeline

← К оглавлению урока

⚡ Что обновляем

  • Не устанавливаем зависимости изнутри учебного скрипта через os.system.
  • Для Hugging Face используем InferenceClient вместо ручного requests.post(), когда это возможно.
  • Делим pipeline на шаги: транскрипт, генерация, анализ, отчёт.

1. Установка зависимостей

Как часто делают в учебных демо

try:
    import whisper
except ImportError:
    os.system("pip install -U openai-whisper")

Такой код удобен для показа, но плохо подходит для проекта: установка неуправляема, ошибки скрываются, окружение меняется во время запуска.

Лучше для проекта

# requirements.txt
openai-whisper
sounddevice
soundfile
python-dotenv
huggingface_hub

# Терминал
pip install -r requirements.txt

Зависимости фиксируются заранее, а скрипт только выполняет задачу.

2. Локальный Whisper и облачный Speech-to-Text

ВариантПлюсыОграничения
Локальный WhisperУчебный контроль, нет отправки аудио в API, можно работать офлайн после скачивания модели.Нужны ffmpeg, CPU/GPU, время обработки и место для модели.
OpenAI APIПроще разворачивать, не нужно держать модель локально, можно использовать актуальные speech-модели.Нужен ключ, сеть, стоимость, ограничения провайдера.

3. Raw requests → InferenceClient

Низкоуровневый запрос

response = requests.post(api_url, headers=headers, json={"inputs": prompt})
image = Image.open(io.BytesIO(response.content))

Нужно вручную проверять статус, JSON-ошибки, content-type, очереди и лимиты.

Клиентский SDK

client = InferenceClient(provider="fal-ai", api_key=os.environ["HF_TOKEN"])
image = client.text_to_image(prompt, model="black-forest-labs/FLUX.1-dev")

Код короче и ближе к текущей документации Hugging Face Inference Providers.

4. Монолитный pipeline → наблюдаемые шаги

Монолит

Одна функция записывает аудио, транскрибирует, генерирует картинку, анализирует её и сразу удаляет временные файлы. Если результат плохой, непонятно, где ошибка.

Шаги

  1. Сохранить аудио и проверить качество записи.
  2. Сохранить транскрипт.
  3. Сохранить промпт и параметры генерации.
  4. Сохранить изображение.
  5. Сохранить CLIP-оценки и комментарий.
⚠️ Для ответственных задач транскрипт нельзя считать абсолютной истиной. Проверяйте расшифровки, особенно при шуме, акцентах, нескольких спикерах и специальных терминах.