Вместо предисловия

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

Но если из этого процесса выдернуть звукорежиссера, на сколько тогда осложнится процесс записи? К примеру, звукорежиссер может быть на записи программ или прямых эфирах. А может просто у него выходной. В такие моменты журналисту приходится ждать или откладывать начитку на другое время.

Чтобы как-то автоматизировать процесс записи, у нас и возникла эта идея – создать звукозапись без звукорежиссера.

Постановка задачи

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

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

Этапы решения

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

Ну раз нельзя трогать один компьютер, то нужен другой, новый ПК, который будет в роли сервера звукоснимателя. При таком раскладе мы получим две автономные системы, и функционирование ПК и сервера не влияли бы друг на друга. Именно то, что нам и нужно! К счастью, у предусилителя имеется два выхода (цифровой и аналоговый) на которые можно подать один и тот же вход. Аналоговый выход был занять ПК звукорежиссера, оставался цифровой.

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

Интерфейс максимально простой. Состоял он из «двух страниц»: начать запись и остановить запись. На первую страницу поместили поле для ввода названия начитки, кнопку «Начать запись» и список уже записанных файлов. На второй странице красивая анимированная надпись «ЗАПИСЫВАЮ…» идея взята отсюда. И кнопка «Остановить запись».

Веб интерфейс адаптирован под мобильные устройства
Веб интерфейс адаптирован под мобильные устройства

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

Работа над ошибками

Система заработала, записывала, сохраняла и воспроизводила записи. Однако появлялись некоторые недочеты.

  • Остановка записи. Запись останавливалась обычным глушением процесса по его pid. Однако корректное сохранение файла в таком случае возможно только в формате mp3.

  • Файл записывался с одним каналом звука. На звуковую карту приходили два канала, а ffmpeg записывал один. Желаемый результат был достигнут, Добавив параметр смешивания каналов в строку запуска. В этом помогла вот эта страничка.

  • На записи терялись начало и конец. Решилось добавление небольшой задержки после нажатия на кнопку. Просто интерфейс работал быстрее, чем запускался скрипт.

  • Копились файлы. Чтобы не копились файлы и была какая-то структура, скрипт создавал папку каждый месяц.

  • Ограничение записи. В качестве страховки от зомби процессов от шутников установили также ограничение по длине записи.

Подводя итоги

Готовое решение выглядит следующим образом. Журналист заходит в комнату звукозаписи и включает тумблер (включаются свет + предусилитель). Подключается к wifi-точке с телефона и заходит на веб сервер по qr-коду. Далее вводит название и жмет кнопку старт. По завершению записи проверяет начитку, воспроизводя ее на телефоне. Если все записалось хорошо, то гасит свет, закрывает комнату и в полном удовлетворении идет дальше по своим делам.

Общая схема
Общая схема
Железки
  • Микрофон Shure SM7B

  • Предусилитель - dbx 386

  • Сервер собран на процессоре i3-2320 со звуковой картой HDSPe AIO от RME

  • ПК звукорежиссера собран на i7-2600 со звуковой картой M-Audio Delta66

