Sound komprimierung in echtzeit
-
Ich frage mich gerade, nach welchem Verfahren der Sound für Programme wie TeamSpeak komprimiert ist. Hat da einer zufällig ne Idee?
Muss ja relativ in echtzeit passieren, wenn man bedenkt, dass der sound auch noch gesendet und dekomprimiert werden muss...cYa
DjR
-
Ich kenns nicht, aber es gibt soviele Möglichkeiten. Da es um Sprache geht, z.B. FFT machen (Dadurch erhälst du natürlich eine kleine Latenzzeit) nur die für Sprache wichtigen Frequenzen übertragen, iFFT machen. Schon hast du Bandbreite gespart.
Oder Nächsten wert vorhersagen und nur den unterschied merken. Das ganze Huffman-codieren und schwups hast du wieder Bandbreite gespart, vorrausgesetzt, die Vorhersage ist halbwegs in Ordnung, was bei audiomaterial leicht ist.
-
Eventuell setzen die Leute aber auch Wavelets statt Fourier ein, eine DWT ist vor allem deutlich schneller als eine FFT und bringt zudem eine höhere Kompressionsrate.
-
mit prediction und huffman schafft man bei sprache (ohne stummpausen) kompressionen auf 25%-50% von der höchsten qualität in mono.
aber oft wird einfach auf 8khz aufgenommen, dass dann von 16 auf 12bit runter konvertieren (es gibt filter, die sowas fürs gehört unkenntlich machen), dann prediction+huff und du kannst auf 2-4kB/s sein.
wobei die qualität nicht so entscheident ist, es reicht ja oft dass du verstehst was jemand sagt ohne alle feinheiten seiner stimme zu erhalten.
eigentlich kannst du davon alle berechnungen mit integern machen. für die konvertierung von 16 auf 12 bit braucht man einen table, der ist einmal mit float berechnet *G*
rapso->greets();
-
wie MP3 unc Co. gibts auch spezielle sprach-codecs, die auf ein paar kHz bandbegenzt sind und daher nur eine sehr kleine datenrate benötigen.
zu nennen wären hier u.a. CELP und G723 ...
rocknix ///