Code Monkey home page Code Monkey logo

lossless-audio-compression's Introduction

Lossless audio compression

LOSSLESS AUDIO COMPRESSION IN THE NEW IEEE STANDARD FOR ADVANCED AUDIO CODING is a paper authored by H. Huang, H.Shu and R.Yu that explains a lossless audio compression standard proposed by the IEEE (Institute of Electrical and Electronics Engineers). In this GitHub repository I will propose an implementation using MATLAB and will review its results.

Introduction

Generally we can find two types of audio compression: lossy and lossless.

  • Lossy: attempts to remove perceptually less important information from the audio data while keeping the sound quality very close, and sometimes indistinguisable to the original audio.
  • Lossless: this algorithm essentially keeps every bit of information in the original audio data.

The general schema of the explained lossless compressor is the following: ---IMG

In the following sections we will detail each of the building blocks of the lossless encoder.

Predictor

Below we can find the predictor schema. --IMG

Input audio samples are first segmented into frames of fixed length (30ms in our implementation). Take into account that as we are working with stereo audio, all the processing is done for each channel separately. From now on all the performed operations will be referred to one 30ms frame of one of the channels.

Once we have the frame we have to calculate its PARCORs (partial correlation) coefficients through the Levinson-Durbin algorithm. In our case, we used 20 coefficients. Then we quantify those coefficients to send them to the reconstructor. At the same time, we dequantize them in this same block in order to obtain the LPC (Linear Predictive Coding) coefficients in order to make the prediction with the same ones we are going to use in the decoding part, so the reconstruction is exact. Through this method, we will avoid losses when quantifying. Going more into the quantization detail, it is performed in two steps. First of all, we quantify non-evenly through the arcsin() function. After that, we quantify uniformly.

At the reconstructing part, as we don't have the original signal yet, we cannot perform the prediction directly filtering the signal with the obtained LPC coefficients. To do so, we apply the following formulas:

--IMG

Pre-processor

Below we can find the pre-processor schema. -- IMG

lossless-audio-compression's People

Contributors

omarbr6 avatar tdomenech avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.