Комментарии (18)


  1. Markscheider
    29.11.2022 22:07

    Ну хоть чуть-чуть про железо расскажите. Про используемое звуковое оборудование...


    1. Volzhanin94 Автор
      29.11.2022 23:04
      +1

      добавил в конце под спойлер


  1. GbrtR
    29.11.2022 22:31
    +1

    Надо бы добавить автоматическое преобразование начитанного в текст.

    Тогда и diff можно сделать с оригиналом.


    1. Zhuikoff
      30.11.2022 03:19

      Классная идея, а ты представляешь объем решений, который это за собой тянет? (если касаться новостей)


      1. GbrtR
        30.11.2022 20:11

        Тут вопрос в источнике данных, если идёт начитка — т.е. есть оргинальный документ и задача его зачитать более-менее точно к оригиналу, то использовать какую-нибудь speach2text библиотеку на сервере не такая большая задача. Понятно что точность распознования не будет 100%, но довольно близко к тому. Идеально нам не надо, главное чтобы было более-менее приемлемо.

        Из оригинала копируем в текстовом виде (можно просто «select all»/«copy&paste»), заливаем на тот же сайт и потом сравниваем. Не так и сложно.

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


        1. Zhuikoff
          01.12.2022 09:27

          Во первых, текст не всегда соответствует оригиналу. Во вторых - любое лишнее действие пользователь будет пропускать. Решение задачи в "изолированном" виде не имеет смысла. Вот когда начитка привязана к материалу в рамках единой системы, появляется целое море неожиданных возможностей для автоматизации. Ну и доступных готовых решений "из коробки" для разметки медиа по тексту я ещё не видел (хотя, у меня есть)


    1. Volzhanin94 Автор
      30.11.2022 22:35

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


      1. Zhuikoff
        01.12.2022 09:42

        У меня есть работающее практическое решение от создания материала до экспорта в монтажную программу. Включая расшифровку и разметку синхронов и запись подач.


  1. evgepet
    30.11.2022 02:14
    +1

    20 лет назад работал я на ТВ. На случай отсутствия звукорежиссёра просто обучили всех журналистов (их был человек 6-7), что нажать и куда сохранять. Все обучились без проблем и очень быстро. Журналист подходит к компу, который за пределами будки звукозаписи, жмёт в аудиоредакторе кнопку создания нового файла, жмёт кнопку записи, заходит в будку, сквозь стекло видит монитор, на котором идёт процесс записи... По окончании записи, жмёт на компе стоп и "сохранить", пишет название сюжета в качестве имени файла, жмёт кнопку закрытия файла. Внутри будки есть микшер с предусилителем для контроля громкости.
    Всего шесть пунктов, включая процесс начитывания.


    1. SADKO
      30.11.2022 12:48

      Та-же фигня, только пробрасывали в скворечник клаву с мышой...


  1. OBIEESupport
    30.11.2022 02:41
    +1

    Ну Семен Семенович! Сайт вроде про IT, а где обработка звука? А процесс звукоизоляции? А то, что шурик как микрофон совсем не идет некоторым басовитым мужикам? Где обзор нашей любимой Audacity какой-нибудь очень затертой версии? Если это - вещательная студия то аппаратура должна соответствовать российскому вещательному ГОСТу, а это - микшер, поп-фильтры, пантографы, противовибрационные подвесы, мебель, специальное освещение беззвучное. Хочется больше подробностей, а не просто уровень одного XLR соединения с джеком на 3.5.)


    1. Volzhanin94 Автор
      30.11.2022 22:49

      Благодарю за конструктивную критику! Только начинаю пробовать себя в роли автора)


      1. OBIEESupport
        02.12.2022 02:17

        Если только пробуете,то тогда объяснимо. Прочитал все ваши статьи, хочется указать общие проблемные места. Опять же, не претендую на менторство.

        1. Постановка задачи и заголовок должны соответствовать друг другу.

        2. В статьях видно, как вы занимаетесь малой автоматизацией. Хорошо так занимаетесь, но в таких статьях есть проблема: как это лучше описать?

        3. В каждой статье есть ряд незаконченных мыслей/притянутых не к месту фраз.

        4. Статьи с отрицательным голосованием требуют большей глубины проработки фактов.

        5. Очень рад, что вы растете как автор.

        Теперь вернемся к текущей статье (сравнение с моей статьей про яндексовскую Алису ниже).

        Постановка: Есть ряд профессий, где важно сделать качественную звукозапись.

        Развитие: Убираем профессию звукача (ну, это вы зря, у человека воздушная и костяная проводимость звука даже говорить качественно не дает).

        Решение: Программно-аппаратный комплекс. Три прихлопа, два притопа. Два коннекта, простая схема. Но работает же как-то после долгой настройки.

        Финал статьи: Я придумал автоматическую будку гласности из недешевых недомашних устройств. В принципе, ничего полезного, кроме марок процессоров. Плюсик за это.

        Сравним с моей статьей.

        Постановка: Есть хорошая штука - Алиса. В документации есть баг, так как прошивка позволяет давать наружу два звука. Как это можно использовать?

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

        Продолжение: АЧХ Алисиных микрофонов. Работа с разными ОС.

        Решение: В мирных целях Алиса - само то, но есть проблемы и возможности, которые хотелось донести до читателя. Апдейт: Как командовать женским голосом, если ИИ изначально к этому был не готов. 20К просмотров и 0 рейтинга ))).

        Решение с распознаванием любой звукозаписи в текст на бесплатных компонентах в моем блоге тоже есть )).


  1. Maevv
    30.11.2022 08:57

    Смутило это

    Файл записывался с одним каналом звука. На звуковую карту приходили два канала, а ffmpeg записывал один.

    То есть, на выходе получается стерео-файл? Зачем? Дикторские начитки на студийный микрофон — это моно-запись с одного источника.

    Если у вас возникла проблема с тем, что изначально ффмпег создавал стерео-файл, оставляя запись в одном канале («в одном ухе»), то правильнее не продублировать этот канал во второй, а просто преобразовать файл в моно, выбросив пустой канал.


    1. evgepet
      30.11.2022 10:05

      Желаемый результат был достигнут, Добавив параметр смешивания каналов в строку запуска. В этом помогла вот эта страничка.

      Возможно тут имелось в виду смешивание стерео в моно.


  1. mrakgi
    30.11.2022 10:28
    +1

    /facepalm А решалось то все удлинителем УСБ, второй клавиатурой, мышкой и монитором протянутым через стенку и поставленных в дикторской.


    1. AKudinov
      30.11.2022 10:48

      Пишут, что в дикторской для этого места нет:

      В комнате записи было тесно и установить туда какие-нибудь тачскрин панели или kvm переключатели, было трудно.


  1. SADKO
    30.11.2022 13:26

    Какой-то оверинжениринг, сомнительного какчества записи через виндючный микшер в ffmpeg ;-)
    Да на двери в скворечник, повесить дешевый x86 планшет с тачьскрином, вот и весь сервер.
    Причём если использовать линукс, то звуковую систему можно настроить так, что писать будет не хуже чем мак или винда через асио. Ну и запуск привычных журналистам программ, где они могут не только говорить\слушать но и резать и дописывать...
    ...а если журналист\диктор в 22 году ничего такого не умеет, то точно ли он проф пригоден?