34
Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen 5. Spektrale Unterschiede in Plosiven

Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Embed Size (px)

Citation preview

Page 1: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Analyse von Spektra 2

Jonathan Harrington

1. Wiederholung: Spektra in R einlesen

2. Einige grundlegende Funktionen

3. Zugriff auf Spektralwerte

4. Spektrale-Abbildungen

5. Spektrale Unterschiede in Plosiven

Page 2: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Zuerst zur Erinnerung…

Bei einer Fourier-Analyse werden N aufeinanderfolge digitale Werte eines Zeitsignals in N spektrale Werte umgewandelt.

Dauer in ms eines N-Punkt-Fensters: N/fskHz, wo fskHz die Abtastrate in kHz ist. zB 256 Punkte bei 10 kHz = 25.6 ms.

Das Algorithmus um die Fourier-Analyse anzuwenden ist ein FFT und dafür muss N einer Potenz 2 sein.

Von den N-spektralen Werten behalten wir diejenigen bis zur und inkl. der Faltung-Frequenz.

Das sind (N/2) + 1 spektrale Komponente zwischen 0 und fs/2 Hz mit einem Frequenzabstand von fs/N

Page 3: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

1a. Utterance-List der kielread06 Datenbank laden

to tkassp

Page 4: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

b. FFT Anwendung

N = 512 bedeutet eine Frequenzauflösung von 16000/512 = 31.25 Hz (bei einer Abtastrate von 16 kHz).

den Pfad eintragen, wo die spektralen Daten gespeichert werden sollen

Die Extension, mit der die spektralen Daten gespeichert werden sollen

Page 5: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

c. Template-Datei ändern

Page 6: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

k67*00*add to listK67MR010add to list

e. Segmentliste speichern

zB fric.txt

d. Äußerungen auswählen

Page 7: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

f.gespeicherte Segmentliste in R einlesen…

Page 8: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

fric = read.emusegs("H:/fric.txt")

Segmentliste

g. Spektral-Objekte in R einlesen

sp = emu.track(fric, "dft")

Spektral-Trackdatei

sp5 = dcut(sp, .5, prop=T)

Spektral-Matrix der Daten zum 50% Zeitpunkt

Spektral-Objekte

fric.l = label(fric)

Label-Vektor

Page 9: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

sp5 Spektral-Matrix zum zeitlichen Mittelpunkt fric.l Label-Vektor

sp Spektral-Trackdatei

2. Drei grundlegende Funktionen

is.spectral() ist dies ein Spektral-Objekt?

dim() Wieviele Dimensionen?

trackfreq() Welche Frequenzen sind vorhanden?

fric Segmentliste

Page 10: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

is.spectral(sp)

is.spectral(sp5)

[1] TRUE dim(sp) dim(sp5)

[1] 9 257

sp5 Spektral-Matrix zum zeitlichen Mittelpunkt

fric.l Label-Vektorsp Spektral-Trackdatei

9 Segmentefric.l[1] "x" "C" "C" "x" "x" "C" "C" "C" "C"

257 Spalten

weil wir einen 512 Punkt FFT angewendet haben

fric Segmentliste

Page 11: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Mit trackfreq() bekommt man die tatsächlichen Frequenzen:

trackfreq(sp5)0.00 31.25 62.50 93.75 125.00 156.25 187.50 218.75 250.00 …7937.50 7968.75 8000.00

Was ist der Frequenzabstand in diesem Fall zwischen den Spektralkomponenten?

16000/512 = 31.25 Hz

sp5 Spektral-Matrix zum zeitlichen Mittelpunkt

fric.l Label-Vektorsp Spektral-Trackdatei

fric Segmentliste

Page 12: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

3. Zugriff auf die Spektralwerte

Spektrale Trackdatei/Matrizen können genau wie Trackdateien/Matrizen behandelt werden, abgesehen davon, dass sich die Werte nach dem Komma auf die Frequenzen beziehen.

Page 13: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

zB

Spektrale Werte (zum zeitlichen Mittelpunkt) des 4en Segmentes (also alle Frequenzen)

das gleiche zwischen 1000-2000 Hz

sp5[4,1000:2000]

Spektrale Werte, Segmente 4, 5, 7 Frequenzen 2000-2500 Hz

sp5[c(4,5,7), 2000:2500]

Spektrale Werte aller Segmente 0-500 Hz:

sp5[,0:500]

sp5 Spektral-Matrix zum zeitlichen Mittelpunkt

fric.l Label-Vektorsp Spektral-Trackdatei

fric Segmentliste

