2025-08-14 14:09:25 +03:00
2025-08-17 15:26:59 +03:00
2025-08-14 12:01:29 +03:00
2025-08-14 14:48:53 +03:00
2025-08-14 15:01:57 +03:00
2025-08-14 15:01:57 +03:00
2025-08-13 17:48:32 +03:00
2025-08-17 15:26:59 +03:00
2025-08-08 11:13:35 +03:00
2025-08-14 14:26:38 +03:00

Transcriber Service

Сервис для расшифровки аудиозаписей с REST API.

Возможности

  • Загрузка аудиофайлов любого формата
  • Автоматическая генерация UUID для файлов
  • Сохранение файлов на диск
  • Отслеживание статуса задач расшифровки
  • SQLite база данных для хранения метаданных

Технологии

  • Веб-фреймворк: gin-gonic/gin
  • SQL Builder: doug-martin/goqu
  • Миграции БД: pressly/goose
  • База данных: SQLite
  • UUID: google/uuid

Установка и запуск

  1. Клонируйте репозиторий
  2. Установите зависимости:
    go mod tidy
    
  3. Запустите приложение:
    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
Telegram bot and API for audio transcribes
Readme 279 KiB
Languages
Go 97.2%
Dockerfile 1.6%
Shell 1.2%