Высокая степень сжатия mp3 обусловлена тем, что в mp3-файле в первую очередь хранятся не данные об изменении амплитуды (громкости) определенной частоты звукового сигнала во времени - собственно синусоиды, на которые нужно много места и большой битрейт, а лишь данные об их спектре, на которые места\битрейта нужно многократно меньше:
В верхней части рисунка изменение амплитуды гармонического сигнала частотой 100 Гц во времени, а в нижней - спектр этого сигнала, который имеет только частотную и амплитудную характеристики и не имеет временнОй. И теперь битрейт нужно потратить на кодирование всего лишь этих столбиков высотой в заданную амплитуду на заданной частоте, а не на всю синусоиду. Кстати, перенос ИНФОРМАЦИИ о сигнале из временной области в частотную и есть преобразование Фурье:
Но mp3-файл ведь нужно воспроизводить, а это будет происходить не в моменте, а во времени, поэтому привязка к временнОй шкале в любом случае должна быть. Для этой цели до преобразования Фурье исходный звуковой поток нарезается как бы на "кадры" (фреймы) аналогичные кадрам в видео файлах и вот они уже и трансформируются в спектр, причем, "спектральное содержание" соседних фреймов получается в большинстве случаев схожее, что увеличивает степень компрессии. Перед фреймированием звуковой поток также подготавливается определенным образом: фильтром обрезаются все частоты выше 16 кГц; удаляются маскируемые звуки по частоте (частотная маскировка), например, на фоне громкого звука какой-либо частоты никто не услышит тикающих часов, поэтому более тихие звуки близкие по частоте сразу перед и сразу после громкого звука удаляются; удаляются маскируемые звуки и по времени (временнАя маскировка) - если в одном фрейме сигнал громкий, то в соседнем фрейме на этой частоте весь звук можно просто убрать - все равно после громкого звука в раннем фрейме мы как бы "оглохнем" на 50 микросекунд;
Это исходный wav - весь спектр ровный, однородный, в нем нет фрагментации, дырок в спектре, выпавших участков
A это исходный wav сжатый в mp3 - в нем появились выпавшие участки - результат фреймирования, временнОй и частотной маскировки и т.п.
левый стереоканал записывается как сумма каналов, деленная пополам (среднее арифметическое), а правый как разность каналов; и еще некоторые ухищрения позволяющие сэкономить на битрейте.
При воспроизведении mp3-алгоритм производит обратную трансформацию из частотного спектрального содержимого отдельного "кадра" во временУю амплитудно-частотную, т.е. из спектральных "палок" синтезируются новые синусоиды разной частоты, масштабируются по амплитуде, и складываются\накладываются - в итоге получается новая похожая на исходную волна соответствующая ей по спектру. Все фреймы-"кадры" либо встык, либо с перехлестом, последовательно "проигрываются" по пометкам в файле и получается непрерывная звуковая волна.
Последний раз редактировалось shurik_pronkin; 11.10.2024 в 12:07.