Page 14: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Frequenzen 480 Hz und 2000 Hz Segmente 1 und 3?

sp5[c(1,3), c(480, 2000)]

Page 15: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Man kann auch einzelne Spektralwerte bekommen: man bekommt (wie in allen Fällen) die Werte der nächst liegenden Frequenz, zB:

Page 16: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Spektrale Werte aller Segmente zu 490 Hz

w = sp5[,490]

1527.5 1727.5 2217.5 887.5 1677.5 747.5 1122.5 1107.5 1927.5 19.39060 18.88820 4.13902 36.24630 27.15270 27.91090 22.86600 16.02600 24.91330

attr(,"class")[1] "numeric" "spectral"attr(,"fs")[1] 500

w

500 is die nächst liegende Frequenz an 490

trackfreq(sp5)[15:20][1] 437.50 468.75 500.00 531.25 562.50 593.75

sp5 Spektral-Matrix zum zeitlichen Mittelpunkt

fric.l Label-Vektorsp Spektral-Trackdatei

fric Segmentliste

Page 17: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

w enthält 9 dB Werte = die Amplituden zu dieser Frequenz 490 Hz. Warum 9?

1527.5 1727.5 2217.5 887.5 1677.5 747.5 1122.5 1107.5 1927.5 19.39060 18.88820 4.13902 36.24630 27.15270 27.91090 22.86600 16.02600 24.91330

attr(,"class")[1] "numeric" "spectral"attr(,"fs")[1] 500

w

Das sind die Amplituden zu 490 Hz dieser Segmente:

fric.l

[1] "x" "C" "C" "x" "x" "C" "C" "C" "C"

sp5 Spektral-Matrix zum zeitlichen Mittelpunkt

fric.l Label-Vektorsp Spektral-Trackdatei

fric Segmentliste

Page 18: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

1527.5 1727.5 2217.5 887.5 1677.5 747.5 1122.5 1107.5 1927.5 19.39060 18.88820 4.13902 36.24630 27.15270 27.91090 22.86600 16.02600 24.91330

attr(,"class")[1] "numeric" "spectral"attr(,"fs")[1] 500

w

Das sind die Zeiten zu denen, die Spektral-Werte vorkommen. (zum zeitlichen Mittelpunkt des jeweiligen Segmentes)

sp5 Spektral-Matrix zum zeitlichen Mittelpunkt

fric.l Label-Vektorsp Spektral-Trackdatei

fric Segmentliste

Page 19: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

1527.5 1727.5 2217.5 887.5 1677.5 747.5 1122.5 1107.5 1927.5 19.39060 18.88820 4.13902 36.24630 27.15270 27.91090 22.86600 16.02600 24.91330

attr(,"class")[1] "numeric" "spectral"attr(,"fs")[1] 500

wsp5 Spektral-Matrix zum zeitlichen Mittelpunkt

fric.l Label-Vektorsp Spektral-Trackdatei

fric Segmentliste

fricsegment list from database: kielread06 query was: Phonetic = C | x labels start end utts1 x 1493.940 1567.440 K67MR0012 C 1710.690 1745.130 K67MR0013 C 2144.190 2283.130 K67MR0014 x 825.313 947.812 K67MR0035 x 1656.810 1694.750 K67MR0036 C 718.000 776.375 K67MR0047 C 1078.440 1164.940 K67MR0048 C 1079.810 1136.440 K67MR0069 C 1875.000 1985.690 K67MR008

zeitlicher Mittelpunkt des 5en Segmentes

Page 20: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

plot()

4. Abbildung der Spektra

eigentlich plot.spectral() – d.h. plot() erkennt, dass es sich um spektrale Objekte handelt, und setzt dann plot.spectral() ein (ein Beispiel von Object Oriented Programming)

daher um Hilfe/Beispiele bei der Anwendung der Abbildungen von Spektra zu bekommen, help(plot.spectral), jedoch ganz einfach plot() bei der Erzeugung von Spektral-Abbildungen verwenden.

Page 21: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

plot(sp5)

Spektra aller Segmente

Spektra im Bereich 1000-3000 Hz, + Etikettierung

plot(sp5[,1000:3000], fric.l)

Nach Etikettierung kodiert

plot(sp5, fric.l)

Spektra der Segmente 3 und 5 Frequenzbereich höher als 3500 Hz nach Farbe kodiert

plot(sp5[c(3,5), 4000:8000], fric.l[c(3,5)])

sp5 Spektral-Matrix zum zeitlichen Mittelpunkt

fric.l Label-Vektorsp Spektral-Trackdatei

fric Segmentliste

Page 22: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

