direkt zum Inhalt | Websitenavigationsübersicht | Sprachwechsel

Prof. Dr.-Ing. habil. Hansjörg Mixdorff
Beuth-Hochschule für Technik Berlin
(University of Applied Sciences)
FB Informatik und Medien
Multimediatechnik (Audio/Video) / Technische Sprachverarbeitung
Email: mixdorff@bht-berlin.de

Tagesdatum

Diese Seite steht in folgenden Sprachen zur Verfügung:

  • Deutsch 

Sie befinden sich: Home » Multimediatechnik (Audio) » Übung-1

Inhalt dieser Seite:

Multimediatechnik MMT (Audio) Übung-1

Wählen Sie eine weitere Seite:

Themen: Abtastung, Faltungsverzerrungen, Quantisierung

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:

  • wave_io -i test.wav Wave-Datei 'test.wav' wird eingelesen und Header-Daten werden angezeigt
  • wave_io -i test.wav -o test2.wav Wave-Datei 'test.wav' wird eingelesen und der Inhalt in die Datei 'test2.wav' kopiert
  • Wave_io.exe wird als Win32-ConsoleApplication in Visual Studio 2010 erzeugt.

nach oben ] [ Website-Navigation ]

1. Aufgabe

Erzeuge zwei kurze Audio-Files (max. 5 s), davon eines mit Musik deiner Wahl aus dem Internet (wobei sich Musik 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 (Übersteuerung vermeiden !). Wähle hier eine Abtastfrequenz von 22 kHz, 16 bit Auflösung, mono. Die Einstellungen wie Abtastrate, Bitzahl und Kanalzahl können im

vorgenommen werden. Die Eingangsquelle (wahlweise Audio-CD oder Mikrofon) kann im

eingestellt werden. Benenne die Dateien "Musik_NameArbeitsgruppe.wav" und Sprache_NameArbeitsgruppe.wav". Schick mir die beiden WAV-Dateien unter Nennung deiner Arbeitsgruppe per Mail. In den folgenden Übungen wirst du diese Dateien oft als Ursprungssignale verwenden. Sollten sie verloren gehen, kannst du sie notfalls wieder von mir erhalten. Darauf werde ich dir zwei WAV-Dateien mit Testsignalen zusenden, die du bei den folgenden Aufgabenpunkten benötigst, sine_hiXX.wav und sine_loXX.wav. Nun lies die Musik- und die Sprachdatei 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. Aufgabe - Aliasing

2.1 Modifiziere wave_io dahingehend, dass die Samples in der WAV-Datei in eine (lesbare) ASCII-Datei geschrieben werden. Lies die von mir geschickten Dateien (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. Aufgabe - Bitreduzierung

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 Musik/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? (Waves für all diese Fälle ins Protokoll, Ausschnitte als Plots)

nach oben ] [ Website-Navigation ]

Seite drucken

Informationen zu dieser Seite:

Letzte Änderung: 25-Juli-2006
URL dieser Seite: http://public.beuth-hochschule.de/~mixdorff/mmt1/uebung1.html

Erstellt von: © (2006) created by πhomas Ulrich | www.jedermensch.de

Erstellt mit: Valid XHTML 1.0! Valid CSS! Erstellt mit CSS!

•Seitenende•