Capturează
Записує налаштовані потоки в межах прав використання.
Analiză audio & media Instrument specializat
Інструмент для захоплення, транскрипції та організації радіореклами. Групує повторювані фрагменти та дає змогу переглядати їх разом із аудіоджерелом.
Монітор радіо
Записує налаштовані потоки в межах прав використання.
Перетворює аудіо в текст і пропонує групування схожих фрагментів.
Команда може повторно прослухати фрагменти та експортувати релевантну інформацію.
Вивчення повідомлень і повторів у межах відстежуваного періоду.
Знаходження фрагментів без повторного прослуховування всього матеріалу.
Транскрипції та групування, які може виправити людина.
Автоматичне виявлення та транскрибація можуть помилятися. Доступність захоплень і покриття перевіряються для кожного джерела.
Monitor Radio детально
Monitor Radio відповідає на п’ять запитань про рекламу, почуту на радіо: з якої станції вона надійшла, о котрій годині точно почалася, скільки тривала, що в ній було сказано і де є аудіодоказ для перевірки. Головний інтерфейс — це операційний журнал реклами, а не екран транскрипції.
Ланцюг локальний і без обов’язкових ключів: `ffmpeg` захоплює потік, Whisper транскрибує, детектор із прозорим скорингом позначає сегменти, які схожі на рекламу, а повторювані реклами групуються через текстовий відбиток. Усе потрапляє в аудиторську SQLite, з якої можна вивантажити CSV і аудіофайл кожної реклами.
Що слід сказати перед будь-якою демонстрацією: виявлення не охоплює все. Власне вимірювання на реальній базі даних дає оцінений recall 30–50% від реклами, яка справді була в ефірі, а причини відомі й перелічені. Хто продає моніторинг радіо як «ми ловимо все», або не вимірював, або не каже вам.
До 10 постів захоплюються паралельно з `ffmpeg`, у сегментах по 30 секунд, кожен з яких валідовується як коректний WAV перед потраплянням у чергу. Черга зберігається в базі даних, з орендою на 300 секунд, сигналом життя та максимум 3 спробами на job — якщо процес падає, job-и відновлюються замість того, щоб загубитися. Є також безперервний режим без прогалин, який ріже потік прямо з `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 працівники, або довші сегменти. Зворотний тиск спроєктований так, щоб уповільнювати захоплення, а не втрачати аудіо — але backlog у 30 хвилин означає сповіщення із затримкою на 30 хвилин.
Поріг за замовчуванням — 0,30. Нижче означає більше спійманих реклами та більше хибнопозитивних, які треба відмічати; вище — навпаки. Калібрування робиться на підтверджених і вручну відхилених рекламах у перший тиждень, а не на інтуїції.
Що саме має виходити: появи за брендом, за станцією, за інтервалом, з посиланням на аудіо. Експорт CSV і щоденний звіт — це відправна точка; фінальна форма вирішується після того, як стане видно, які питання фактично ставить команда.
Ні, і цифру ми маємо виміряну на реальних даних: оцінений recall 30–50% на порозі, використаному в аудиті. Те, що він пропускає, передбачуване — реклами, які містять лише бренд і слоган без телефону, сайту чи ціни; проспівані джингли, які Whisper транскрибує як шум; спонсорування програм; реклами коротші за 5 секунд. Добре він ловить реклами, які говорять щось перевірюване, тобто більшість тих, що з пропозицією.
У нас поки немає показника precision у строгому сенсі, і чесніше сказати це, ніж вигадувати його. Те, що є, — це розподіл балів, виміряний на реальній базі з 5018 захоплень і 7428 сегментів, зі 111 ідентифікованими рекламними оголошеннями, плюс ручна перевірка на вибірках. Із нього вийшов корисний висновок: 193 сегменти були між 0,30 і 0,40 і переважно були реальними пропущеними рекламними оголошеннями — тому поріг було знижено до 0,30. Реальний показник precision і recall вимагає 60+ хвилин аудіо, розміченого вручну для кожної станції; це окрема робота, з вартістю і тривалістю.
Ні. Аудіозахоплення доводить, що повідомлення було в ефірі, о котрій годині і як довго. Аудиторія — це зовсім інше вимірювання, яке роблять інститути вимірювання з панеллю — його не можна вивести з того факту, що цифровий мікрофон щось почув. Ми надаємо кількість виходів в ефір, час, станцію та аудіодоказ.
Це питання, на яке проєкт ще не має письмової відповіді — у сховищі немає жодного документа про права, і це недолік, а не пропуск у комунікації. Потоки, які моніторяться, є публічними для прослуховування, але запис і збереження ефіру для аналізу — це не те саме, що прослуховування. Правову підставу для захоплення і зберігання визначають для кожної станції перед встановленням, разом із юристом замовника. Технічно ми можемо зменшити експозицію: аудіо автоматично видаляється через 48 годин, а текст і метадані залишаються.
Так. Мова визначається автоматично, а детектор має окремі набори ключових слів для румунської та російської, з власними тестами для кожної. Випадок, який досі псує результат: якщо мову примусово зафіксовано на румунській у конфігурації, реклама російською транскрибується спотворено і скор падає нижче порогу. Автоматичне визначення — правильне налаштування для змішаних станцій.
Захоплення підтримує 10 паралельно; транскрипція — це ліміт. На Mac, на CPU, з одним воркером обробляється приблизно половина реального часу — тобто 4 станції виробляють швидше, ніж ми встигаємо транскрибувати, і черга зростає. Система в такій ситуації не втрачає аудіо (вона контрольовано сповільнює захоплення), але результати затримуються. Для 10 станцій у майже реальному часі потрібен GPU або довші сегменти.
Так, і це задумано саме для цього: кожна реклама має пов’язаний аудіофайл, який можна відтворити в браузері на її точному інтервалі, плюс транскрипцію та сусідні сегменти. Аналіз моніторингу, який не можна перевірити на джерелі, не вартий нічого в розмові з клієнтом або зі станцією.
Не безперервно. Це локальна, повна й протестована платформа — 81 автоматизований тест проходить — але власний аудит без прикрас каже, що монітор ніде не працює 24/7. Є файл автозапуску для macOS і конфігурація Docker з GPU-профілем; чого бракує, так це сервера, на якому це має працювати, і приймального тесту на 10 постів протягом 2 годин, для якого harness уже написаний.
Ілюстративний приклад
Сценарій використання, без даних клієнта чи приписаних комерційних результатів.
Рекламодавець хоче знати, скільки разів його реклама була в ефірі на чотирьох постах, у які дні та о котрій годині, із аудіодоказом.
Чотири потоки захоплюються в 30-секундних сегментах, перевіряються як коректний WAV і поміщаються в надійну чергу. Whisper транскрибує кожен сегмент із автоматично визначеною мовою. Детектор оцінює кожен сегмент за комерційними сигналами та позначає все, що перевищує 0,30, розширюючи до сусідніх сегментів понад 0,20, щоб реклама, розрізана навпіл, залишалася цілісною. Позначені сегменти групуються за текстовим відбитком — вікна по 5 слів, перші 20 відсортовані — і, де текст відрізняється між постами, за аудіовідбитком.
Кластер із усіма появами тієї самої реклами, кожна з постом, датою, точною годиною початку, тривалістю, транскрипцією та відтворюваним аудіофайлом. CSV з тим самим вмістом, відфільтрований за інтервалом і постом. Кількість трансляцій є нижньою межею, а не підсумком: на виміряному recall частина трансляцій не потрапляє, особливо якщо реклама співана або не містить телефону, сайту чи ціни.
Що необхідно: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Розкажіть про свій процес. Разом визначимо, що варто збудувати, що можна підключити і як перевіримо результат.