4b. Durchschnittsspektra

(ensemble-averaged spectra)

zuerst etwas zu Decibel…

Page 23: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Decibel-WerteDie Amplituden-Werte, die man durch tkassp bekommt sind in Decibel.

Decibel sind aber Logarithmen, und um den Durchschnitt von Logarithmen zu bekommen, müssen sie zuerst in Anti- Logarithmen (eine Potenz hoch 10) umgerechnet werden.

Diese Umrechnung in Anti-Logarithmen konvertiert die logarithmische Decibel oder Bel Skala in eine lineare Kraft Skala

Die Berechnung (Durchschnitt usw.) erfolgt dann in der Kraft-Skala.

Dann werden diese Berechnungen wieder in dB konveriert.

Page 24: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Logarithmische dB-Werte 60 dB 70 dB

lineare Kraft-Werte 10^6 10^7

Berechnungen durchführen

(10^6 + 10^7)/2

= 5500000

Logarithmische dB-Werte 10 * log(5500000, base=10)

[1] 67.40363

Page 25: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Glücklicherweise muss man nicht selbst diese Umrechnungen Decibel Kraft Decibel durchführen: dies erfolgt bei Funktionen wie plot() oder fapply() automatisch durch die Setzung des Argumentes power = T

Page 26: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Dec

ibel

Frequenz

Dieser Wert ist der Durchschnitt aller 'roten' Werten zur selben Frequenz

plot(sp5[,1000:1500], fric.l)plot(sp5[,1000:1500], fric.l, fun="mean", power=T)

1000 1200 1400

010

30

1000 1200 1400

1525

35

Page 27: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

5. Analyse von Plosiven

Page 28: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

plos.l Etikettierungen ("b", "d")plos.w Die entsprechenden Wortetikettierungenplos.lv Die Etikettierungen der danach kommenden Vokaleplos.asp Vektor der Zeiten, zu denen der Burst vorkommtplos.sam Zeitsignale von "b" "d"plos.dft Spektrale Trackdatei

Wie kann man plos.dft benutzten um (a) die Abtastrate (b) die Fensterlänge, mit der die spektralen Daten berechnet worden sind, zu bekommen?

freqint = trackfreq(plos.dft)

fs = 2 * max(freqint)

N = fs/freqint[2]

Page 29: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Die [b, d] Burst-Spektra sollen sich dadurch unterscheiden, dass zwischen 500-4000 Hz [d]-Spektra steigen (die Amplitude nimmt mit zunehmender Frequenz zu) während [b]-Spektra fallen. Kann dieser Unterschied in diesen Daten festgestellt werden?

Page 30: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

plot(plos.sam[2,], type="l")

abline(v=plos.asp[2], col=2)

Das Spektrum ist über 256 Punkte berechnet worden. Wieviele ms bei fs = 16000 Hz?

16 ms

abline(v=plos.asp[2]-8, col=3)

abline(v=plos.asp[2]+8, col=3)

Hier ist das Zeitsignal fuer den zweiten Segment

Der Zeitpunkt, zu dem der Burst vorkommt…

Hier ist das Intervall, worauf der 256-Punkt FFT analysiert worden ist…

Page 31: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

420 440 460 480 500 520

-500

00

5000

times

data

[, k

]

Page 32: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Wir benötigen die spektralen Werte zum Zeitpunkt vom Burst.

p5 = dcut(plos.dft, plos.asp)

plos.l Etikettierungen ("b", "d")plos.w Die entsprechenden Wortetikettierungenplos.lv Die Etikettierungen der danach kommenden Vokaleplos.asp Vektor der Zeiten, zu denen der Burst vorkommtplos.sam Zeitsignale von "b" "d"plos.dft Spektrale Trackdatei

Page 33: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

Beweise, dass [b] Spektra steigen, [d] fallen (zwischen 500 Hz und 4000 Hz?)

Page 34: Analyse von Spektra 2 Jonathan Harrington 1. Wiederholung: Spektra in R einlesen 2. Einige grundlegende Funktionen 3. Zugriff auf Spektralwerte 4. Spektrale-Abbildungen

plot(p5[,500:4000], plos.l, ylab="Intensitaet (dB)", xlab="Frequenz (Hz)")

plot(p5[,500:4000], plos.l, fun="mean", power=T, xlab="Frequenz (Hz)")

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB)

Frequenz (Hz)

Inte

nsita

et (

dB) b

d

500 2000 3500

-20

020

4060

Frequenz (Hz)Frequenz (Hz)

bd

500 2000 3500

2030

40

par(mfrow=c(1,2))