Transcriber Service
Сервис для расшифровки аудиозаписей с REST API.
Возможности
- Загрузка аудиофайлов любого формата
- Автоматическая генерация UUID для файлов
- Сохранение файлов на диск
- Отслеживание статуса задач расшифровки
- SQLite база данных для хранения метаданных
Технологии
- Веб-фреймворк: gin-gonic/gin
- SQL Builder: doug-martin/goqu
- Миграции БД: pressly/goose
- База данных: SQLite
- UUID: google/uuid
Установка и запуск
- Клонируйте репозиторий
- Установите зависимости:
go mod tidy
- Запустите приложение:
go run main.go
Сервер запустится на порту 8080.
API Endpoints
POST /api/transcribe
Загружает аудиофайл и создает задачу на расшифровку.
Параметры:
audio
(form-data) - аудиофайл для расшифровки
Пример запроса:
curl -X POST \
http://localhost:8080/api/transcribe \
-F "audio=@/path/to/your/audio.mp3"
Ответ:
{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"file_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"status": "pending"
}
GET /api/transcribe/:id
Получает статус задачи расшифровки по ID.
Пример запроса:
curl http://localhost:8080/api/transcribe/550e8400-e29b-41d4-a716-446655440000
Ответ:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending",
"file_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"created_at": "2024-01-01T12:00:00Z",
"updated_at": "2024-01-01T12:00:00Z"
}
GET /health
Проверка работоспособности сервиса.
Ответ:
{
"status": "ok",
"message": "Transcriber service is running"
}
Статусы задач
pending
- задача создана, ожидает обработкиprocessing
- задача выполняетсяcompleted
- задача завершена успешноfailed
- задача завершена с ошибкой
Структура проекта
transcriber/
├── main.go # Точка входа приложения
├── go.mod # Зависимости Go
├── models/
│ └── models.go # Модели данных
├── database/
│ └── database.go # Слой работы с БД
├── handlers/
│ └── transcribe.go # HTTP обработчики
├── migrations/
│ ├── 001_create_files_table.sql
│ └── 002_create_transcribe_jobs_table.sql
└── data/
├── files/ # Директория для сохранения файлов
└── transcriber.db # SQLite база данных (создается автоматически)
База данных
Таблица files
id
(TEXT) - UUID файлаtype
(TEXT) - MIME-тип файлаsize
(INTEGER) - размер файла в байтахcreated_at
(DATETIME) - время создания
Таблица transcribe_jobs
id
(TEXT) - UUID задачиstatus
(TEXT) - статус задачиfile_id
(TEXT) - ссылка на файлcreated_at
(DATETIME) - время созданияupdated_at
(DATETIME) - время последнего обновления
Разработка
Для добавления новых миграций используйте goose:
# Создание новой миграции
goose -dir migrations create migration_name sql
# Применение миграций
goose -dir migrations sqlite3 data/transcriber.db up
# Откат миграций
goose -dir migrations sqlite3 data/transcriber.db down
Description
Languages
Go
97.2%
Dockerfile
1.6%
Shell
1.2%