Capturează
Записывает настроенные потоки в пределах прав на использование.
Analiză audio & media Instrument specializat
Инструмент для захвата, транскрибации и организации радиорекламы. Группирует повторяющиеся фрагменты и позволяет просматривать их вместе с аудиоисточником.
Monitor Radio
Записывает настроенные потоки в пределах прав на использование.
Преобразует аудио в текст и предлагает группировку похожих фрагментов.
Команда может прослушивать фрагменты повторно и экспортировать релевантную информацию.
Изучение сообщений и повторов в отслеживаемый период.
Поиск фрагментов без повторного прослушивания всего материала.
Транскрипции и группировки, которые может исправить человек.
Автоматическое обнаружение и транскрибация могут ошибаться. Наличие захватов и покрытие проверяются для каждого источника.
Монитор Radio в деталях
Монитор Radio отвечает на пять вопросов о рекламе, услышанной по радио: с какой станции она была, во сколько именно началась, как долго длилась, что в ней было сказано и где находится аудиодоказательство для проверки. Основной интерфейс — операционный журнал рекламы, а не экран транскрипции.
Цепочка локальная и без обязательных ключей: `ffmpeg` захватывает поток, Whisper транскрибирует, детектор с прозрачным скорингом помечает сегменты, похожие на рекламу, а повторяющиеся рекламы группируются по текстовому отпечатку. Всё попадает в аудируемую SQLite, из которой можно вывести CSV и аудиофайл каждой рекламы.
Что нужно сказать перед любой демонстрацией: детекция не ловит всё. Собственное измерение на реальной базе данных даёт оценочный recall 30–50% от рекламы, которая действительно была в эфире, а причины известны и перечислены. Кто продаёт мониторинг радио как «ловим всё», либо не измерял, либо вам не говорит.
До 10 станций захватываются параллельно с помощью `ffmpeg`, в сегментах по 30 секунд, каждый из которых перед попаданием в очередь проверяется как корректный WAV. Очередь хранится в базе данных, с заимствованием на 300 секунд, сигналом жизни и максимум 3 попытками на задачу — если процесс падает, задачи восстанавливаются, а не теряются. Есть и непрерывный режим без пробелов, который режет поток прямо из `ffmpeg` и забирает его через отслеживание папки.
Два взаимозаменяемых движка: Whisper через собственный gateway (по умолчанию в конфигурации) или локальный `faster-whisper`, на CPU с квантизацией int8, модель `large-v3-turbo`, с фильтром VAD и поиском на луче 5. Язык определяется автоматически, что важно на молдавском рынке, где одна и та же станция чередует румынский и русский в течение одного часа.
Каждый сегмент получает оценку от 0 до 1, рассчитанную по явным сигналам: коммерческие ключевые слова на румынском и русском, наличие номера телефона, сайта, цены или призыва к действию, с штрафом, когда текст выглядит как новость. Сегмент длительностью от 5 до 90 секунд получает небольшой бонус. Порог по умолчанию — 0,30, с расширением на соседние сегменты выше 0,20, чтобы реклама, разрезанная на две части, не потерялась. Причины оценки сохраняются рядом с оценкой.
Одна и та же реклама, выходящая десятки раз, группируется по текстовому отпечатку: транскрипция нормализуется, режется на перекрывающиеся окна по 5 слов, сохраняются первые 20 отсортированных и формируется короткое криптографическое резюме. Поверх этого есть и аудиоотпечаток через `chromaprint`, который группирует одну и ту же рекламу, выходящую на разных станциях, где транскрипции отличаются.
86 торговых марок из Молдовы в начальном каталоге — ритейл, банки, телеком, аптеки, авто, рестораны — плюс автоматическое обнаружение новых марок из транскрипций, с добавлением, удалением, импортом и экспортом через API.
Каждая реклама может быть помечена как подтвержденная, отклоненная или неясная прямо из интерфейса, с фильтром и сводкой по этим состояниям. Экспорт CSV учитывает текущий фильтр, а аудио каждой рекламы можно прослушать повторно в браузере на ее точном интервале.
Три триггера оповещения в Telegram: упавшая станция, задержка выше порога и появление отслеживаемого бренда. Поверх них — метрики Prometheus, глубокая проверка здоровья и endpoint доступности.
Данные и работа
От исследования к внедрению
Выбираются станции для отслеживания, проверяется каждый поток с включённым опросом (`probe-streams`), и задаётся мониторируемый временной интервал. Станция, которая не отвечает, остаётся отключённой в конфигурации до проверки, а не добавляется в надежде.
Кто имеет право записывать эфир и как долго его можно хранить. Это шаг, который чаще всего пропускают, и единственный, который нельзя исправить технически после.
До 4 станций работает на CPU. С 4 и выше транскрибация становится узким местом: либо GPU, либо 2–4 worker’а, либо более длинные сегменты. Обратное давление спроектировано так, чтобы замедлять захват, а не терять аудио — но backlog на 30 минут означает оповещения с задержкой в 30 минут.
Порог по умолчанию — 0,30. Ниже — больше пойманных реклам и больше ложноположительных, которые нужно отмечать; выше — наоборот. Калибровка выполняется по рекламам, подтверждённым и отклонённым вручную в первую неделю, а не по интуиции.
Что именно должно выходить: упоминания по бренду, по станции, по интервалу, со ссылкой на аудио. Экспорт CSV и ежедневный отчёт — отправная точка; окончательная форма определяется после того, как станет видно, какие вопросы реально задаёт команда.
Нет, и эту цифру мы измерили на реальных данных: оценочный recall 30–50% при пороге, использованном в аудите. То, что он пропускает, предсказуемо — ролики, где есть только бренд и слоган без телефона, сайта или цены; пропетые джинглы, которые Whisper транскрибирует как шум; спонсорства передач; ролики короче 5 секунд. Лучше всего ловятся ролики, которые сообщают что-то проверяемое, то есть большинство тех, где есть предложение.
У нас пока нет цифры точности в строгом смысле, и честнее сказать это, чем выдумывать её. Что у нас есть — это распределение скорингов, измеренное на реальной базе из 5018 захватов и 7428 сегментов, с 111 идентифицированными рекламами, плюс ручная проверка по выборкам. Из этого был сделан полезный вывод: 193 сегмента находились между 0,30 и 0,40 и в большинстве случаев были пропущенными реальными рекламами — поэтому порог был снижен до 0,30. Реальная цифра точности и recall требует 60+ минут аудио, размеченного вручную, по каждой станции; это отдельная работа с отдельной стоимостью и сроком.
Нет. Аудиозахват доказывает, что сообщение было в эфире, во сколько и сколько длилось. Аудитория — это совершенно другая метрика, которую измеряют институты с панелью — её нельзя вывести из того, что цифровой микрофон что-то услышал. Мы предоставляем количество выходов в эфир, время, станцию и аудиодоказательство.
Это вопрос, на который у проекта пока нет письменного ответа — в репозитории нет ни одного документа по правам, и это недостаток, а не недоработка в коммуникации. Мониторимые потоки доступны для прослушивания, но запись и хранение эфира для анализа — не то же самое, что прослушивание. Правовое основание для захвата и хранения определяется по каждой станции до установки, вместе с юристом заказчика. Что мы можем сделать технически — это снизить экспозицию: аудио автоматически удаляется через 48 часов, а текст и метаданные остаются.
Да. Язык определяется автоматически, а у детектора есть отдельные наборы ключевых слов для румынского и русского языков, со своими тестами для каждого. Случай, который всё ещё портит результат: если язык принудительно зафиксирован как румынский в конфигурации, реклама на русском транскрибируется искажённо, и скор падает ниже порога. Автоматическое определение — правильная настройка для смешанных станций.
Захват поддерживает 10 параллельно; ограничение — транскрибация. На Mac, на CPU, с одним worker'ом обрабатывается примерно половина реального времени — то есть 4 станции производятся быстрее, чем мы успеваем транскрибировать, и очередь растёт. В этой ситуации система не теряет аудио (она контролируемо замедляет захват), но результаты задерживаются. Для 10 станций почти в реальном времени нужен GPU или более длинные сегменты.
Да, и это как раз так и задумано: у каждой рекламы есть связанный аудиофайл, который можно воспроизвести в браузере на её точном интервале, плюс транскрипция и соседние сегменты. Мониторинговый анализ, который нельзя проверить у источника, ничего не стоит в разговоре с клиентом или со станцией.
Нет, не непрерывно. Это локальная, полная и протестированная платформа — проходит 81 автоматический тест — но собственный аудит без прикрас говорит, что монитор не работает 24/7 нигде. Есть файл автозапуска для macOS и Docker-конфигурация с GPU-профилем; чего не хватает, так это сервера, на котором это будет стоять, и acceptance-теста на 10 станциях в течение 2 часов, для которого harness уже написан.
Показательный пример
Сценарий использования, без данных клиента или приписанных коммерческих результатов.
Рекламодатель хочет знать, сколько раз его реклама была в эфире на четырёх станциях, в какие дни и в какое время, с аудиодоказательством.
Четыре потока захватываются в сегментах по 30 секунд, валидируются как корректный WAV и помещаются в надёжную очередь. Whisper транскрибирует каждый сегмент с автоматически определённым языком. Детектор оценивает каждый сегмент по коммерческим сигналам и отмечает то, что проходит выше 0,30, расширяясь на соседние сегменты выше 0,20, чтобы реклама, разрезанная пополам, оставалась целой. Отмеченные сегменты группируются по текстовому отпечатку — окна по 5 слов, первые 20 отсортированы — и, где текст различается между станциями, по аудиоотпечатку.
Кластер со всеми появлениями одной и той же рекламы, каждое с постом, датой, точным временем начала, длительностью, расшифровкой и аудиофайлом для прослушивания. CSV с тем же содержанием, отфильтрованный по интервалу и посту. Число выходов в эфир — это нижний порог, а не итог: при измеренном recall часть выходов не фиксируется, особенно если реклама спета или не содержит телефон, сайт или цену.
Ce este necesar:Un server care rulează continuu în intervalul monitorizat — pe un laptop pornit câteva ore pe zi rezultatul e incomplet și înșelător. Peste 4 posturi, GPU. Și temeiul legal pentru captura și retenția fiecărui post, stabilit înainte de start.
Возможности сотрудничества
Проекты по транскрибации и голосовой генерации на материалах, для которых есть право использования и задокументированная цель.
Мы определяем пилот вокруг реального процесса: пользователи, данные, интеграции, затраты и критерии приемки. Масштабирование следует после оценки результата.
Мы устанавливаем требования к доступности, размещению, защите данных и совместимости. Любое соединение с сервисами AGE или STISC требует проверки соответствия, доступа и утверждений.
Это сценарии адаптации, а не заявления о существующих контрактах или партнерствах. Предлагаемые функции подтверждаются в рабочей области проекта.
Обсудить пилотCronberry сводит вместе авторизованные источники, разговоры и связи в одном пространстве для исследования и координации.
Разработка и демонстрацииGrai — наше исследовательское направление в синтезе речи и моделях, приспособленных к языкам, на которых здесь говорят.
Cercetare & dezvoltareСтудия для генерации, прослушивания и скачивания голосовых материалов с помощью моделей text-to-speech.
Instrument specializatРасскажите о своём процессе. Вместе определим, что стоит построить, что можно подключить и как проверим результат.