Как стать автором
Обновить

Спецификация формата RTTM: полное техническое описание

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров361

Если бы у аудио был паспорт — он был бы в формате RTTM.

Предисловие

Совсем недавно, при подготовке данных для обучения модели диаризации я впервые всерьёз столкнулся с форматом RTTM, о котором прежде знал лишь поверхностно. Казалось бы, очередной текстовый формат, но именно он лежит в основе точной и структурированной разметки аудио: кто говорит, когда и как долго.

Именно тогда я понял, насколько ключевую роль играет RTTM в задачах автоматического анализа речи. Однако, попытавшись разобраться в его устройстве, я с удивлением обнаружил, что внятной и системной информации на русском языке практически нет. Ни подробного объяснения, ни примеров, ни тем более живых пояснений.

Этот про͏бел и с͏тал началом статьи͏, кото͏рую вы читаете в данный момент. Надеюсь она будет хорошим путев͏одите͏лем для тех, кто делает перв͏ы шаги в мире диаризации, распознавания речи и структурированной аудиоразметке.

Описание формата

RTTM (Rich Transcription Time Marked) — это текстовый формат разметки аудио, предназначенный для описания структуры и содержимого аудиозаписей. Он особенно важен в задачах распознавания речи и диаризации — когда необходимо определить, кто именно произнёс ту или иную фразу и в какой момент времени.

???
???

Каждая строка в RTTM-файле — это описание одного звукового события: речь, тишина, шум, слово и т. д. Каждая строка RTTM описывает событие во времени: его тип (речь, шум, слово и др.), временные границы, а также имя говорящего и другие параметры. Всё это — в виде обычного текста, который легко читать и обрабатывать программами.

RTTM широко используется в наборах данных и инструментах по диаризации и ASR. Например, множество корпусов от LDC сопровождаются разметкой RTTM, а соревнования по диаризации (например, DIHARD) и поиск по ключевым словам (OpenKWS) требуют вывод в RTTM-формате. Современные библиотеки – от академических (pyannote.audio, DScore) до промышленных (NVIDIA NeMo) – поддерживают этот формат для обмена аннотациями результатов​.

Типы сегментов RTTM и их поля

RTTM определяет несколько видов объектов (сегментов), каждый из которых описывает определенный тип события или метаданных в аудиозапсиси. Все строки RTTM имеют фиксированный формат, который представляет из себя 10 полей. Однако в зависимости от типа сегмента некоторые поля содержат значения, а не используются (отмечаются как <NA> – Not Applicable).

Ниже представлена таблица с основными типами сегментов, их назначением и заполнением полей (Таблица 1):

Таблица 1 – Типы RTTM-сегментов и их поля.

Тип (Type)

Назначение (объект)

Поля с данными

Поля без данных

SPEAKER

Сегмент речи от конкретного говорящего (для диаризации)

File, Chnl, Tbeg, Tdur, Name (ID говорящего)

Ortho, Stype, Conf, Slat всегда <NA>

LEXEME

Слово в транскрипции речи

File, Chnl, Tbeg, Tdur, Ortho (текст слова), Stype (подтип)

Name обычно <NA>; поля Conf и Slat — по возможности, иначе <NA>

NON-LEX

Несловесный вокализованный звук (например, смех, кашель)

File, Chnl, Tbeg, Tdur, Stype (категория звука)

Ortho <NA>; Name <NA>; Conf и Slat — опционально

NON-SPEECH

Фоновая неречевая активность (шум, музыка и т. д.)

File, Chnl, Tbeg, Tdur, Stype (категория шума)

Ortho <NA>; Name <NA>; Conf и Slat — опционально

SPKR-INFO

Метаданные о говорящем (пол, возраст и др.)

File, Chnl, Stype (категория), Name (ID), Conf (опц.)

Tbeg, Tdur, Ortho <NA>; Slat <NA>

SEGMENT

Структурный сегмент (например, область оценки)

File, Chnl, Tbeg, Tdur; Stype (например, eval)

Ortho, Name, Conf, Slat обычно <NA>

NOSCORE

Участок, исключённый из оценки

File, Chnl, Tbeg, Tdur (интервал исключения)

Все остальные поля <NA>

NO_RT_METADATA

Область без метаданных реального времени

File, Chnl, Tbeg, Tdur (интервал)

Все остальные поля <NA>

То есть, каждая строка RTTM файла состоит из следующих полей:

  1. Type — Тип сегмента (например, SPEAKER, LEXEME, NON-SPEECH и др.).

  2. file — Имя аудиофайла без расширения.

  3. chnl — Номер канала (1 — моно, 1/2 — для стерео). Всегда указывается.

  4. tbeg — Время начала сегмента в секундах (число с плавающей точкой).

  5. tdur — Продолжительность сегмента в секундах.

  6. ortho — Орфографическое представление сегмента (например, слово для LEXEME). Если неприменимо — <NA>.

  7. stype — Подтип сегмента (например, fp для паузы, laugh для смеха). Если не требуется — <NA>.

  8. name — Идентификатор говорящего или объекта (speaker_1, john_doe и т. п.). В некоторых типах — <NA>.

  9. conf — Уверенность системы (от 0.0 до 1.0) — например, для слов в ASR. Если нет — <NA>.

  10. slat — Look-ahead time — время, использованное системой «наперёд» для принятия решения. Обычно <NA>.

