Как разделить одноканальное аудио на 2 канала?
Иногда я натыкаюсь на звуковые дорожки и недавний видеоклип на YouTube, где слышен только один из 2 каналов. Можно ли разделить этот 1 канал на 2 канала, то есть левый и правый?
В случае, если записан только левый канал, что делает естественное разделение невозможным, может ли правый канал быть искусственно сгенерирован или просто зеркально отображен из 1 канала, что делает их обоими моноканалами?
1 ответ на вопрос
Я предполагаю, что у вас есть стереофонический аудиофайл, в котором один канал отключен (нет звука), а другой не отключен (имеет звук). Поэтому при воспроизведении вы можете слышать звук только из одного динамика. Вы хотели бы дублировать канал со звуком, чтобы получить звук из обеих колонок.
Может ли правый канал быть создан искусственно
Нет. Вы не можете делать звук из ничего. Если все, что у вас есть, это левый канал, где исходный файл имеет разные левый и правый каналы, вы не можете сгенерировать оригинальный правый канал, и наоборот.
или просто зеркально отражен от 1 канала, делая их оба моноканала
Да. Вы можете дублировать канал со звуком или конвертировать в моно. [1] Это работает лучше всего в случаях, когда:
- Существует небольшая или нет разницы между оригинальным левым и правым каналами
- В исходном файле был только один моноканал, и в какой-то момент появился пустой канал.
Преобразование в моно
Практически любой многодорожечный / многоканальный звуковой редактор должен это делать. Я предоставлю инструкции для Audacity, потому что это бесплатно. Я использую старую копию Audacity 1.3.13, которая является бета-версией, но почти любая версия должна иметь эти опции.
Загрузите / откройте аудио файл. Вы должны увидеть один канал со звуком и один без (прямая линия).
Нажмите на название трека (выпадающее меню) и нажмите Split Stereo to Mono . Вы могли бы также просто Split Stereo Track , но это было бы дополнительным шагом выбора Mono в том же меню дорожки со звуком (обратите внимание на серые параметры).
Удалите трек без звука, используя немного x слева от названия трека / выпадающего меню.
Экспортируйте ваш файл в ваш любимый аудиоформат, используя опцию File > Export . Возможно, вам придется установить дополнительные кодеки для экспорта в некоторых форматах.
Причина, по которой мы разделяем и удаляем, а не просто используем встроенные опции конвертирования в моно, заключается в том, что встроенная конвертация в моно усредняет два канала. Когда на одном канале нет звука, вы получаете половину амплитуды / громкости на последнем монотреке.
Дублирование трека и сохранение его стерео
Вы также можете скопировать монотрек, назначить один как Left Channel и один как, Right Channel используя название / выпадающее меню, выбрать оба и использовать то же самое меню для Make Stereo Track . Это даст вам стерео трек, где два канала являются дубликатами друг друга.
[1] Я рекомендую использовать только моно, поскольку вы получаете одинаковый звук из обоих динамиков любым методом, но моно может обеспечить более высокое качество звука и / или меньший размер файла с некоторыми методами сжатия с потерями (такими как дискретное стерео MP3, см. конец этой страницы, совместное стерео должно быть более или менее того же качества, что и моно, поскольку между треками нет разницы).
Разделение звука в видеозаписях

Кадр из видео Super Mario Theme (Trumpet & Euphonium) https://youtu.be/o3a6F070Xt0
Введение
Традиционно популярными и активно исследуемыми областями в Deep Learning являются задачи обработки изображений или текстов. Тем не менее, задачи, связанные с обработкой звуков и аудиодорожек, полезны и могут найти практические приложения во многих областях. Вот неполный перечень задач обработки звука, при решении которых используются подходы на основе глубокого обучения:
Классификация звуковых сигналов;
Speech2Text. Перевод речи в текстовое отображение;
Text2Speech. Обратная предыдущей задача. Генерация речи по заданному тексту;
Поиск похожих звуков;
Sound Separation. Разделение звуковой дорожки на составляющие звуки;
Beamforming. Разделение многоканальной звуковой дорожки на возможные составляющие с учетом пространственного расположения звукозаписывающих устройств.
В данной статье я расскажу о решении задачи Sound Separation, но с одним отличием — в качестве входных данных используются видеозаписи.
Для начала разберемся: что такое звук? Звук — это механические колебания, передающиеся в среде. Звуковые колебания характеризуются амплитудой и частотой. В среднем обычный человек может услышать звуки частотой 20Гц – 20000Гц. Для представления аудиоданных в цифровом формате микрофон с определенной частотой регистрирует амплитуду механических колебаний среды, затем полученные замеры преобразуются в цифровой формат. Таким образом, звук в вычислительных устройствах представляется как временной ряд. При этом, чем более высокая частота дискретизации, тем более высокие частоты получается сохранить.
Возможно представление аудио сигнала в виде трехмерной диаграммы, где на оси абсцисс изображено время, на оси ординат – частота звука. Третье измерение с указанием амплитуды на определенной частоте в конкретный момент времени представлено интенсивностью или цветом каждой точки изображения. Такое представление называется спектрограммой. Для получения спектрограммы из исходного аудио сигнала необходимо выполнить оконное преобразование Фурье.

Пример спектрограммы
Такое представление позволяет применять двумерные сверточные нейронные сети в задачах обработки звука. Следует помнить, что в таком подходе не учитывается положение на изображении, хотя в случае спектрограмм это может быть важно. Например, в задаче классификации изображений совершенно неважно, находится объект внизу или вверху, при этом положение «внизу» и «вверху» на спектрограмме отвечает разным частотам, а значит разным звукам.
Задача разделения звуков заключается в получении аудиодорожек отдельных источников звука по одной аудиозаписи с несколькими источниками.
— исходная аудиодорожка, «смесь» отдельных звуков
– i-тая компонента звука
— число компонент звука

Разделение звука
Задача локализации — поиск источников звука в кадре и отделение от общей аудиодорожки.

Локализация звуков
Подобрать метрику, которая идеально оценивала качество модели, не так просто. Это связано со сложностью самих звуковых данных, а так же с тем, что восприятие результата может быть субъективно. Несколько человек могут по-разному оценить качество разделения в зависимости от их музыкального слуха и других факторов. Зачастую, в задачах разделения звука используют метрику SDR, дополнительно можно вычислять SIR и SAR.
SDR — source to distortion ratio, общая оценка того, насколько хорошо источник звучит
SIR – source to interference ratio, оценка того, насколько хорошо звук отделен от остальных источников
SAR – source to artifact ratio, оценка того, насколько хорошо звук изолирован от нежелательных артефактов
Теперь, определившись с задачей и метриками, можно посмотреть как решать такую задачу.
Модель
Расскажу про подход, предложенный в статье Sound-of-Pixels. Модель состоит из нескольких частей: визуальная, аудио и синтезатор. Для начала определимся, что передается на вход в модели. Исходными данными для модели являются видеозаписи с источниками звука. Видеозапись можно представить как последовательность кадров и аудиодорожка. Аудиодорожку из одномерного представления можно перевести в спектрограмму. Таким образом, на вход модели будем подавать несколько кадров из видео и спектрограмму аудиодорожки.

Архитектура модели
Для вычисления признаков из кадров видео используется ResNet, для генерации аудио признаков из спектрограммы применяется U-Net подобная архитектура. После вычисления видео и аудио признаков они комбинируются с некоторыми обучаемыми весами и на выходе модели получаются сетка из масок. Маска — это одноканальное изображение с таким же размером, как и у входной спектрограммы, каждый пиксель маски принимает значения от 0 до 1. Впрочем, маска может быть бинарной, тогда значения — это 0 или 1. При поэлементном умножении маски на исходную спектрограмму смеси получается спектрограмма изолированного источника звука, а по спектрограмме можно восстановить аудиодорожку изолированного звука.
При вычисления визуальных признаков пространственные размерности уменьшаются в 16 раз. При использовании кадров размером 224х224 выходная пространственная размерность получается 14х14. И в каждой пространственной точке получается визуальный размер признаков размерности K (гиперпараметр, подбирается в зависимости от датасета). Сеть синтезатор для каждой пространственной точки совмещает визуальные признаки и аудио признаки и предсказывает маску для спектрограммы. Получается маска для звуков, источники которых находятся в соответствующем участке исходных кадров.

Выход модели
Обучить такую модель напрямую проблематично, поэтому авторы предлагают несколько трюков. Обучение проводится по видео с отдельными источниками звука. Если рассматривать музыкальный домен, то подойдут видео с соло исполнениями на музыкальных инструментах. Дополнительной разметки при этом не требуется, но при обучении делается несколько допущений. Во-первых, во время обучения не предсказывается сетка масок, после визуальной сети берется макспулинг по пространственным размерностям и маска вычисляется одна на весь кадр. Во-вторых, звук аддитивен, а это значит, что при сложении двух аудиозаписей в соло исполнении получается запись исполнения в дуете.
Для обучения из выборки семплируется пара видеозаписей, т.е. объект для обучения — это две видеозаписи. Аудиодорожки складываются и получается дорожка с несколькими источниками звука. В аудио часть модели подается смесь, а по кадрам первого и второго видео вычисляются соответствующие вектора визуальных признаков. Теперь можно применить синтезатор к аудио признакам и видео признакам от первого и второго видео и получить на выходе маску для извлечения исходных аудиодорожек из смеси. Исходные аудиодорожки нам известны, можно посчитать функцию потерь между предсказанными дорожками и исходными и обновить веса модели.

Обучение модели
Остается вопрос — где взять данные для обучения? Для обучения на музыкальных инструментах использовался датасет MUSIC, для обобщения модели на общий звуковой домен использовался датасет VGGSound. Данные собраны из видео на youtube, но сами датасеты — это .csv файлы с id видео. Сбор, загрузку и предобработку записей нужно выполнять своими руками. MUSIC содержит
600 видеозаписей с соло исполнением на 11 (есть часть с 21) музыкальных инструментах, а также видео с исполнениями в дуете. Все исполнения любительские, произведены в повседневной обстановке без использования профессионального оборудования. VGGSound намного больше, датасет содержит более 200 тысяч видеозаписей, а также разметку на 310 классов звуков (указывается временной отрезок в видео и метка звука, который звучит в этом отрезке)
Результаты
Давайте теперь посмотрим на результаты обученной модели. Сначала я покажу, как работает модель на музыкальных инструментах, затем на общих звуках из VGGSound.
Разберем разделение на этапе валидации на примере двух видео. Возьмем два видео с соло исполнениями, сложим их аудиодорожки и разделим обратно.

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

Локализация источников звука
Теперь, если взять полученную модель и обученный детектор объектов в кадре, то можно усреднять маски в предсказанных boundary box детектора и получать звуки, издаваемые объектами в кадре.
Приведу метрики, которые я получал в результате наиболее удачных экспериментов. За baseline я взял метрики, которые авторы указали в своей статье. В приведенных экспериментах я использовал размерность признаков K=16. В других экспериментах пробовал различные значения, но они дают худший результат. В статье же авторы указывают, что по их экспериментам размерность K=32 работает лучше.
Одновременный вывод звука на два устройства в Windows. Звук из динамиков ноутбука, телевизора по HDMI, Bluetooth наушников и колонок
Этот вопрос с одновременным выводом звука на колонки, или динамики ноутбука и на динамики телевизора подключенного по HDMI уже не раз обсуждали в комментариях к статье почему нет звука через HDMI на телевизоре, при подключении ноутбука (ПК) на Windows 7 и Windows 10. И там же в комментариях, Влад подсказал решение, как в Windows настроить одновременный вывод звука на динамики или колонки и на телевизор. Я проверил, но у меня почему-то не получилось. Сегодня решил еще раз все проверить, и как оказалось, все отлично работает. Достаточно настроить стерео микшер в Windows и звук выводится на два источника. В Windows 10 стерео микшер у меня заработал без проблем. В настройках устройств воспроизведения в Windows 7 я его почему-то не нашел. Возможно, нужно обновить драйвера. Сделаю инструкцию на примере Windows 10, а как разберусь с семеркой, то дополню статью. Там настройки практически одинаковые, так что если у Windows 7 и есть этот стерео микшер – настроите все без проблем.
Этим способом можно сделать так, чтобы звук воспроизводился одновременно из динамиков ноутбука, или подключенных к ноутбуку или компьютеру колонок и из динамиков телевизора, который подключен через HDMI-кабель. Так же можно настроить одновременный вывод звука на динамики и Bluetooth-наушники, или Bluetooth-колонку. Проверил – все отлично работает. Я так понял, что можно выводить максимум на два разных устройства.
Единственный минус, который я заметил у себя, так это то, что звук который выводится через стерео микшер немного отстает. Я выводил на монитор (подключен по HDMI) со встроенными динамиками. Есть небольшая рассинхронизация звука между разными источниками вывода. Возможно, это такая проблема только на моем оборудовании, так как железо у меня не самое новое и мощное. А вообще, эта фишка интересно работает. Так же пробовал выводить звук одновременно на динамики ноутбука и на Bluetooth-наушники. Можно, например, подключить Bluetooth-колонку, вывести на нее звук и поставить ее где-то за спиной. Получится объемный звук.
Перед настройкой нужно подключить к компьютеру этот второй источник вывода звука и убедится, что он работает (звук выводится, если установить это устройство по умолчанию) . Будь то телевизор, или Bluetooth наушники/колонка. Думаю, эти инструкции вам пригодятся:
Подключили, проверили все ли работает, и только после этого можно переходить к настройке.
Стерео микшер в Windows 10: вывод звука на два устройства одновременно
Открываем параметры звука (нажав на соответствующую иконку в трее правой кнопкой мыши) и переходим в панель управления звуком.

