ну допустим (хотя я опять же цитировал комментарий другого регистранта). всё равно твой dsp никак не освещает вопрос, что современным цапам чего-то там не хватает
DAC'и не являются ALU, следовательно и никакой вычислительной мощности у них быть не может. Спрашивай сAndrew насчет этого, я вижу тебе интересно этим заниматься. Прям как на дваче - из пустого в порожнее, и 0 хоть сколь-либо разбирающихся людей.
В ранних моделях аппаратуры для воспроизведения цифрового контента для этого использовались фильтры, которые имели плоскую характеристику до частоты в 20 кГц, а далее резкое ослабление уровня на 80дБ и более. В английской терминологии такие фильтры называют brick-wall
Заметил, что Vorbis любит обрезать крайние ВЧ даже на высоких битрейтах: FFmpeg AAC 320k vs Vorbis 415k http://www.framecompare.com/screenshotcomparison/9JJMJNNU
Спектр FFmpeg AAC 320k на ВЧ практически как у оригинала.
Вряд ли это можно услышать на слух, конечно. Потому что 19+ кГц мало кто слышит, но в какой-то мере показывает реализацию кодирования. Vorbis'у я задавал 384k, на деле получилось 415k (в заголовке файла так и осталось 384k, это особенность кодека). Надо смотреть Overall bitrate в MediaInfo.
У AAC тем не менее видно, что меньше ВЧ в более низкой (слышимой) области, а это еще хуже. Правда, сравнение не совсем корректное, ведь у Vorbis битрейт гораздо выше. Однако, я ожидал, что на 320k различия в спектре должны быть минимальны на хороших кодеках.
В ffmpeg aac даже на 320k нет прозрачности и слышимые скрипы местами (как на виниле). В слепом тесте я отличил его от оригинала даже на встройке AC97. Специально проверил клиппинга нет, пиковый уровень -1.5 dB. Разработчики ffmpeg обманывают, что ffmpeg aac не хуже fdk. Вот так бывает AAC, а звучит плохо. Один кодек отправился на помойку. Хочу заметить при этом, что начиная примерно с 80 kbps субъективно не слышится срез частот, то есть звучание полноценное, только скрипы. Хотя, на графиках срез есть, конечно, но адекватный. Не нужно бояться среза на 16 кГц.
Я тестировал на песне Smash!! - Belle, на 29 секунде скрипы отчетливо слышны. Интересное занятие. Советую начинать с дна: низких битрейтов и плохих кодеков, так интереснее. На хороших кодеках и нормальных битрейтах вы не найдете разницу. На fdk 128k я ее уже не слышу и не могу отличить.
Нативный aac использовал из ffmpeg 4.2 static (Ubuntu).
fdk из ffmpeg N-96249 (XP).
Но вообще ffmpeg aac звучит весьма прилично на высоких битрейтах. Все портят только эти искажения (чем выше битрейт, тем их меньше). Может, это баг, вызванный перегрузкой?
ABX - это хорошо (нравится). Но не надо пытаться подменить понятия. То что ABX дал нулевой результат означает, что фильтрация при данной кодировке не распознаётся. Но это не означает, что можно AAC называть винилом.
Если только в том плане, что винил (вернее, его оцифровка) как и любая аудиозапись может быть закодирована lossy кодерами без слышимых различий, неслышимых лично тобой, на том оборудовании, которое есть в данный момент, данная конкретная запись. Люди опасаются, что, если они сделают в будущем апгрейд, то на более качественном оборудовании могут услышать разницу. Это опасение усугубляет тот факт, что самовнушение людей оказывает влияние на восприятие. Результаты слепых тестов аннулированы на новом железе, кодек lossy - они начинают подсознательно искать дефекты и находят их (даже, если их нет). Артефакты самого исходника начинают приписывать кодеру*, который его сжимал. А сравнить с исходником уже не получится, ведь он удален для экономии места. Следующая особенность: даже, если слепой тест показывает отсутствие различий, никто не даст гарантий, что на другом треке картина повторится. Нужно прослушать много треков, составить большую статистику, чтобы гарантировать прозрачность кодирования, а это довольно хлопотно. В этом плане имеет смысл довериться другим людям. Многие утверждали, что в Opus 200k+ не могли найти киллер-сэмпл, где слышны различия. Немного добавив битрейта и можно утверждать с вероятностью 99.9%, что Opus 320k=lossless.
Еще такой момент по поводу различий: они могут быть не слышны, если не знаешь где искать. Делая слепые тесты на низких битрейтах, начинаешь изучать сорта искажений и, как положительный момент, ищешь их и на высоком битрейте. Может быть так: человеку нравится его lossy записи, но другой человек его научит «прислушайся и обрати внимание на такие-то моменты» и всё, тот человек найдет артефакты и будет их в дальнейшем постоянно замечать, хотя, может и смириться. В этом плане опять же lossless надежнее. Но, как я уже говорил, многие люди бились найти различия на высоких битрейтах Opus'а и пока не нашли. Поэтому использовать его вполне надежно, а вот за другие кодеки поручиться будет не так просто. Но можно просто слушать музыку и не обращать внимание на незначительные шероховатости. В конце концов, главное содержание.
* Один альбом выпустили на CD с сильной компрессией. Винил был выпушен с нормальным DD, но на нем мне казалось, что я слышу характерный ВЧ скрежет. Какое же было мое удивление, когда я услышал его и на CD. То есть, он был уже изначально, а я грешил на винил. Вот так бывает. Поэтому слепое сравнение всегда надежнее, чтобы исключить влияние самовнушения. Если не нравится винил, будешь подсознательно искать в нем искажения. Если нравится цифра, она будет казаться лучше. К сожалению, объективно сравнить винил с CD невозможно, легко вычислить источник по различным мелочам. Тогда надо стремиться максимально объективно сравнивать по небольшим отрезкам, уязвимым к искажениям.
Сложность в том, что качественное проведение слепых тестов трудно организовать. Нужно учеть ресемплинг, клиппинг, уровень громкости. Исходные файлы качественным sox ресемплингом нужно привести к частоте 48000, на который обычно работают звуковые карты. В режиме 32 bit float понизить уровень до -2...-3dB, чтобы исключить клиппинг. Он может появиться и после ресемплера и после lossy сжатия. Дело в том, что при lossy сжатии волна восстанавливается только приблизительно, чаще всего после декодирования уровень оказывается выше. И чем ниже битрейт, тем выше уровень. Только в формате 32 bit float сигнал может быть выше 0. Нужно выравнить среднюю громкость звучания оригинала и рипа по ReplayGain (не по пикам). Потому что, субъективно, если какой-то файл звучит громче, он кажется качественнее, а также это позволяет его отличить, основываясь только на громкости. Лучше использовать наушники, а в помещении должно быть тихо.
Сложность в том, что качественное проведение слепых тестов трудно организовать.
Не в этом «сложность». «Сложность» тупо в лени. Для графики ABX так никто и не настругал (даже на пайтоне). Понятно, что JPEG особо и не требовал, но щас есть всякие WEBP, BPG, PGF,… И тишина. Лень!
Я обычно открываю на полный экран в Viewnior два изображения и переключаюсь между ними стрелками. Предварительно лучше в GIMP привести к разрешению экрана. Хотя, и Viewnior приведет, но лучше, чтобы метод один был (например, кубический). Если стрелками туда сюда листать, быстро забываешь где какое. Потом можно посмотреть в свойствах. Так то частенько приходится сравнивать изображения. Но в основном скрины с видео. То есть, сравниваю видеокодеки по стоп кадрам. Очень эффективно сравнивать именно в полном экране при быстром переключении.
Opus 320k=lossless
Это только, если один раз пережал. А если несколько раз приходится пережимать пережатку, тогда искажения накапливаются. Этим тоже плох lossy. Хотя, на рутрекере жмут дорожки к фильмам по нескольку раз от одной раздачи к другой. Правда там и не музыка обычно, не так критично.
Но если даже делать пересохранения в wav (pcm) формате, искажения все равно будут накапливаться. Аудиоредакторы обычно работают в 32 бит. Получается конверсия 16>32>16. При понижении разрядности часто добавляется дизеринг (специальный шум), который может быть слышен, особенно, если его добавляли несколько раз. Я лично видел, как фубаровский дизеринг раскрасил шумом весь свободный спектр, где до этого была пустота. В Audacity по умолчанию включена эта функция, отключается на вкладке «качество», в Foobar тоже включена. В ffmpeg нет. Но, если ее отключить, множественные пересохранения 32>16 приведут к ошибкам округления (можно сказать, дизеринг делает округления на границах бит точными, благодаря шуму на ВЧ, который в большинстве случаев не слышен). Без него реальная битность получается 14 бит, с ним 18 бит. Выход из положения: сохранять и обрабатывать в 24 битах (без дизеринга), но тогда уже избыточным становится хранение.
Да все. Фича то полезная, если не злоупотреблять. А, ну Sony Vegas вроде не делает дизеринг. По крайней мере, если звуковую дорожку не трогать, а битность совпадает, она экспортируется побитово. Модифицируются, соответственно, только измененные участки.
Это логично для людей, а у программ есть технические ограничения. Vegas может так и с DV и, если повезет, с MPEG2. А также с левыми VFW intra кодеками (например, Helix YV12). Многие другие будут заново пережимать, даже при отсутствии изменений. Скажем, AviSynth в принципе ест только несжатый поток, соответственно требуется декодирование и кодирование, по такому же принципу работают множество монтажек. Чтобы протащить сырой поток в неизмененном виде требуются хаки и отсутствие архитектурных ограничений. Со звуком попроще, конечно. Но есть такое мировоззрение: «если есть вероятность, что кто-то накосячит, то он накосячит». Я не раз сталкивался. Соответственно, не удивлюсь, если звуковые редакторы при импорте переведут в 32 бит (не зная о целях пользователя), а при экспорте в 16 бит сделают дизеринг (сглаживание), даже при отсутствии изменений. Интересно только, что в этом случае 24-32 биты будут нулевые и что там сглаживать непонятно. Но этот вопрос требует изучения. О модификации неизмененных участков звука.
Выход из положения
Если требуется дальнейшая обработка, выводить в 32 bit float. При необходимости сжать wavpack. 32битный wavpack не умеет играть только Audacious (за новые версии не поручусь, впрочем), у него вместо звука шум. DeaDBeeF, SMPlayer (mpv), VLC и Foobar играют.
если есть вероятность, что кто-то накосячит, то он накосячит
Расскажу один случай. Записывал с тюнера (или с IPTV, уже не помню) минисериал «Женская логика» (я тогда еще не знал, что Говорухин такой м). Думал раздать на рутрекере (как и «А зори здесь тихие»), но другой чел тоже писал, а у него качество было лучше. Но, он не дописал концовку. В результате мы решили, что я пришлю ему концовку, он склеит и раздаст. Клеил он в программе MPEG Video Wizard (отличная софтина для монтажа MPEG2 без пересжатия). Однако у нас параметры видео немного отличались. У меня 720x576, звук mp2. У него 704x576 звук ac3. Ну, или что-то в этом роде. Я еще думал, переконвертировать свой кусочек, чтобы было одинаково или нет, но решил оставить как есть. Хотел узнать, как тот чел и его прога справятся. И что же вы думаете. При клейке прога наделала рассинхрон, чем ближе к концу, тем больше. Там по моему частота дискретизации звука была еще разная. И в таком виде он и раздал файл, народ скачивал. У меня был файл без рассинхрона, но с более худшим качеством видео и никому он уже был не нужен. По моему даже статус проверено поставили.
Еще один чел просил DVD к фильму «Французский для начинающих». У меня было две лицухи: наша и немецкая. Но в нашей оригинальная дорожка была моно. Он утащил из немецкого DVD оригинальную дорожку и приклеил к нашему DVD (хотя, качество видео там все же хуже, точнее, темнее). При этом умудрился мало того, что пережать заново звук, хотя, там надо было только delay открорректировать, так еще и наделал рассинхрона на 1 сек. Как так можно умудрится непонятно. Ну, если уж ты пережимаешь звук, за синхронностью как не проследить. Так что, перед тем, как что-то кому-то давать, надо максимально обо всем позаботиться, чтобы у другого было минимум проблем. Накосячит обязательно. Вообще-то я тоже по незнанию неправильно рипал транскодные DVD, а потом раздавал и не один. Еще больная тема: перетяжка звука PAL-NTSC с сохранением тона или без.
Дополнение https://www.foobar2000.org/components/view/foo_abx
Добавляешь два трека: оригинал и пережатку в плейлист, выделяешь, ПКМ - Utilites - ABX.
A - играет всегда первый трек (если первым стоит оригинал, то A будет оригинал). B - рип. Это я уже понял на низких битрейтах. Надо определить чему принадлежат X и Y. Например, X=A (соответственно Y=B) или X=B (соответственно Y=A). Немного запутано, но логику понять можно.
ReplayGain, мне кажется, не нужен
Обязателен. Выделяешь два трека, ПКМ - scan replaygain as single track - записать теги. В настройках еще скорее всего надо включить ReplayGain: режим by track (не album), apply gain. При начале теста надо поставить две галочки DSP и ReplayGain. Да, и в основных настройках надо бы в DSP вытащить ресемплер и настроить его на 48000. Какой-нибудь из качественных. sox в поставке не идет и на сайте нет, но я могу залить версию 2008, она нормальная.
Не с тем сравниваете. Да, AAC местами неплох, но только местами — преэхо никуда не делось (и не денется), как и у OGG Vorbis, впрочем… да и проприетарность AAC не делает его лучше, как ни крути.
Люди любят пережимать звук при синхронизации дорожек к фильмам. Даже, если можно обойтись без этого. MPEG Video Wizard умеет также обрабатывать AC3 без пересжатия, практически как в полноценной монтажке. Хотя, был один фанат MPEG Video Wizard. Фантастические вещи делал там. Синхронил переводы Анжелики и Малены.
Просто люблю экзотику. А ffmpeg aac показался мне самым экзотичным и малоизученным. Я давно на него глаз положил. Сейчас хочу сравнить старый ffmpeg 2.8 aac (в 3.0+ его значительно модифицировали, якобы улучшили). По спектрам он пока выглядит адекватнее. FAAC еще слабо изучен. Знаю, что были споры и его критиковали, а кого-то он устраивал. Вроде как он плохо битрейта слушается.