Окружение
| Пакет/инструмент | Назначение |
|---|---|
ffmpeg | Декодирование аудио/видео. Нужен локальному Whisper. |
openai-whisper | Локальная open-source версия Whisper. |
torch | Запуск моделей на CPU/GPU. |
sounddevice, soundfile | Запись аудио с микрофона и сохранение WAV. |
openai | Клиент для Speech-to-Text API, если используете облачный вариант. |
huggingface_hub | InferenceClient для 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")