🔖 Справочник: Whisper, ffmpeg и мультимодальные API

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

⚡ Минимум для старта

# Windows PowerShell
python -m venv venv
venv\Scripts\Activate.ps1
pip install torch openai-whisper sounddevice soundfile pillow python-dotenv
pip install huggingface_hub requests
pip install git+https://github.com/openai/CLIP.git
ffmpeg -version

Окружение

Пакет/инструментНазначение
ffmpegДекодирование аудио/видео. Нужен локальному Whisper.
openai-whisperЛокальная open-source версия Whisper.
torchЗапуск моделей на CPU/GPU.
sounddevice, soundfileЗапись аудио с микрофона и сохранение WAV.
openaiКлиент для Speech-to-Text API, если используете облачный вариант.
huggingface_hubInferenceClient для text-to-image.
CLIPПроверка связи изображения и текстовых описаний.

Установка ffmpeg

# Вариант 1: winget
winget install Gyan.FFmpeg

# Вариант 2: Chocolatey
choco install ffmpeg

# Проверка
ffmpeg -version

Если Whisper пишет, что не может открыть аудио или не найден ffmpeg, сначала проверьте PATH и перезапустите терминал.

Локальный Whisper

# Установка
pip install -U openai-whisper

# Быстрый CLI-запуск
whisper lecture.wav --model base --language Russian --output_format txt

# Извлечь аудио из видео перед транскрибацией
ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 16000 -ac 1 audio.wav
Размер моделиКогда брать
tinyБыстрый тест, слабый компьютер, низкая точность.
baseУчебный баланс скорости и качества.
small / mediumЛучше качество, больше времени и памяти.
largeМаксимальное качество локально, нужен ресурс.

Speech-to-Text API

# Установка клиента
pip install openai python-dotenv

# .env
OPENAI_API_KEY=sk-...
# transcribe_api.py
from openai import OpenAI

client = OpenAI()

with open("lecture.wav", "rb") as audio_file:
    transcript = client.audio.transcriptions.create(
        model="gpt-4o-transcribe",
        file=audio_file,
    )

print(transcript.text)
⚠️ Доступные модели, форматы ответа и лимиты OpenAI API меняются. Перед production-запуском сверяйте код с официальной страницей Speech to text.

Hugging Face text-to-image

# .env
HF_TOKEN=hf_...
# generate_image.py
import os
from dotenv import load_dotenv
from huggingface_hub import InferenceClient

load_dotenv()
client = InferenceClient(provider="fal-ai", api_key=os.environ["HF_TOKEN"])

image = client.text_to_image(
    "A clean technical illustration of an audio waveform turning into text",
    model="black-forest-labs/FLUX.1-dev",
)
image.save("generated.png")