Гайд · TNWS AI

Как улучшить распознавание терминов в Deepgram через keyterm

6 мин

Keyterm Prompting для Nova-3 и Flux: повтор параметров, URL-кодирование фраз, ограничения, регистр и честный тест recall на словаре терминов.

Что решает этот материал

Статья отвечает на запрос «как улучшить распознавание терминов Deepgram keyterm». Параметры и ограничения сверены 12 сентября 2026 года с первичной документацией Deepgram. Цель — получить воспроизводимый результат на контрольном аудио и доказать его пригодность, а не принять любой HTTP 200 за успех.

Применимость и версия

Моноязычные и multilingual варианты Nova-3, а также Flux. Для Nova-2 официальная документация направляет к legacy-функции Keywords, а не к keyterm.

Перед запуском проверьте страницу Models and Languages: доступные языки, голоса и сочетания функций меняются. Зафиксируйте endpoint, model id, язык, формат входа и версию SDK в журнале теста. Постоянный ключ храните только на backend как DEEPGRAM_API_KEY; не помещайте его в браузер, мобильный пакет, репозиторий или скриншот.

Факты из официальной документации

  • Можно передать до 100 важных терминов; документация советует фокусироваться на 20–50 и оставаться ниже лимита 500 токенов.
  • Несколько терминов задают повторением параметра: keyterm=a&keyterm=b.
  • Многословную фразу кодируют %20 или +; запятые и точки с запятой не разделяют термины.
  • Веса и intensifier у keyterm не поддерживаются: форма term:0.15 молча рассматривается как буквальный термин.

Эти параметры решают разные задачи. Модель распознаёт речь, formatter меняет представление текста, diarization присваивает словам номера говорящих, а utterances формирует смысловые сегменты. Включение одной функции не означает автоматическое включение остальных, кроме явно документированных связей.

Подготовка контрольных данных

  1. Сделайте короткую синтетическую запись без персональных данных. Запишите точный эталон текста и ожидаемые границы реплик.
  2. Измерьте реальный контейнер, кодек, sample rate и число каналов через ffprobe; расширение файла само по себе ничего не гарантирует.
  3. Для сравнения функций используйте один и тот же файл. Меняйте ровно один query parameter, иначе нельзя объяснить разницу.
  4. Определите машинные проверки до запроса: непустое поле, допустимый язык, отсутствие секрета, множество speaker id или совпадение ключевого термина.
  5. Храните исходный JSON целиком вместе с request id. Производный TXT или субтитры не заменяют ответ API.

Пример карточки входа:

file: control.wav
container: wav
codec: pcm_s16le
sample_rate: 16000
channels: 1
expected_phrase: "контрольная фраза"
contains_real_personal_data: false

Не копируйте характеристики этого шаблона вслепую: значения обязаны совпадать с вашим файлом. Для streaming добавьте размер audio chunk, частоту отправки и момент намеренного разрыва соединения.

Пошаговая настройка

  1. Создайте отдельный ключ для тестовой среды и экспортируйте DEEPGRAM_API_KEY. Не выводите переменную командой, которая попадёт в общие логи.
  2. Сверьте поддержку функции для выбранных модели, языка и batch/streaming режима. Особенно внимательно проверяйте языковые ограничения intelligence и redaction.
  3. Выполните минимальный запрос ниже без собственных retry и middleware. Так видны исходные HTTP-код, заголовки и тело ошибки.
  4. Проверьте Content-Type входа и фактический формат байтов. Для URL-входа удостоверьтесь, что ссылка доступна серверу и отдаёт именно медиа.
  5. Разберите документированное поле ответа; не ищите текст рекурсивно и не подставляйте пустую строку вместо отсутствующего объекта.
  6. Сравните результат с эталоном: На размеченном наборе из 30 произнесений считается recall каждого целевого термина до и после keyterm; улучшение принимается по агрегату, а не по одному удачному слову.
  7. Проведите отрицательный тест: испорченный ключ, неподдерживаемая комбинация, неверный формат либо контрольный секрет. Ожидаемая ошибка должна быть обработана явно.

Рабочий шаблон

curl -sS -G 'https://api.deepgram.com/v1/listen' \
 -H "Authorization: Token $DEEPGRAM_API_KEY" \
 -H 'Content-Type: audio/wav' --data-binary @catalog.wav \
 --data-urlencode 'model=nova-3' \
 --data-urlencode 'language=ru' \
 --data-urlencode 'keyterm=TNWS' \
 --data-urlencode 'keyterm=векторная база' -o terms.json