Дабы лучше понять структуру RTTM файлов, в следующем разделе рассмотрим небольшой пример.

Пример содержимого RTTM-файла

Представим, что у нас есть аудиофайл tech_podcast.wav, в котором ведется разговор двух спикеров (мужчин): сначала начинает говорить Speaker_X, затем его речь на мгновение перекрывается короткой музыкальной заставкой или любыми другими звуками, а после чего вступает второй спикер — Speaker_Y.

В формате RTTM такая сцена может быть описана следующим образом:

SPEAKER    tech_podcast 1 0.00 2.50 <NA> <NA> Speaker_X <NA> <NA>
LEXEME     tech_podcast 1 0.00 0.70 welcome lex <NA> <NA> <NA>
NON-SPEECH tech_podcast 1 2.00 1.00 <NA> music <NA> <NA> <NA>
SPEAKER    tech_podcast 1 3.00 2.00 <NA> <NA> Speaker_Y <NA> <NA>
SPKR-INFO  tech_podcast 1 <NA> <NA> <NA> male Speaker_X <NA> <NA>
SPKR-INFO  tech_podcast 1 <NA> <NA> <NA> male Speaker_Y <NA> <NA>

На первый взгляд — это просто набор непонятных строк. Давайте разберём, что означает каждая из них:

  • SPEAKER (Speaker_X) — сегмент речи первого спикера, который начинается на отметке 0.00 секунды и длится 2.50 секунды.

  • LEXEME — в начале файла произносится слово welcome, продолжительностью 0.70 секунды.

  • NON-SPEECH — музыкальная вставка (или прочие звуки), звучащая с 2.00 до 3.00 секунд.

  • SPEAKER (Speaker_Y) — второй спикер начинает говорить с 3.00 и до 5.00 секунд.

  • SPKR-INFO — метаданные, указывающие, что оба спикера — мужчины. Временные поля здесь не заполняются (<NA>), поскольку информация является глобальной.

Этот пример показывает, насколько гибким и удобным может быть формат RTTM. Он позволяет описывать не только речь и отдельные слова, но и фоновые события и различные характеристики участников разговора. Т

Такой подход помогает составить полную, структурированную картину происходящего в аудиофайле.

Особенности RTTM формата

Формат RTTM уже давно стал де-факто стандартом в задачах речевой разметки и диаризации. Он широко используется и вовсю поддерживается множеством инструментов и отлично подходит для систем, где нужно понимать, кто говорит, когда и что именно. Но, как и у любого формата, у RTTM есть не только сильные стороны, но и свои ограничения. Давайте разберёмся, за что его ценят — и с какими нюансами стоит быть осторожным.

Что хорошего в RTTM?

1. Его легко читать и редактировать вручную
RTTM — это обычный текстовый файл, который можно открыть в любом редакторе. Строки в нём логично структурированы, и даже без специального софта можно понять, где кто говорит, когда и что происходит. А если нужно — можно быстро что-то подправить прямо руками.

2. Один формат — много видов разметки
В RTTM можно описывать не только речь (SPEAKER), но и слова (LEXEME), паузы и шумы (NON-SPEECH), вокализации (NON-LEX), а также метаданные о говорящих (SPKR-INFO). Это делает его удобным универсальным решением для комплексной аннотации аудио.

3. Поддержка одновременных событий
Формат позволяет корректно описывать ситуации, когда, например, говорят сразу два человека или кто-то говорит на фоне шума. Такие случаи поддерживаются большинством известных инструментов (вроде md-eval или DScore), что делает RTTM удобным даже для сложных сценариев.

4. Высокая детализация
Можно указывать не только тип события, но и его подтип — например, смех, запинка, обрыв слова. Есть даже поле conf, где можно задать уровень уверенности системы. Всё это открывает возможности для тонкой настройки и анализа, например, при поиске ключевых слов.

5. Удобен для парсинга
Каждая строка — это ровно 10 полей, разделённых пробелами. Да, это жёсткое правило, но оно работает: никакой двусмысленности, удобно для скриптов и интеграции в пайплайны.

6. Совместим с основными метриками
Если вы оцениваете качество диаризации, скорее всего, используете md-eval, pyannote.metrics или DScore. Все они работают с RTTM напрямую. Кроме того, RTTM можно конвертировать в CTM, чтобы посчитать WER и другие метрики.

Но не всё так гладко...

