Я не уверен, чем ZyXEL ADPCM отличается от других разновидностей ADPCM, но с помощью поиска в Google можно найти различные реализации ADPCM.
Однако настоящая причина моего поста в том, почему выбор ADPCM. ADPCM представляет собой адаптивную дифференциальную импульсно-кодовую модуляцию. Это означает, что передаваемые данные представляют собой разницу в выборках, а не текущее значение (именно поэтому вы видите такое сильное сжатие). В чистой среде без потери битов (например, на жестком диске) это нормально. Однако в потоковой среде обычно предполагается, что биты могут периодически искажаться. Любое повреждение данных, и вы будете слышать статические или другие звуковые артефакты очень быстро и, как правило, довольно плохо.
Механизм сброса ADPCM не основан на фреймах, что означает, что проблемы со звуком могут продолжаться в течение длительного периода времени в зависимости от кодировщика. Код сброса обычно представляет собой набор из 0 (на ум приходит 16, но прошло много лет с тех пор, как я писал свои собственные порты).
ADPCM в среде телефонии обычно преобразует 12-битный образец PCM в 4-битный образец ADPCM (неплохо). Что касается качества звука... неплохо для телефонных разговоров и устной речи, но большинство людей в слепом тесте могут легко обнаружить падение качества.
В своем последнем предложении вы бросаете кривую мяч в вопрос. Вы начинаете упоминать muLaw. muLaw — это реализация PCM, которая берет 12-битную выборку и преобразует ее с использованием логарифмической шкалы в 8-битную выборку. Это типичный механизм сжатия для сетей TDM (телефонных сетей) в Северной Америке (большая часть остального мира использует аналогичный алгоритм под названием ALaw).
Итак, я смущен тем, что вы на самом деле пытаетесь найти.
Вы также упомянули о реализации Microsoft и WAV. Вы, наверное, знаете, но на всякий случай, что WAV — это просто оболочка для аудиоданных, которая предоставляет информацию о формате, семплировании, канале, размере и другую полезную информацию. Без участия WAV, AU или других оберток muLaw и ADPCM обычно представляются как необработанные данные.
Еще один совет, если вы внедряете ADPCM. Как я уже говорил, они используют 4 бита для представления 12-битной выборки. Им это сходит с рук, поскольку у обеих сторон есть таблица умножения. Ваша позиция в таблице изменяется в зависимости от 4-битного значения (другими словами, значение кратно размеру шага и используется для определения нового размера шага). Я видел множество алгоритмов, использующих немного разные таблицы (не знаю почему, но обычно вы видите, что отправленные и полученные сигналы медленно отклоняются от смещения). Один из старых популярных звуковых пакетов отличался от того, что я обычно видел у поставщиков телефонного оборудования.
И, для более бесполезных мелочей, есть несколько разновидностей ADPCM. Отклонения связаны с таблицей, размером исходной выборки и размером выборки назначения, но мне никогда не приходилось с ними работать. Только что задокументированные разновидности, которые я обнаружил, когда искал в Интернете спецификации для различных аудиоформатов, используемых в телефонии.
person
Jim Rush
schedule
21.01.2010