Шаблон не содержит настоящего ключа. Файлы и model id должны быть проверены в текущей документации. Команда jq -e важна: она завершает сценарий ошибкой, когда бизнес-условие ложно, даже если транспортный запрос прошёл.

Контрольный вход и ожидаемый результат

Используйте запись с заранее известным текстом, а не случайный подкаст. Для терминов подготовьте несколько произнесений разными дикторами; для diarization — известный порядок двух голосов; для redaction — только синтетические номера. Оценка на одном красивом примере не показывает устойчивость.

Ожидаемый результат: На размеченном наборе из 30 произнесений считается recall каждого целевого термина до и после keyterm; улучшение принимается по агрегату, а не по одному удачному слову.

Для распознавания посчитайте word error rate или хотя бы долю совпавших обязательных фраз. Для сегментации проверьте временной порядок и потерянные слова. Для TTS техническая валидность файла не заменяет прослушивание. Для summary отдельно проверяйте факты: модель может создать связный, но неточный пересказ.

Критерии приёмки

  • термины раздельны
  • фразы закодированы
  • датасет размечен
  • baseline сохранён
  • recall посчитан

Также сохраняйте HTTP-код, request id, model metadata, длительность исходного аудио и время обработки. Порог качества определяйте на своей размеченной выборке. Универсальное число confidence не гарантирует правильности бренда, суммы или фамилии.

Типичные ошибки и что не делать

  • Соединять разные термины запятой.
  • Добавлять вес как в legacy keywords.
  • Включать сотни общеупотребительных слов и не измерять recall.

Не включайте сразу все параметры. Сначала получите baseline, затем добавляйте diarization, utterances, formatting или intelligence по одному. Иначе регрессия не локализуется. Не повторяйте запросы с ошибкой 400: это ошибка конфигурации, а не временный сбой. Для 429 и 5xx используйте ограниченный backoff с jitter и сохраняйте идемпотентность собственной обработки.

Нельзя считать номер спикера личностью, автоматически публиковать низкоуверенные имена или полагаться на redaction как на единственный уровень защиты. Минимизируйте исходные данные до передачи, ограничивайте доступ к аудио и удаляйте временные файлы по своей политике хранения.

Готовый промпт для аудита результата

Ты проверяешь результат Deepgram для сценария «как улучшить распознавание терминов Deepgram keyterm».
Используй только приложенные: эталон, параметры запроса и JSON-ответ.
Верни таблицу: проверка | ожидается | фактически | PASS/FAIL | исправление.
Не восстанавливай отсутствующие слова. Отдельно отметь низкий confidence,
несовместимость model/language/feature и любое появление контрольного секрета.
HTTP 200 сам по себе не является PASS.

Перед отправкой JSON в другую модель удалите ключи, реальные персональные данные и лишние фрагменты разговора. Итоговый PASS должен вычисляться кодом по заданным правилам, а не мнением второго генератора.

Проверка на серии реальных данных

Соберите 20–50 обезличенных примеров из целевого канала: тихая и шумная запись, разные микрофоны, короткая пауза, перебивание, редкий термин и пустой звук. Храните эталон отдельно от ответа API. После смены model id, языка, форматтера или SDK прогоняйте весь набор заново.

Отдельно измеряйте технический успех и содержательный: долю HTTP 200, долю валидных JSON, полноту финальных сегментов и точность обязательных полей. Полезная метрика — стоимость и задержка одного принятого результата с учётом повторов и ручной проверки, а не скорость одного удачного запроса.

FAQ

Достаточно ли HTTP 200?

Нет. Нужно проверить структуру JSON или аудиофайл и конкретное бизнес-условие.

Можно ли ориентироваться только на confidence?

Нет. Калибруйте порог на собственной размеченной выборке и отдельно проверяйте критичные сущности.

Где хранить API-ключ?

В backend-секрете или менеджере секретов; не в клиентском коде и не в публикации.

Нужно ли фиксировать model id?

Да. Иначе смена значения по умолчанию может незаметно изменить качество и формат результата.

Официальный источник

Частые вопросы

Достаточно ли HTTP 200?

Нет, проверьте структуру и бизнес-условие.

Можно ли хранить ключ в браузере?

Нет, постоянный ключ хранится на backend.

Нужно ли тестировать один и тот же файл?

Да, для A/B меняйте ровно один параметр.

Где проверять совместимость?

В актуальной официальной документации Deepgram.

Читайте также

Комментарии

Пока тихо. Скажите первое слово