1. Нет прямой связи между словами и говорящими
Строки с аннотациями слов (LEXEME) не содержат информации о том, кто их произнёс. Чтобы это выяснить, приходится сопоставлять времена вручную с сегментами SPEAKER. Некоторые решают это, добавляя в LEXEME поле name — но это уже не по стандарту.

2. Жёсткий, шумный формат
Даже если половина полей в строке не используется, они всё равно должны быть — в виде <NA>. Это делает файлы более громоздкими и увеличивает риск ошибок, особенно если случайно забыть одно поле — сдвинется всё.

3. Нет вложенности или связей между сегментами
RTTM — это плоская временная разметка. Вы не сможете в нём выразить логику вроде «вопрос–ответ» или «ремарка к реплике». Это чисто временная шкала событий, без семантики.

4. Требуется ручная валидация
Формат никак не проверяет, не выходят ли сегменты за пределы аудио, не перекрываются ли у одного и того же говорящего и т.д. Эти проверки нужно делать отдельно — например, с помощью скриптов в DScore.

5. Расширять формат сложно
Если вам вдруг захочется добавить, скажем, поле с эмоцией или указанием языка — увы, официально этого сделать нельзя. Придётся либо переопределять уже существующие поля, либо нарушать стандарт. И тогда совместимость с внешними инструментами может сломаться.

6. На практике встречается много «вольных» вариаций
Хотя формат вроде бы строго определён, в реальных проектах можно встретить RTTM-файлы с 9 полями, без SPKR-INFO, или с добавленным name в LEXEME. Некоторые инструменты это проглатывают без проблем, но если у вас строгий пайплайн — могут возникнуть ошибки.

Несмотря на свои особенности и ограничения, RTTM остаётся одним из самых надёжных и универсальных форматов для аннотации речи. Он строг, но понятен. Не гибок, зато предсказуем. Его поддерживает большинство инструментов для оценки диаризации, а его простота делает его удобным как для человека, так и для машины. Пусть не идеальный, но проверенный и рабочий инструмент.

Применение RTTM в современных инструментах и системах.

Как уже было сказано выше, формат RTTM остаётся широко используемым стандартом в задачах диаризации, аннотации речи и оценки качества распознавания. Благодаря простоте, читаемости и структурированности, он активно интегрирован в современные фреймворки и библиотеки.

Так где же используется формат RTTM?

Ответ на данный вопрос указан в таблице 2.

Таблица 2 – Использование формата RTTM в современных инструментах.

Инструмент / Библиотека

Описание

Как используется RTTM

Pyannote.audio

Фреймворк от Hugging Face для диаризации

Использует RTTM для ввода/вывода; поддержка 10 полей (по NIST); совместим с pyannote.metrics, DScore, GUI-аннотаторами

NVIDIA NeMo

Фреймворк для ASR и диаризации

Требует RTTM с сегментами SPEAKER; поддерживает вывод в формате RTTM; полностью совместим с DScore

DScore

Оценка DER от NIST

Поддерживает RTTM-гипотезы и ссылки; встроенная валидация validate_rttm.py; используется в DIHARD, VoxSRC

Kaldi

Классический фреймворк для ASR

Скрипт make_rttm.py генерирует RTTM из внутреннего формата; удобно для оценки и преобразования

ESPnet, WhisperX, SpeechBrain

Современные фреймворки для ASR и диаризации

Импорт/экспорт RTTM реализован для VAD и диаризации; легко интегрируются в внешние пайплайны

GUI и редакторы

Инструменты визуальной разметки

RTTM редактируется в ELAN, Praat, Audacity (после конверсии); поддержка подсветки в VS Code (RTTM Syntax HL)

Форматные конвертеры

Утилиты и скрипты для преобразования форматов

Поддержка преобразования RTTM ↔ CTM, CSV, ELAN, STM, JSON и др.

Заключение

RTTM — это не просто формат, а целая система для описания того, что происходит в аудиофайле: кто говорит, когда именно, как долго, что звучит на фоне и что именно произносится. Он объединяет в себе диаризацию, транскрипцию, шумы, вокализации и метаданные, выстраивая их в единую временную картину.

RTTM по-прежнему остается основным стандартом алгоритмов диаризации и оценки речи и во многом именно благодаря своей скорости исполнения и читабельности его структуры, совместимости с множеством инструментов и способами интеграции в любые пайплайны.

На практике RTTM стабильно работает с большинством существующих библиотек и скриптов — часто без дополнительной настройки. Это значит, что при интеграции и анализе у вас будет меньше неожиданностей и больше предсказуемости.

А если вы только начинаете разбираться в мире работы с речевыми данными, знание RTTM — отличный старт. Это своего рода «базовый язык» для специалистов по речи: простой, понятный и поддерживаемый практически везде.

Теги:
Хабы:
0
Комментарии3

Публикации

Истории

Работа

Data Scientist
55 вакансий

Ближайшие события

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
22 апреля
VK Видео Meetup 2025
МоскваОнлайн
23 апреля
Meetup DevOps 43Tech
Санкт-ПетербургОнлайн
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область