Skip to content

feat: add Deepgram Nova-3 transcription provider - #10

Merged
fUS1ONd merged 5 commits into
devfrom
plan/deepgram-nova3-transcription
Jul 24, 2026
Merged

feat: add Deepgram Nova-3 transcription provider#10
fUS1ONd merged 5 commits into
devfrom
plan/deepgram-nova3-transcription

Conversation

@fUS1ONd

@fUS1ONd fUS1ONd commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

Что изменено

  • добавлен второй STT-провайдер Deepgram с моделью Nova-3;
  • добавлен provider-neutral конфиг и фабрика выбора Groq/Deepgram;
  • аудио отправляется в Deepgram потоково с Content-Length, без чтения файла целиком;
  • добавлены SRT-нормализация, progress/usage callbacks и безопасные retry/backoff;
  • каждый запрос Deepgram использует mip_opt_out=true, автоматического fallback на Groq нет;
  • добавлены фиксированный язык, автоопределение доминирующего языка и режим language=multi;
  • обновлены env-примеры, README и provider-neutral ASR prompt;
  • сохранено прежнее поведение Groq.

Зачем

Позволяет использовать Deepgram Nova-3 для транскрибации, в том числе на
тестовом/free плане, не меняя публичные контракты пайплайна и формат результата.

Конфигурация

Для фиксированного русского языка:

TRANSCRIBE_PROVIDER=deepgram
DEEPGRAM_API_KEY=...
DEEPGRAM_MODEL=nova-3
DEEPGRAM_LANGUAGE=ru
DEEPGRAM_DETECT_LANGUAGE=false
DEEPGRAM_UTT_SPLIT=0.8

Для автоматического определения одного доминирующего языка:

DEEPGRAM_DETECT_LANGUAGE=true

В этом режиме параметр language не отправляется, а значение
DEEPGRAM_LANGUAGE игнорируется.

Для аудио, где речь переключается между несколькими языками (code-switching):

DEEPGRAM_DETECT_LANGUAGE=false
DEEPGRAM_LANGUAGE=multi

detect_language=true и language=multi решают разные задачи: первый определяет
доминирующий язык записи, второй распознаёт смешанную многоязычную речь.

Обязателен только ключ выбранного STT-провайдера.

Проверки

  • ruff check . — passed
  • ruff format --check . — passed
  • unit tests — 406 passed
  • Deepgram/Groq/config/factory/usage/error targeted tests — 65 passed
  • полный pytest — 452 passed, 2 unrelated failures в test_video_cutter_sync.py:
    локальный FFmpeg 4.4.2 не поддерживает существующую опцию -fps_mode

Live API key в код, тесты и историю git не добавлялся.

@fUS1ONd
fUS1ONd marked this pull request as ready for review July 24, 2026 13:45
@fUS1ONd
fUS1ONd merged commit 9687e62 into dev Jul 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant