Как создавался уникальный медиаплеер UrbanDenoiser Player с функцией компенсации окружающего шума

в 9:27, , рубрики: audio player, iOS, iphone, iphone приложение, it4you, mediaplayer, urbandenoiser, Блог компании IT4YOU, звук, Медиаплееры, Софт, метки: ,

В этой статье я хочу рассказать о процессе создания медиаплеера UrbanDenoiser Player. Помимо всяких «прелестей и красивостей» (о которых лучше почитать на практически одноимённом официальном сайте) плеер имеет новаторские режимы воспроизведения:

  • Denoiser — повышение разборчивости аудиосигнала несмотря на внешний шум;
  • Noise Around — одновременное прослушивание медиаконтента и звуков окружающего пространства;
  • Natural — в котором плеер адаптирует выходной сигнал не только к АЧХ конкретных наушников, но и персональным особенностям слуха пользователя.

image

Версия для iPhone

Естественно, эти возможности были бы невозможны без новаторского алгоритма обработки сигнала. О его создании и пойдёт речь.

От слуховых аппаратов к медиаплеерам

В начале 2014 года дружная команда разработчиков трудилась над выпуском приложения Petralex Hearing Aid, реализующего цифровой слуховой аппарат на базе смартфона/планшета. Изначально приложение было адресовано людям, которые вынуждены (но стесняются) носить слуховой аппарат. Ведь гарнитуру смартфона за слуховой аппарат никто принять не подумает. К тому же у смартфона/планшета есть вся аппаратная часть (как и у настоящего – и весьма недешевого! – цифрового слухового аппарата). Дело лишь за «софтом», способным в реальном времени обрабатывать аудиосигнал в соответствии с персональной аудиограммой пользователя (характеризующей нарушения слуха), снятие которой – тоже дело «софта».

Так вот, в самый жаркий период окончания работ над Petralex два человека из команды разработчиков, после тяжёлого трудового дня, ехали в метро. И один дал товарищу наушник – послушать песенку с забавным содержанием. Правда из-за шума (кто ездил в метро, знает!) товарищ не разобрал ни одного слова! И сгоряча предложил идею: анализировать окружающий шум и обрабатывать полезный сигнал так, чтобы повышать его разборчивость (несмотря на внешний шум!).

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

Битва над алгоритмом

Самой главной проблемой была неординарность задачи – ни одной публикации по данной тематике найти не удалось! В первый момент разработчики вообще не знали об имеющихся аналогах. Возможно поэтому, решили задачу гораздо более оригинальным способом. А о похожих решениях (по материалам западных конференций) узнали уже в момент оформления собственного патента.
Но это было позже. Поначалу алгоритм обработки сигнала был ещё очень сырой. Ни о каком «реал-тайме» не шло речи вообще. Впрочем, для начальной отладки это нормально – целью было заставить работать программный модуль в принципе, чтобы получить желаемый результат.

urbandenoiser splash

Первый прототип приложения, готовый к установке на телефон, вышел спустя пять месяцев после возникновения самой идеи – в июне 2014 года. И сразу же выявились его недостатки – математический алгоритм обработки сигнала оказался очень «тяжёлым»!
Ведь основная проблема при обработке звука в режиме реального времени – требуется простой и эффективный алгоритм. Чтобы мобильный телефон успевал обрабатывать довольно стремительный поток данных (44.1 кГц в нашем случае). Обычно, в обработке речи ограничиваются частотами 8 или 16 кГц. Но поскольку в нашем приложении обрабатывается и музыка, то частота должна быть выше.

Так вот, получившийся алгоритм отказывался работать на iPhone 4. Пришлось разработчикам вновь засучивать рукава и оптимизировать код на Си. В результате удалось снизить загрузку процессора с 55% до 35% на iPhone 5. На тот момент этого оказалось достаточно (хотя сейчас ребята трудятся над ещё большим снижением загрузки CPU, чтобы приложение запускалось на любом «захудалом Android»).

Искания «меломанов»

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

image

Ещё одной проблемой была необходимость учитывать специфику конкретной аппаратуры (т.е. собственный уровень шума микрофона гарнитуры). На этот шум алгоритм обработки вообще не должен реагировать! Однако беда в том, что у каждого телефона свой, «индивидуальный» уровень шума. Все это нужно было как-то учесть в конечном варианте приложения. Хорошо ещё, что звуковая система iPhone характеризуется довольно малым уровнем шума.

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

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

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

image image

Эффект Natural также достигается благодаря «хитрому» математическому алгоритму обработки аудиосигнала. Его суть заключается в оценке АЧХ воспроизводящего устройства относительно субъективного порога слышимости в тишине (для каждого пользователя этот порог свой) – и ввода поправочного коэффициента. На практике это означает, что потратив пару минут на настройку плеера (с помощью встроенной процедуры определения порога слышимости), можно наслаждаться живой окраской музыки. И почувствовать себя в настоящем концертном холе!

Ещё немного радужных красок и…

Математический алгоритм плеера был отлажен. Но для его превращения в полноценное мобильное приложение требовался дружелюбный интерфейс. И вновь появились трудности. Разработчики очень долго мучились над синхронизацией рисования анимации (в частности спектрума – чтобы он не «дёргался» и совпадал с обновлениями экрана мобильника). Класс CADisplayLink нигде явно не описан. То есть документация конечно есть. Но попробуй найти конкретные указания, что вот «именно это очень важно и нужно»!

Следующей «ступенькой» к успеху стала борьба с интерфейсом. В частности в iOS при включении микрофона (когда ваше приложение свёрнуто) отображается красная полоса. Микрофон можно выключить вызовом одной функции, но полоса при этом не пропадает. Чтобы её убрать приходится делать кучу ненужных, да еще и часто мешающих работе, манипуляций (останавливать AudioGraph и перезапускать снова, что не есть хорошо – эту остановку можно услышать на слух). Ну, и общей загвоздкой было отсутствие простеньких приложений (типа «Hello world», работа с БД, работа с Аудио, Видео и т.д.). Хотя в целом уже ничто не могло остановить победного шествия приложения!

image

Вот вкратце история создания UrbanDenoiser Player – первого в мире плеера с уникальными режимами воспроизведения. Результат многомесячной работы дружной команды специалистов теперь доступен каждому – плеер распространяется свободно!

PS: Из последних новостей — приложение UrbanDenoiser Player стало победителем Европейского кубка разработчиков проводимого Microsoft, в категории B2С http://appcup.eu

Спасибо за внимание!

Автор: ITforyou

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js