Multimediale Werkzeuge, Audio: Formate, Tools Sound/Audio Objekte Formate, Beispiele: Mp3 (Kurz für MPEG1/2 Layer 3) PCM (Pulse Code Modulation, zb Wave Datei), übliche Formate: CD: 44100 Hz Abtastrate, 16 Bits/Abtastwert => Maximale Frequenz des Audio-Signals < 22050 Hz (echt kleiner) Schwingungen/sekunde 22050 Hz Abtastung: 44100 Abtastwerte (AW) pro sek nur Nullen nach Abtastung
praktisch: < ca 20-21 khz wegen begrenzter Flankensteilheit der Rekonstruktions-Tiefpass Filter (Sicherheitsabstand) => Signal-to-Noise Ratio = Signal/Noise (hier : Max Signal / Noise) Schätzung: SNR = 6 db/bit, also SNR = 16 * 6 db= 96 db Voltage A 2 db :10 log 10 ( Power A Power B )=10 log R 10( Voltage B 2 20 log 10 ( Voltage A Voltage B ) ( log(x 2 )=2 log(x) ) dh: ist unabhängig von der Wahl von Leistung oder Spannung für Signal oder Noise Beispiel: Umrechnung der 96 db in Spannungsverhältnis: 96=SNR(dB)=20 log 10 ( Signal Noise ) Signal/Noise Spannungs- Verhältnis 10 (SNR 20 ) = Signal Noise 10( 20 ) =10 48 =63095 96 R )
Wichtige Eigenschaft des db Masses: Multiplikationen von Faktoren werden zu Additionen von deren db Werten Beispiel: Wir habe 2 Dämpfungsglieder oder Antennen-Kabel mit einem Dämpfungsfaktor (Leistung) von je 01 Dies entspricht einem db Wert von 10 log 10 (01)= 10 db Über die 2 Dämpfungsglieder erhalten wir eine Gesamtdämpfung von deren Produkt, also 01*01=001 Dies entsrpicht -20 db Wir können nun diese Multiplikation vermeiden, indem wir einfach das entsprechende Resultat bekommen indem wir die beiden db Zahlen addieren: -10dB+(- 10)dB =-20 db Dies ist zb im Studio zum schnellen im Kopf berechnen einer Gesamt-Dämpfung einer Verbindung aus mehreren Kabeln sehr praktisch db(x) for voltage 0 db 1 6 db 2 10 db 10 20 db 10 60 db 1000-10 db 01-20 db 01-60 db 1/1000 db 0 x (linear factor)
Rules: db(x)+db( y)=db(x y) k db(x)=db(x k ) weitere gebräuchliche Formate: Abtastfrequenzen: 32000 Hz, 22050 Hz, ca 11000 Hz (Apple), 8000 Hz (Sprache, < 35 khz Audio), 48 khz, 96kHz 192 khz (High quality Audio) Anzahl der Bits/Abtastwert: 8bit, 20 bit, 24 bit, 32 bit Quantisierung: Gleichförmige Quantisierung: Unterteilung der moeglichen Amplituden in gleich grosse Quantisierungsintervalle Bei N bits zb: Quant(x)=round(x/Delta) Delta= (Max-Min)/2^N Rekonstruktion, Umkehrung der Quantisierung: Quant(x) gibt die Nummer des Quantisierungsintervalls an Also ist die Umkehrung: x_rek=quant(x)*delta Beispiel: x ist im Bereich -1 bis +1, x=06, N=4 bits Dh Delta=2/16=1/8 Quant(x)=round(06/(1/8))=5 Beachte: Quant(x) ist vorzeichenbehaftet Dafuer gibt es verschiedene Ansaetze, zb auch die Verschiebung des Intervals, so dass nur positive Zahlen erscheinen, oder das separate codieren des Vorzeichens x_rek=5*1/8=0625 Wir sehen eine Abweichung vom Originalwert 06,
das ist der sog Quantisierungsfehler, der ist hier 0025 Sprache Für Sprache gebräuchlich: mu-law: Ungleichförmiger Quantisierer, um das SNR bei kleinen Signalen zu verbessern: Feine Schritte bei kleineren Amplituden, gröbere Schritte bei großen Amplituden SNR sinkt nicht mehr wesentlich bei kleinen Amplituden ZB mu-law bei 8 KHz und 8 bit / Abtastwert wichtig wegen geringem SNR Verwendung zb in ISDN Telefonen Out μ-law In Im Bild: Ungleichfoermige Quantisierung, x-achse: Input des Quantisierers, y-achse: Output des Dequantisierers ZB sog Mu-Law: Wir verwenden vor einer
gleichförmigen Quantisierung eine nicht-lineare Funktion zur Kompression des Wertebereichs, und nach der gleichformigen Rekonstruktion die inverse Funktion zur Expandierung des Wertebereiches Bei mu-law: Nach zb 16 bit A/D converter wenden wir folgende Funktion an y=f (x)=sgn(x) ln(1+μ x ) 1 x 1 ln(1+μ) Diese Werte schicken wir dann in einen 8-bit Quantisierer Nach dem 8-bit De-Quantiserer wenden inverse Funktion zur Rekonstruktion an: F 1 ( y)=sgn( y)(1/μ)((1+μ) y 1) 1 y 1 (sh Wikipedia, mu-law) Dh Bitrate (Bits/Sekunde): 8000 Abtastwert Sekunde 8 bit Abtastwert =64000 Bitrate CD Signal: 16 bit/aw, 44100 AW/s bit Sekunde Bitrate = 16 bit/aw * 44100 AW/s= 7056 kb/s CD's sind immer stereo, also zusammen 2*7056 =14112 kb/s Kompressionsrate von MP3: Bitrate für einen Monokanal: ZB 64 Kb/s Also: Kompressionsrate =7056 kb/s / 64 kb/s =11025 Dh wir bekommen auch erhebliche Kompression bei MP3 (nicht nur ein Format!)
Mehr Audio Formate, Tools wie Adobe Audition, Audacity PCM: Signal, zb vom Mikrofon quantisierte Abtastwerte, zb CD: 44 100 Abtastwerte (AW) pro Sekunde 16 bit -> 2 byte -> 2 Möglichkeiten, diese 16 bit/ 2 byte pro AW darzustellen! Es gibt verschiedene Rechnerarchitekturen, die intern 16 bit mit zuerst dem höherwertigen byte oder dem niederwertigen byte darstellen Entsprechend gibt es 2 Darstellungen für PCM Audio-Formate: sog" Little Endian": Das 1 byte ist das niederwertige sog" Big Endian": Das 1 byte ist das höherwertige Diese Information muss der Nutzer kennen wenn das Audio-Signal im sog "raw" Format vorliegt, dh wenn das File nur die AW des Signals enthält
-> Für diese Information sind die sog "Header" in Audio-Formaten nützlich, wie zb in den Formaten: au, snd (SUN), aif (Apple), wav Information in Header, ua: Little-Endian oder Big-Endian, Abtastrate, Bits pro AW, Lineare oder mu-law Kennlinie, Verwendung von Kompression, wie zb ADPCM Weiter: einfache Kommentare zum Inhalt Beispiel zum Einbinden von Audio Dateien in Webseiten in HTML: Einen Link auf die Audio Datei setzen: <html> <head> <title>verweise auf sound Dateien</title> </head> <body> <h1>sound File</h1> <p> <a href="beethovens Symphonie Nr 9 (Scherzo)mp3">Beethovens Symphonie Nr 9 (Scherzo)mp3</a><br> Eine Sound Datei </p> </body> </html> Teste es mit zb: firefox soundlinkhtml
Beispiel mit HTML5: <html> <head> <title>audio Demo</title> </head> <body> Testing HTML 5 <audio src="groove1ogg" controls preload="auto" autobuffer></audio> </body> </html> Teste es mit zb: firefox audio_demohtml und firefox audio_demo2html Codec support in modern desktop browsers (Stand:2010) Browser Ogg Vorbis MP3 WAV FireFox 36+ Safari 5+ Chrome 6 Opera 105+ Internet Explorer 9 (beta) From: http://html5doctorcom/native-audio-in-thebrowser/ Beachte: HTML5 und Browserunterstützung ist noch im Fluss
Beispiel Live Streaming von Video in einer Webseite mit Python Flask: In Video Streaming example: python mainpy Im Browser gehe nach: http:0000:5000 Beachte: In der Webseite startet in der Tat das Live Video der angeschlosssenen Webcam Siehe auch: https://githubcom/log0/video_streaming_with_flask_ example
ADPCM: Adaptive Differential Pulse Code Modulation Prinzip: Benachbarte AW sind meist sehr ähnlich, dh wir können Bits bei der Darstellung sparen, wenn wir nur die Differenz zum vorherigen Abtastwert übertragen oder speichern (daher "Differential") Übertragen der Differenz von praedizierten und den tatsaechlichen Werten Nächster Schritt: Wenn die AW zb auf einer Kurve Liegen, die durch eine Grade angenähert werden kann, können wir den nächsten Abtastwert ungefähr vorausberechnen oder schätzen ( Extrapolation der Graden), und die Differenz zum vorausberechneten Wert übertragen Der Empfänger führt die gleiche Vorausberechnung durch, und addiert diese Differenz darauf Das Verfahren kann erweitert werden auf Kurven, auch höherer Ordnung Dafür werden nur mehr AW aus der Vergangenheit benötigt, um diese Kurven
extrapolieren zu können Dieses Verfahren der Extrapolation wird "Prädiktion" genannt Anwendung: Verlustlose Audiocodierung, Sprachcoder ADPCM Prinzipstruktur Encoder Audio Prädiktionsfehler Decoder Prädiktor Prädiktor Verzögerungsglied Für 1 AW, dh Prädiktor sieht nur vergangene AW! Prädizierter Wert Wird an das Signal adaptiert Üblicher Kompressionsfaktor von ADPCM: Ca 2
Stereo, Multikanal Mikrofone Lautsprecher Woher bestimmt das menschliche Gehirn die Richtung eines Schallereignisses? Antwort: Laufzeitunterschiede/Phasendifferenzen zwischen den Ohren, bei Frequenzen unterhalb ca 1 khz
Pegelunterschiede zwischen den Ohren (Paning), intensity stereo Intensity Stereo ist weit verbreitet, weil es für die Produktion einfach ist (Lautstärkeunterschiede durch Regler), und weil es für die Übertragung vorteilhaft ist: keine Phasenunterschiede, dh Differenzen werden gering Simples verfahren, zb in MP3 verwendet: statt Links/Rechts wird Summe (Mitte) und Differenz (Seite) übertragen, wenn es vorteilhaft ist, ansonsten wird Links/Rechts getrennt übertragen Verfeinerung: Anwendung dieses Verfahrens auf sog Teilbänder, also versch Frequenzbereiche (zb in MPEG2/4 AAC) Neuere Kompressionsformate MPEG2/4 AAC (Advanced Audio Coding) gedacht als Nachfolger von MP3 Kompressionsrate ca 152 größer als MP3 Verwendung zb in Apple itunes, Handys, File-Endung zb: mp4, oder aac MPEG4: Lossless Audio Coding, Verlustlose Komprimierung, dh die Original AW werden nach der Decodierung wieder exakt hergestellt Dies ist anders als bei der verlustbehafteten Codierung (MP3, AAC), wo das rekonstruierte Signal gleich klingt, aber andere AW hat (Unvollkommenheit des Ohres, Psycho-Akustik)
Kompressionsfaktoren von Lossless Compression sind abhängig vom Signal, meist um Faktor 2 Verwendetes Verfahren: Meistens prädiktive Codierung MPEG 4 Scalable Lossless: Deckt Bereich von Lossless bis Perceptual Coding (AAC) ab, also Kompressionsraten von Ca 2 bis über 10! Anwendungen: Archivierung, Studios mit Bearbeitung des Signals und mehreren Codier/Decodier Schritten (Tandem Coding Problem des Perceptual Coding, mit jedem Codier/Decodier-Schritt verschlechtert sich die Qualität) Durch höhere Bitrate bekommen wir "Reserve" Verwendetes Verfahren: Integer-to-Integer MDCT (Filterbank) Bearbeitung (zb Adobe Audition, Audacity) Filter, Equalizer, ändern der Abspiel-Geschwindigkeit ohne Tonhöhenänderung (Verwendung sog Filterbänke)
zb 022 khz x(n) Eingang h N-1 (n) r y N-1 (n) N 1000 2198022000 Hz h 1 (n) r y 1 (n) 2244 Hz h 0 (n) r y 0 (n) 022 Hz N Frequenzbereiche y(n) Ausgang Inputsantworten der Filter Verringerung der Abtastrate Um Faktor r, also schnelleres Abspielen ->Tonhöhe bleibt durch die Teilband-Zerlegung konstant Weitere Möglichkeit der Verarbeitung: statt Downsampler wird ein Verstärkungs- oder Dämpfungs-Faktor eingebaut -> Wir bekommen einfach wählbare Filter oder Equalizer