Skip to content

Распознавание речи

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

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

  • Эфиру обязателен архив. Без записи распознаванию неоткуда брать звук и некуда писать результат.
  • Отставание безопасно. Если распознавание не поспевает за эфиром, субтитры отстают и потом догоняют; на самом эфире это не сказывается никак.

Как включить

Распознавание живёт на вкладке Обработка карточки эфира — там же, где субтитры, телетекст и превью, — в секции Распознавание речи. Включает его переключатель Распознавать речь в субтитры.

Секция распознавания речи на вкладке обработки

Полей четыре, и все они не обязательны — умолчаний хватает, чтобы включить распознавание одним переключателем.

Поле Что задаёт
Модель Размер распознавателя. Крупная модель точнее, но медленнее и требует больше памяти.
Язык Код ISO-639-1, например ru. Пусто — определить по звуку.
Источник звука Дорожка эфира, которую слушать. По умолчанию первая.
Окно распознавания, с До 120 секунд. Длинное окно точнее по смыслу, но реплика появляется позже.

Язык лучше задать, если он известен. Автоопределение решает по первым секундам звука и на записи, которая начинается с музыки или тишины, ошибается — а ошибка в языке портит всю дорожку, а не одну реплику.

Источник звука нужен там, где эфир везёт несколько языков: распознавание слушает ровно одну дорожку. Если выбранной дорожки в эфире нет, состояние так и скажет — «Выбранная аудиодорожка в эфире не найдена».

Без записи архива не запускается

Если включить распознавание на эфире без записи, панель отвечает сразу, не дожидаясь сохранения:

Предупреждение о том, что распознаванию нужна запись архива

Это не запрет сохранить настройку, а предупреждение о том, что она не заработает. Включите эфиру архив — он живёт на соседней вкладке DVR той же карточки, — и распознавание поднимется само.

Состояние распознавания

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

Состояние распознавания: работает, отставание, распознано звука, реплик

  • Работает / Не работает — поднято ли распознавание. «Не работает» всегда сопровождается причиной текстом.
  • Отставание — на сколько распознанное отстаёт от текущего момента. На живом краю это секунды; на архиве, который распознавание догоняет с начала, — часы, и это нормальный рабочий режим, а не сбой.
  • Распознано звука — сколько звука уже прошло через распознаватель.
  • Реплик — сколько строк субтитров написано.
  • Ошибок — сбои чтения архива и распознавания. Ноль здесь — обычное состояние.
  • Последняя реплика — когда распознавание в последний раз что-то написало.

Причины, по которым распознавание не поднимается, панель называет прямо:

Что написано Что делать
У стрима нет записи архива Включить архив на вкладке DVR.
Файл модели не найден или не загрузился Положить файл модели на сервер (ниже).
Выбранная аудиодорожка в эфире не найдена Выбрать другой источник звука или оставить умолчание.
Такой язык распознавателю неизвестен Проверить код языка или очистить поле.
Сборка сервера без распознавания речи Обратиться в поддержку: коробка собрана без движка.

Работающее распознавание со свежей ошибкой — это предупреждение, а не авария: один непрочитанный кусок не останавливает работу, распознавание продолжается со следующего.

Файл модели

Сама модель на сервер не поставляется: пригодная весит больше гигабайта, и какая нужна — решает владелец коробки. Сервер ищет её в каталоге состояния продукта — /var/lib/agora/whisper-models — и ждёт там файла ggml-<модель>.bin, то есть ggml-medium.bin для модели medium.

Пока файла нет, состояние распознавания честно говорит «Файл модели не найден или не загрузился», а эфир продолжает идти и записываться как ни в чём не бывало.

Один файл обслуживает все эфиры коробки: модель читается в память один раз на процесс, сколько бы эфиров её ни просило.

Что получает зритель

Распознанное становится обычной субтитровой дорожкой эфира: она видна в медиаинформации, уезжает в HLS и DASH и включается в плеере наравне с любой другой.

Смотреть её имеет смысл по архиву. На живом краю субтитров ещё нет — они появляются с тем самым отставанием, которое показывает состояние, — а вот запись совещания открывается уже с текстом.

Что дальше

  • Архив — без чего распознавание не запускается.
  • Эфиры — карточка, на вкладках которой всё это живёт.
  • Просмотр и доступ — как зритель открывает запись.