Мы обсуждали традиционное шумоподавление на основе нескольких микрофонов в предыдущем посте. Такие технологии можно применять на пользовательском устройстве (телефоне, ноутбуке) только при наличии нескольких микрофонов.
В этом посте мы обсудим проблемы, связанные с использованием технологии шумоподавления на стороне сервера.
Когда мы разработали полностью программную технологию шумоподавления в компании 2hz.ai, возник серьезный вопрос: почему мы не можем запустить эту технологию на стороне сервера, а не на телефонах или ноутбуках?
Здесь есть большое ценное предложение для компаний-поставщиков услуг связи: независимо от того, какие устройства используют их пользователи, все эти разговоры могут быть шумоподавлены на стороне сервера.
Видите ли, когда выходит новый iPhoneX с лучшим шумоподавлением — это не оказывает большого влияния на таких поставщиков услуг, как Twilio, RingCentral, Fuze или WebEx. Это связано с тем, что iPhoneX составляет лишь часть их общего количества устройств. Но если бы они могли шумоподавлять (шумоподавлять) каждую коммуникацию, независимую от пользовательских устройств — в этом была бы большая ценность.
Даже больше. Когда вы находитесь в бэкэнде, у вас есть доступ к обеим ветвям вызова, и вы можете удалить шум с обеих ветвей. Таким образом, вы делаете «бесшумной» жизнь не только вашего пользователя, но потенциально и всех других пользователей, с которыми они разговаривают (пользователей за пределами вашей сети).
Звучит как ежу понятно. Однако это не так просто, как кажется. Теперь поговорим о некоторых трудностях.
Качество
Что ж, во-первых, вам нужна технология, которая работает с одним микрофонным источником звука, поскольку, очевидно, на стороне сервера вы не можете иметь доступ к двум микрофонным источникам. Ваша технология должна работать так же хорошо, как технология с двумя микрофонами. Мы (на частоте 2 Гц) думаем, что это невозможно без методов глубокого обучения.
Предполагая, что у вас есть такая технология, давайте посмотрим, с какими еще проблемами вы столкнетесь.
Высокий параллелизм
Как шумоподавление на устройстве, так и шумоподавление на сервере технически сложны. В то время как для первого требуется высокая скорость + низкие ресурсы ЦП + потребление батареи, для второго требуется высокая скорость + высокий параллелизм + низкое энергопотребление. Для среднего поставщика услуг вы должны быть в состоянии обрабатывать 10 000 вызовов одновременно, для больших раз это может быть 100 000 одновременных вызовов. Если ваши алгоритмы основаны на глубоком обучении — может быть невозможно поддерживать такой параллелизм при выводе с процессорами. Скорее всего, вам понадобятся графические процессоры для масштабирования.
Чтобы дать вам пример, с DNN среднего размера, если новейшее ядро ЦП Intel может параллельно устранять шум до 10 аудиопотоков, один средний графический процессор AWS может масштабироваться до 500 таких потоков. Учитывая, что графические процессоры не всегда легко доступны в центрах обработки данных и облачных сервисах, это может стать проблемой.
Вам нужно хорошо подумать, чтобы сделать такое решение экономически эффективным.
Задержка голоса
Еще одна вещь, о которой следует беспокоиться, — сквозная задержка голоса.
Когда два человека разговаривают по телефону, максимальная задержка, которая все еще удобна для их обычного разговора, составляет около 300 мс. Если технология шумоподавления приводит к значительной задержке на стороне сервера (из-за базовой математики или просто из-за скорости алгоритма) — это может повлиять на общее качество восприятия вызова. Если задержка высока, это может привести к увеличению проблем с дрожанием и, следовательно, к большему «обрыву голоса», что в целом является более серьезной проблемой, чем проблема фонового шума.
Особые гудки и музыка
Представьте, что вы звоните в колл-центр вашего банка. Вы слышите сигнал, а затем машина говорит «пожалуйста, подождите, пока наш представитель вам поможет», а затем играет музыка. Через какое-то время тот же бот произносит ту же фразу под музыку. Это продолжается до тех пор, пока человек не будет готов ответить на ваш звонок.
Если вы планируете шумоподавлять и входящие ветви звонка — у вас должна быть стратегия, как поступить в такой ситуации. Видимо это очень сложно. По сравнению с исходящим вызовом, где вы можете отменить все, кроме человеческого голоса, здесь у вас есть сложные вещи, такие как музыка, гудки и другие специальные сигналы, которые вы должны оставить нетронутыми.