infile: Musik_Detail.wav
filelength 888980
samples 443896
rate 44100
bits 16
bytes per sample 4
channels 2
infile: Sprache_Detail.wav outfile:
filelength 221860
samples 110171
rate 22050
bits 16
bytes per sample 2
channels 1
infile: sine_hi01.wav outfile:
filelength 32036
samples 16000
rate 16000
bits 16
bytes per sample 2
channels 1
infile: sine_lo01.wav outfile:
filelength 32036
samples 16000
rate 16000
bits 16
bytes per sample 2
channels 1
Für die Musik haben wir eine Abtastrate von 44,1 kHz genommen, damit wir alle Feinheiten hören können.
Bei der Sprache reichte eine Abtastrate von 11 kHz aus.
Attributname | Beschreibung |
---|---|
filelength | Beschreibt die Dateigröße in Byte |
samples | Anzahl der Samples |
rate | Abtastfrequenz |
bits | Auflösung |
bytes per sample | Bestimmt wie viele Bits pro Kanal vorhanden sind |
channel | Kanäle für Audio: 2 für Stereo, 1 für Mono |
FILE *prt; int i; prt = fopen("prt.txt","wt"); for (i = 0; i < n_wave; i++) { fprintf(prt,"%i\n", wave[i]); } fclose(prt);
4756 12665 16305 14449 7723 -1606 -10394 -15679 -15679 -10394 -1606 7723 14449 16305 12665 4756 -4756 -12665 -16305 -14449 -7723 1606 10394 15679 15679 10394 1606 -7723 -14449 -16305 -12665 -4756
12665 7723 -15679 -1606 16305 -4756 -14449 10394 10394 -14449 -4756 16305 -1606 -15679 7723 12665 -12665 -7723 15679 1606 -16305 4756 14449 -10394 -10394 14449 4756 -16305 1606 15679 -7723 -12665
Es finden 3 Nulldurchgänge statt. Das bedeutet in 16 Samplewerten befinden sich 1,5 Schwingungen. 16 Samplewerte haben eine Dauer von 16000Hz / 16 , also 1/1000 Sekunde. In 1/1000 Sekunde finden 1,5 Schwingungen statt, das bedeutet eine Schwingung dauert 1/1000 * 1,5 = 1/1500 Sekunde. Das entspricht 1500Hz oder aber 1,5 kHz.
Es finden 9 Nulldurchgänge statt. Das bedeutet in 16 Samplewerten befinden sich 4,5 Schwingungen. 16 Samplewerte haben eine Dauer von 16000Hz / 16 , also 1/1000 Sekunde. In 1/1000 Sekunde finden 4,5 Schwingungen statt, das bedeutet eine Schwingung dauert 1/1000 * 4,5 = 1/4500 Sekunde. Das entspricht 4500Hz oder aber 4,5 kHz.
Damit das Signal später wieder aus den Abtastwerten rekonstruiert werden kann, muß gewährleistet sein, daß die Abtastfrequenz fa mehr als doppelt so hoch gewählt wird wie die im abzutastenden Signal vorhandene höchste Frequenz: fa > 2 * fmax
Wird dieses sogenannte Abtasttheorem nicht eingehalten, so kommt es zu irreparablen Fehlern, sogenannten Faltungsverzerrungen.
Bei herkömmlichen Soundkarten wird das Signal durch einen Tiefpassfilter bearbeitet, sodass alle Frequenzen > f(max)/2 abgetrennt werden.
for (i = 0; i < (n_wave/2); i++) { wave[i] = wave[i*2]; } freq_in /= 2; n_wave /= 2;
Wie man am Spektogramm erkennen kann, ändert sich für sine_lo01 nichts. Die Frequenz
bleibt gleich bei 1,5 kHz. Das Abtasttheorem wird eingehalten, da die Ausgangsfrequenz schon niedrig
genug ist.
Die Datei sine_hi01 verliert einen kleinen Frequenzbereich und ist nach dem
Downsampling bei 3,5 kHz und nicht mehr bei den bisherigen 4,5 kHz. Es treten
Faltungsverzerrungen auf.
8 bit entspricht 28 Amplitudenwerten = 256 Amplitudenwerte
16 bit entspricht 216 Amplitudenwerten = 65536 Amplitudenwerte
read_wave(&wave, &n_wave, &freq_in, &bits_in, in_name, &header); for(i=0; i < n_wave; i++) { wave[i] /= pow(2,1); wave[i] *= pow(2,1); }
Bei der Musik tritt bei einer Reduktion um 8 Bit eine deutliche Verschlechterung der Qualität auf.
Bei der Sprache tritt bei einer Reduktion um 6 Bit eine deutliche Verschlechterung der Qualität auf.
Das Quantisierungsgeräusch äußert sich in einem permanenten Hintergrundrauschen.
const int bit=8; short *new_wave; new_wave = (short*)malloc(n_wave*sizeof(short)); for(i=0; i < n_wave; i++){ new_wave[i] = wave[i]; wave[i] /= pow(2.0,bit); wave[i] *= pow(2.0,bit); wave[i] -= new_wave[i]; wave[i] *= pow(2.0, 16-bit-1); }
Musik: Reduktion um 1 Bit
Musik: Reduktion um 8 Bit
Sprache: Reduktion um 1 Bit
Sprache: Reduktion um 6 Bit
Bei einer Reduktion um 1 bit dominiert das Quantisierungsrauschen. Je höher die Bitreduktion, desto höher ist der Anteil des Originalsignals im Differenzsignal. Daraus lässt sich schließen dass immer mehr Informationen verloren gehen.