NexaraNexara

Временные метки

Узнайте, как получить временные метки слов при транскрибации.

По умолчанию API возвращает временные метки на уровне сегментов — крупных фрагментов речи. Но можно запросить метки на уровне каждого слова: тогда для любого слова будет известно точное время начала и конца. Это удобно для субтитров, поиска по аудио и синхронизации текста со звуком.

Как получить временные метки слов

Передайте два параметра:

  • timestamp_granularities[]=word — уровень детализации меток;
  • response_format=verbose_json — подробный формат ответа, в котором содержится массив слов.
from nexara import Nexara

client = Nexara()  # ключ из переменной окружения NEXARA_API_KEY

result = client.transcriptions.create(
    file="audio.mp3",
    response_format="verbose_json",
    timestamp_granularities=["word"],
)

for word in result.words:
    print(f"{word.start:.2f}{word.end:.2f}: {word.word}")
import { Nexara } from "nexara-sdk";

const client = new Nexara(); // ключ из переменной окружения NEXARA_API_KEY

const result = await client.transcriptions.create({
  file: "audio.mp3",
  response_format: "verbose_json",
  timestamp_granularities: ["word"],
});

for (const word of result.words ?? []) {
  console.log(`${word.start.toFixed(2)}–${word.end.toFixed(2)}: ${word.word}`);
}
curl https://api.nexara.ru/v1/audio/transcriptions \
  -H "Authorization: Bearer nx-XXXXXXXXXXXXXXXXXXXXXXXX" \
  -F "file=@audio.mp3" \
  -F "model=whisper-1" \
  -F "response_format=verbose_json" \
  -F "timestamp_granularities[]=word"

Временные метки слов возвращаются только в формате verbose_json. В форматах json и text массив слов не передаётся.

Структура ответа

В ответе появляется массив words, где для каждого слова указаны время начала (start), время конца (end) в секундах и уверенность модели (prob):

{
  "task": "transcribe",
  "text": "Привет мир",
  "words": [
    { "word": "Привет", "start": 0.0, "end": 0.42, "prob": 0.99 },
    { "word": "мир", "start": 0.42, "end": 0.88, "prob": 0.98 }
  ],
  ...
}

Уровни детализации

segment (по умолчанию)

Метки на уровне крупных фрагментов речи. Подходит для большинства сценариев и работает без дополнительных параметров.

word

Временные метки для каждого отдельного слова. Полезно для генерации субтитров.

Временные метки и диаризация

При диаризации (task=diarize) временные метки слов дополнительно содержат идентификатор или роль говорящего в поле speaker.

Пример вывода:

{
  "task": "diarize",
  "words": [
    {
      "word": "Здравствуйте",
      "start": 0.0,
      "end": 0.8,
      "prob": 0.99,
      "speaker": "speaker_0"
    },
    {
      "word": "Слушаю",
      "start": 1.2,
      "end": 1.7,
      "prob": 0.97,
      "speaker": "speaker_1"
    }
  ],
  ...
}

Если включена разметка ролей, метки speaker_N в словах заменяются на назначенные роли (например, Клиент, Агент).

On this page