Временные метки
Узнайте, как получить временные метки слов при транскрибации.
По умолчанию API возвращает временные метки на уровне сегментов — крупных фрагментов речи. Но можно запросить метки на уровне каждого слова: тогда для любого слова будет известно точное время начала и конца. Это удобно для субтитров, поиска по аудио и синхронизации текста со звуком.
Как получить временные метки слов
Передайте два параметра:
timestamp_granularities[]=word— уровень детализации меток;response_format=verbose_json— подробный формат ответа, в котором содержится массив слов.
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 в словах заменяются на назначенные роли (например, Клиент,
Агент).