
Створення локального API для транскрипції аудіо та відео за допомогою FastAPI та faster-whisper
https://ift.tt/KqfE0BV
Я хотів знайти спосіб транскрибувати аудіо та відео файли, не надсилаючи нічого в хмару. Без ключа API OpenAI, без щомісячних рахунків, без витікання даних із мого пристрою. Тож я створив player2text — локальне API транскрипції, яке працює на faster-whisper.
Ось що воно робить і як я його зібрав.
Проблема
Більшість інструментів транскрипції або коштують за хвилину, або вимагають API-ключ, або й те, й інше. Для особистих проектів, записів наради або чого-небудь чутливого це не ідеально. Whisper запускається локально і на диво добре працює — завдання лише обгорнути його у зручний інтерфейс.
Стек
– FastAPI — чистий асинхронний API, відмінна автоматично згенерована документація за адресою /docs
– faster-whisper — у 4 рази швидше за оригінальний Whisper, приблизно на 50% менше RAM, та та ж точність
– ffmpeg — виконує всі основні завдання з обробки аудіо/відео
Хитрість автоматичного стискання
Найкраща частина цього проєкту — крок попередньої обробки. Перед транскрипцією кожен файл проходить через ffmpeg:
ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 16000 -ac 1 output.wav
Це відсіює відеопотік, зменшує дискретизацію до 16 кГц моно (рівень Whisper за замовчуванням) і конвертує в сирий PCM. 300 МБ відео стає приблизно 5 МБ. Внаслідок цього транскрипція значно швидша.
API
Один ендпойнт виконує все:
POST /api/v1/transcribe
Надішліть файл (за потреби з мовним кодом), і отримаєте:
{
“text”: “Повний транскрипт тут…”,
“language”: “en”,
“duration”: 462.74,
“segments”: [
{
“id”: 1,
“start”: 0.0,
“end”: 9.5,
“text”: “Привіт та ласкаво просимо…”
}
]
}
Мову визначають автоматично, якщо ви її не вкажете — Whisper підтримує 99 мов із коробки.
Запуск
git clone https://ift.tt/b1zZInM
cd audio-to-text
python -m venv venv && source venv/bin/activate
pip install –upgrade pip setuptools wheel
pip install -r requirements.txt
python run.py
Потім відкрийте http://localhost:8000/docs та протестуйте його прямо у браузері.
Що далі
– React frontend (Lovable) для гарного користувацького інтерфейсу з підтримкою drag-and-drop завантаження
– Стрімінг прогресу для довгих файлів
– Посібник з розгортання для Railway/Render
Повний код на GitHub: https://ift.tt/b1zZInM
Буду радий зворотному зв’язку — особливо якщо ви мали справу з довгими аудіофайлами на CPU та маєте ідеї, як ще швидше це зробити!
HI-FI News
via DEV Community https://dev.to
16 квітня 2026 р. о 20:19
April 16, 2026 at 08:19PM

Залишити відповідь