WEBM в текст
WebM почти всегда рождается в браузере: запись экрана через MediaRecorder, скачанный с YouTube поток, запись созвона в веб-клиенте. Главная его особенность — часто отсутствующая длительность в заголовке.
Технические характеристики WEBM
| Полное название | WebM — профиль Matroska для веба |
|---|---|
| Контейнер | Matroska (подмножество) |
| Кодеки внутри | VP8 / VP9 / AV1 (видео), Opus / Vorbis (звук) |
| MIME-типы | video/webm, audio/webm |
| Расширения | .webm |
| Типичный битрейт | 1200 кбит/с (из них звук 96 кбит/с — 8% файла) |
| Частота дискретизации | 48 000 Гц, стерео |
| Сжатие | с потерями |
| Демультиплексирование | нужно — звук лежит внутри контейнера с видео |
| Лимит на файл | 8 ГБ — это примерно 936 минут при типичном битрейте |
| Минут в 1 ГБ | 117 |
Что конвейер делает именно с WEBM
- Ищем элемент Duration в заголовке Segment. У файлов из MediaRecorder он почти всегда пустой — тогда считаем длительность по таймкоду последнего кластера.
- Отделяем Opus-дорожку без декодирования видео VP9/AV1: декодирование AV1 на CPU заняло бы больше времени, чем сама расшифровка.
- Если файл записан «живьём» и оборван (вкладка закрыта), последний кластер битый — отбрасываем его и обрабатываем всё до него, вместо того чтобы отклонить файл целиком.
- Opus декодируем напрямую в 16 кГц моно.
Откуда берутся такие файлы
- Запись экрана расширениями Chrome (Loom-подобные, Screencastify)
- Скачанные с YouTube аудиопотоки (itag 251)
- Запись Google Meet в браузере
- Голосовые записи на веб-страницах через MediaRecorder
Грабли, о которых стоит знать заранее
- Плеер показывает длительность «бесконечность»
Классический признак MediaRecorder-файла без элемента Duration. Для нас это не проблема: мы считаем длительность по кластерам и тарифицируем по факту.
- AV1 внутри тормозит любой локальный конвертер
Если вы попробуете вытащить звук на слабом ноутбуке, ffmpeg начнёт декодировать видео. Добавьте -vn, иначе будете ждать десятки минут. Мы этого шага не делаем вовсе.
- Запись вкладки без «Поделиться звуком вкладки»
Chrome по умолчанию не включает звук вкладки при записи экрана. Файл получается с пустой дорожкой. Мы отклоняем такой файл до списания минут.
Как формат влияет на точность
Opus 96 кбит/с 48 кГц — отличный вход. Реальная проблема записей экрана другая: микрофон ноутбука на расстоянии вытянутой руки. Это как раз far-field-сценарий, где GigaAM v3 даёт 3,9% против 16,4% у Whisper large-v3.
| Модель | Средний WER, % | Далёкий микрофон | Кол-центр |
|---|---|---|---|
| GigaAM v3 RNNT (Сбер, MIT)используем мы | 8,3 | 3,9 | 9,5 |
| GigaAM v2 RNNT | 10,6 | — | — |
| T-one + LM (Т-Банк, Apache-2.0) | 16,3 | — | — |
| Whisper large-v3 | 21 | 16,4 | 23,1 |
Проверка файла и расчёт стоимости
Файл не загружается и никуда не отправляется: длительность читает ваш браузер локально. Ограничения показаны для WEBM.
Отменять ничего не нужно: у нас нет автопродления и мы не храним данные платёжных карт.
Частые вопросы
- Почему WEBM с YouTube не открывается в моём плеере?
- Многие плееры не поддерживают VP9 и AV1. На нашу обработку это не влияет — мы читаем контейнер напрямую и берём только звук.
- Запись созвона на 3 часа в WEBM — влезет?
- Да. При 1200 кбит/с три часа — около 1,5 ГБ, лимит 8 ГБ и 10 часов не задет.
- Можно ли получить субтитры для наложения на ту же запись?
- Да, WebVTT — родной формат субтитров для WebM и HTML5-плееров, отдаём его в один клик.