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 → наблюдаемые шаги
Монолит
Одна функция записывает аудио, транскрибирует, генерирует картинку, анализирует её и сразу удаляет временные файлы. Если результат плохой, непонятно, где ошибка.
Шаги
- Сохранить аудио и проверить качество записи.
- Сохранить транскрипт.
- Сохранить промпт и параметры генерации.
- Сохранить изображение.
- Сохранить CLIP-оценки и комментарий.
⚠️ Для ответственных задач транскрипт нельзя считать абсолютной истиной. Проверяйте расшифровки, особенно при шуме, акцентах, нескольких спикерах и специальных терминах.