В окне «Звук» проверяем, чтобы устройство «Динамики» было в статусе «Устройство по умолчанию». Если это не так, то нажмите на них правой кнопкой мыши и выберите «Использовать по умолчанию». Так же обратите внимание, что у меня там отображается подключенный по HDMI телевизор (в моем случае это монитор со встроенными динамиками, это не важно) и он в статусе «Готов».

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

В новом окне, открыв вкладку «Прослушать», убедитесь, что возле пункта «Прослушивать с данного устройства» стоит галочка. Из меню выберите устройство, на которое нужно вывести звук с компьютера. Значит динамики у нас используются по умолчанию, и нужно выбрать второе устройство. В моем случае это телевизор (имя устройства у вас будет другое) . Так же это могут быть Bluetooth-наушники, колонка, возможно еще какое-то устройство.

После нажатия на кнопку «Применить», звук начал воспроизводится одновременно из колонок (динамиков ноутбука) и телевизора. Проверьте уровень громкости на телевизоре, или наушниках (колонке) .
Чтобы отключить звук из второго источника, достаточно выключить стерео микшер, или отключит устройство. Настройки сохраняются. Когда мы регулируем звук в настройках Windows, то он одновременно регулируется на обеих устройствах (в моем случае на колонках и динамиках телевизора) .
Дополнительные настройки стерео микшера
Там в настройках стерео микшера есть еще несколько вкладок с дополнительными настройками. Давайте посмотрим, что там можно настроить и нужно ли это делать. Скажу сразу, что ничего интересного и полезного я там не нашел.
На вкладке «Общие» находится информация о самом устройстве. Можно открыть свойства контроллера (обычно это Realtek High Definition Audio) , сменить имя или иконку, или выключить/включить стерео микшер.

Открыв вкладку «Уровни», можно изменить громкость на устройстве, на которое выводится звук через стерео микшер. Так же можно отключить звук и изменить баланс.

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

Ну и вкладка «Дополнительно», на которой можно настроить разрядность и частоту дискретизации (эти настройки у меня не активны) и настроить монопольный режим. Эти настройки лучше не трогать. Хотя в моем случае, они ни на что не влияли. По крайней мере я ничего не заметил.

Вот собственно и все настройки.
Надеюсь, вы смогли настроить этот стерео микшер в Windows 10 и вывести звук на два устройства одновременно. Напишите в комментариях, для каких задач вы используете эту схему, на какие устройства выводите звук, и как все это у вас работает. Нет рассинхронизации звука? Ну и задавайте вопросы, не стесняйтесь