Хабрахабр

[Перевод] Codec 2 + нейросеть = целый подкаст на одной дискете

В предыдущей статье мы обсудили кодек Opus, который работает на очень низких битрейтах. Но другой кодек стремится достичь ещё более низких битрейтов — это Codec 2.

И хотя битрейт впечатляет, звук не такой качественный, как в случае Opus, что можно услышать в аудиопримерах. Codec 2 предназначен для кодирования только речи. Тем не менее, в сочетании с нейросетью (WaveNet) кодек демонстрирует впечатляющие результаты.


Слои нейронной сети WaveNet

Codec 2 распространяется с открытым исходным кодом и предназначен для кодирования речи. Он ориентируется на битрейт от 700 до 3200 бит/с.

Он начал проект в сентябре 2009 года с целью совершенствования недорогой радиосвязи для людей в отдалённых районах мира. Разработчик — Дэвид Роу, инженер-электроник, в настоящее время живущий в Южной Австралии. С этой целью он собирался разработать кодек, который значительно уменьшит размер файлов и требования к пропускной способности канала при потоковой передаче.

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

Автор называет различные применения кодека, среди них VoIP, голосовая связь по узкой полосе цифрового ВЧ/УВЧ радио (особенно для любительского радио, во избежание проблем с использованием проприетарных кодеков), связь в развивающихся странах и удалённых регионах, включая армию, полицию и спасательные службы.

Мы в компании Auphonic заинтересованы в потенциальном применении кодека для лучшего сжатия подкастов, презентаций и аудиокниг, что позволяет уменьшить объём занимаемого места и свести к минимуму эффект плохих сетевых соединений.

Для снижения битрейта необходимо свести речь к минимально возможной информации/данным, то есть минимизировать объём избыточно передаваемой информации.

Он разделяет речь на сегменты по 10−30 мс, которые называются кадрами. Для этого Codec 2 использует гармоническое синусоидальное кодирование речи. Далее для каждой гармоники в диапазоне 4 кГц записываются амплитуда и фаза. Каждый кадр затем анализируется на предмет фундаментального уровня (pitch) и количества гармоник, которые вписываются в полосу пропускания 4 кГц.

Эта информация затем кодируется, а декодер восстанавливает звук на основе этих данных.

Иллюстрация от Rowtel
Блок-схемы Codec 2: энкодер (слева) и декодер (справа).

Хотя всё это звучит здорово в теории, но что в реальности? Давайте послушаем. Вот короткий звуковой файл wav:

intro-orig.wav — 1,3 МБ

Применим Codec 2 (без декодера WaveNet) на разных доступных битрейтах: 3200 бит/с, 2400 бит/с, 1600 бит/с, 1200 бит/с и 700 бит/с.

Эти примеры показывают значительное уменьшение размера файлов.

Посмотрим на файлы с точки зрения их объёма для хранения 1 часа звука:

  • На 3200 бит/с, один час звука требует всего 1,37 МБ (поместится на одной старой 3½-дюймовой дискете!)
  • Битрейт 2400 бит/с соответствует 1,03 МБ/ч
  • Битрейт 1600 бит/с равняется 0,68 МБ/ч (или примерно два часа звука на одной дискете!)
  • 1200 бит/с — до 0,51 МБ/ч
  • 700 бит/с — до 0,3 МБ/ч

Сжатие очень сильное, но результат явно звучит неестественно.

Для сравнения, тот же звук в MP3 на 8 Кбит/с.

Можно хорошо слышать то, что иногда называют шипением (sizzle) — странные металлические звуки, присущие MP3 низкого качества. Размер файла значительно больше, чем у Codec 2, и качество, вероятно, всё ещё неприемлемо.

Кажется, он объединяет оба мира, то есть обеспечивает приемлемое качество на низком битрейте: Opus. Есть последний кодек, с которым можно провести сравнение.

Благодаря его убедительной производительности на низких битрейтах компания Auphonic уже предлагает пользователям кодирование Opus вплоть до 6 Кбит/с, самого низкого битрейта, который поддерживает кодек.

Голос немного приглушенный, но всё ещё звучит естественно. На скорости 6 Кбит/с кодек Opus кажется значительно лучше, чем MP3 8 Кбит/с.

(Имейте в виду, что Codec 2 не предназначен для кодирования музыки, а только для речи). Возвращаясь к Codec 2 чисто ради интереса послушаем, как у него получается кодирование музыки!

Исходный файл
MP3 8 Кбит/с

Итак, 3200 бит/с, 2400 бит/с, 1600 бит/с, 1200 бит/с, 700 бит/с. Лично я не могу слушать MP3 на таком битрейте, поэтому давайте посмотрим на результаты Codec 2!

Несложно понять, что для этой цели он вообще не подходит!

Как мы уже слышали, несмотря на впечатляющее сжатие, в результате получается не очень естественное звучание.

Он использовал Codec 2 на битрейте 2400 бит/с для кодирования, но заменил декодер Codec 2 на генеративную модель глубокого обучения WaveNet (для дополнительной информации см. Но тут дело становится интереснее, если посмотреть на работу Бастиана Кляйна из Библиотеки Корнельского университета. статью «Кодирование речи с низким битрейтом на основе Wavenet»).

Вот несколько примеров от авторов:

Мужской голос
Исходный файл
Codec 2
С декодером WaveNet

Женский голос
Исходный файл
Codec 2
С декодером WaveNet

По сравнению с Codec 2 мы слышим значительное улучшение качества, а если сравнить с оригиналом, то существенного снижения качества нет.

Сам Дэвид Роу заявил, что считает результат «кардинальным улучшением в кодировании речи при низкой скорости передачи» и «хорошим широкополосным речевым кодеком 8000 бит/с».

Хотя (оригинальный) кодек Codec 2 представляет собой очень интересную работу, его сфера использования ограничена, а конечный результат не подходит для подкастинга. Также по аудиопримерам понятно, что его можно использовать для сжатия только голоса, но не музыки.

Тем не менее, Codec 2 в сочетании с декодером WaveNet значительно улучшает качество, а низкий битрейт (2400 бит/с) будет чрезвычайно интересен для распространения подкастов и аудиокниг: на один час звука требуется всего 1,03 МБ места!

Пока мы добавили поддержку Codec 2 только для входных файлов. Auphonic добавит поддержку Codec 2 в файлы выдачи, когда декодер WaveNet появится в удобной для использования форме.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»