26.04.2024
Подписывайтесь на Telegram-канал по ссылке

Google создал нейронный аудиокодек SoundStream

SoundStream Audio Codec

В Google Research разработали аудиокодек SoundStream на нейросети, который обрабатывает речь и музыку и может работать в режиме реального времени на процессоре смартфона. Разработчики заявляют, что инструмент позволит обеспечить высокое качество в широком диапазоне битрейтов с помощью единой обученной модели. Статья с описанием опубликована на arXiv.org.

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

За последние несколько лет были разработаны различные аудиокодеки, включая Opus и Enhanced Voice Services (EVS). Opus — это универсальный речевой и аудиокодек, поддерживающий битрейты от 6 кбит/с до 510 кбит/с, который широко используется в различных приложениях, от платформ видеоконференцсвязи, таких как Google Meet, до потоковых сервисов, таких как YouTube. EVS — это последний кодек, разработанный организацией по стандартизации 3GPP для мобильной телефонии. Как и Opus, это универсальный кодек, работающий на нескольких битрейтах, от 5,9 до 128 кбит/с.

Качество восстановленного звука с использованием любого из этих кодеков отличное при средних и низких битрейтах (12–20 кбит/с), но оно резко ухудшается при работе с очень низкими битрейтами (± 3 кбит/), отмечают в Google. В итоге исследователи заинтересовались применением машинного обучения для разработки улучшенных версий.

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

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

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

Кодировщик SoundStream создаёт векторы, которые могут принимать неопределённое количество значений. Чтобы передать их приемнику с использованием ограниченного числа битов, необходимо заменить их близкими векторами из конечного набора (кодовой книги) в ходе процесса, известного как векторное квантование. Этот подход хорошо работает при битрейтах около 1 кбит/с или ниже, но быстро достигает своих пределов при использовании более высоких битрейтов. Например, даже при скорости передачи всего 3 кбит/с и предположении, что кодировщик выдаёт 100 векторов в секунду, потребуется хранить кодовую книгу с более чем 1 миллиардом векторов, что на практике невозможно.

В SoundStream внедрили новый остаточный векторный квантователь (RVQ), состоящий из нескольких слоёв (до 80). Первый уровень квантует кодовые векторы с умеренным разрешением, а каждый из следующих обрабатывает остаточную ошибку предыдущего. В итоге при 100 векторах в секунду и 3 кбит/с использование пяти уровней квантователя увеличивает размер кодовой книги с 1 до 320 млрд.

Поскольку при передаче звука условия сети могут меняться, в идеале кодек должен быть «масштабируемым». Для этого в SoundStream внедрили метод, называемый «выпадение квантователя». Во время обучения случайным образом отбрасывали несколько слоёв квантования, чтобы имитировать переменную скорость передачи данных. Это заставляло декодер работать хорошо при любой скорости передачи входящего аудиопотока.

Google утверждает, что SoundStream на скорости 3 кбит/с превосходит Opus на скорости 12 кбит/с и приближается к качеству EVS на скорости 9,6 кбит/с при использовании в 3,2–4 раза меньшего количества бит. Это означает, что кодирование звука с помощью SoundStream может обеспечить аналогичное качество при использовании значительно меньшей полосы пропускания. При том же битрейте SoundStream превосходит текущую версию Lyra. В отличие от последней SoundStream всё ещё находится на экспериментальной стадии.

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

SoundStream будет выпущен как часть следующей улучшенной версии Lyra. Интегрируя SoundStream, разработчики смогут использовать существующие API-интерфейсы Lyra. Кроме того, SoundStream выйдет как отдельная модель TensorFlow для экспериментов.