Diese Seite steht in folgenden Sprachen zur Verfügung:
Sie befinden sich: Home » Multimediatechnik (Audio) » Übung-1
Inhalt dieser Seite:
Wählen Sie eine weitere Seite:
Einführung:
Zur Verdeutlichung der Vorgänge bei der digitalen Audio-Verarbeitung werden wir verschiedene Manipulationen auf dem digitalisierten Audiosignal (in Form von Microsoft-WAV-Dateien) selbst programmieren. Dazu werden C-Funktionen (read_wave und write_wave in io_func.c, zugehöriges Main und Header-File:
zum Ein-und Auslesen von Wave-Dateien zur Verfügung gestellt, die entsprechend um einen Programmblock erweitert werden sollen, der die genannten Manipulationen realisiert. Zur Aufzeichnung, Darstellung und Wiedergabe der Wave-Dateien wird stets das Programm:
verwendet. Das Programm wave_io.exe in der vorliegenden Form liest lediglich eine Wave-Datei ein und speichert sie gegebenenfalls unter einem anderen Namen wieder ab.
Aufruf:
[ nach oben ] [ Website-Navigation ]
Erzeuge zwei kurze Audio-Files (max. 20 s), davon eines mit Music von einer CD deiner Wahl (wobei sich Music mit einer relativ hohen Dynamik, d.h. Wechsel zwischen relativ leisen und lauten Abschnitten empfiehlt). Wähle eine geeignete Abtastfrequenz (begründen !) und achte auf gute Aussteuerung. Das zweite Audio-File soll eine Sprachaufnahme (mit dem Headset aufgesprochen) enthalten (auf Übersteuerung achten !). Wähle hier eine Abstastfrequenz von 22 kHz, 16 bit Auflösung, mono. Die Einstellungen wie Abtastrate, Bitzahl und Kanalzahl können in
vorgenommen werden. Die Eingangsquelle (wahlweise Audio-CD oder Mikrofon) kann im
eingestellt werden. Lies beide Wave-Files mit wave_io ein und erkläre die Angaben im Header ! Wie hoch ist die Bitrate für die beiden Dateien?
[ nach oben ] [ Website-Navigation ]
2.1 Modifiziere wave_io dahingehend, dass die Samples in der WAV-Datei in eine (lesbare) ASCII-Datei geschrieben werden. Lies die Dateien
und
(Sampling-Frequenz: 16 kHz) ein und bestimme aus den resultierenden Zahlenfolgen in der ASCII-Datei die Frequenz der Sinus-Schwingungen (Begründen und jeweils eine Periode für das Protokoll abspeichern). Überprüfe Deine Schätzung mit dem
(Plots ins Protokoll !).
(Vorgehensweise: Menüpunkt Analyze File, Einstellungen: Freq Scale: Linear, FFT Size: 512, Time scale: 1 msec)
[ nach oben ] [ Website-Navigation ]
2.2 Bei der zeitlichen Diskretisierung eines Analogsignals muß das sogenannte Abtasttheorem eingehalten werden. Wie lautet es und wie läßt sich der Grenzfall, für den es gerade noch gilt, illustrieren (Zeichnung !)?
2.3 Bei herkömmlichen Soundkarten tritt systembedingt kein Aliasing auf, weil das Audiosignal stets geeignet vorbehandelt wird (wie ?). Mit einem kleinen Trick läßt sich Aliasing jedoch nachweisen. Diese auch als Down-Sampling bekannte Methode besteht darin, dass man bei einer WAV-Datei z.B. jeden zweiten Abtastwert wegwirft. Man erhält so eine Wellenform, die genau die Hälfte der ursprünglichen Abtastfrequenz aufweist. Wenn man das Signal nicht vorher bandbegrenzt hat, können Aliasing-Verzerrungen hörbar werden.
2.4 Modifiziere wave_io dahingehend, dass vom eingelesenen Signal jeder zweite Abtastwert verworfen wird und das resultierende Signal abgespeichert wird. Der Header muß natürlich entsprechend verändert werden! Wende das resultierende Programm zunächst auf 'sine_lo.wav' und 'sine_hi.wav' an. Welche Frequenzen erscheinen nach dem Down-Sampling (Spektrogramm und WAVs ins Protokoll !)? Was würde passieren, wenn man geeignet bandbegrenzen würde?
[ nach oben ] [ Website-Navigation ]
3.1 Die herkömmlichen PC-Soundkarten arbeiten meist entweder mit 16 oder 8 bit-Auflösung. Wie groß ist die Anzahl der bei diesen beiden Werten darstellbaren Amplitudenwerten ?
3.2 Wir wollen nun wave_io so modifizieren, dass wir die Bitzahl reduzieren können. Dazu können wir z.B. alle Samples durch eine Potenz von 2 teilen (Integer-Division ohne Rest). Damit das resultierende Signal nicht leiser wird als das Original, kompensieren wir die Operation durch Multiplikation mit derselben Zweierpotenz. Zu beachten: Der Datentyp hat nach wie vor 16 bit!
(Denselben Effekt erreicht man auch durch einfaches logisches 'Verunden' mit einem entsprechenden HEX-Wert, indem man mit dem LSB beginnend Bits 'ausblendet'.)
[ nach oben ] [ Website-Navigation ]
3.3 Mit dem entstandenen Programm verändern wir die in Aufgabe 1 erzeugten Wave-Dateien. Ab welcher Bitzahl tritt bei Music/Sprache eine hörbare/deutliche Verschlechterung der Qualität ein? Bei wieviel Bit ist das Sprachsignal noch verständlich ? (Waves für all diese Fälle ins Protokoll, Ausschnitte als Plots)
Was charakterisiert das entstehende Quantisierungsgeräusch und macht es besonders störend?
3.4 Modifiziere Dein Programm noch einmal so, dass auch das Differenzsignal zwischen Original und bitreduziertem Signal, das heißt, das Quantisierungsrauschen ausgegeben werden kann. Welchen Charakter hat das Rauschen bei einer Reduktion um 1 bit, wie verändert es sich bei zunehmender Bit-Reduktion?
[ nach oben ] [ Website-Navigation ]
Informationen zu dieser Seite:
Letzte Änderung: 25-Juli-2006
URL dieser Seite: http://public.beuth-hochschule.de/~mixdorff/mmt1/uebung1.html
•Seitenende•