21
Formant-Analysen von Vokalen Jonathan Harrington Ellipse-Darstellung von Vokalformanten Ausreißer identifizieren Vokal-Targets setzen Literatur: http://www.phonetik.uni-muenchen.de/~jmh/ research/emupapers/pasc.pdf Kap. 3 (S. 74-123)

Formant-Analysen von Vokalen

  • Upload
    manny

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

Formant-Analysen von Vokalen. Jonathan Harrington. Ellipse-Darstellung von Vokalformanten. Ausreißer identifizieren. Vokal-Targets setzen. Literatur: http://www.phonetik.uni-muenchen.de/~jmh/research/emupapers/pasc.pdf Kap. 3 (S. 74-123). 1. Ellipse-Abbildungen. vowlax Segmentliste - PowerPoint PPT Presentation

Citation preview

Page 1: Formant-Analysen von Vokalen

Formant-Analysen von Vokalen

Jonathan Harrington

Ellipse-Darstellung von Vokalformanten

Ausreißer identifizieren

Vokal-Targets setzen

Literatur: http://www.phonetik.uni-muenchen.de/~jmh/research/emupapers/pasc.pdf

Kap. 3 (S. 74-123)

Page 2: Formant-Analysen von Vokalen

vowlax Segmentlistevowlax.fdat Trackdatei F1-F4vowlax.rms Trackdatei dB-RMSvowlax.l Etikettierungen "E" "a" "I" "O"vowlax.spkr Sprecher-Etikettierungen "67" "68"

mid =

Formanten (F1-F4) zum zeitlichen Mittelpunkt

dcut(vowlax.fdat, .5, prop=T)

Nur F1 und F2 mid = mid[,1:2]

1. Ellipse-Abbildungen

Page 3: Formant-Analysen von Vokalen

1. Ellipse-Abbildungen

EEE

EE E

EE

EE

EE

EE

E

E

EE

EE

E

EEE

EE

EEEE

E

E

EE

EE

EE

E

E

Ea

a

a

a

aa

a

aa a

a

aa a

a

aa

a

aa

aa

a

aa

a

a

a

a

a

aaa

a

aa

a

a

a

a

aa

a

a

a

a

aaa

a

a

a

a

aa

a

a

aa

a

a

a

a

I

II

I

III

I II

III

III

II

III

I

II

I

I

II I

I II

II

II II

II

II

III

II II I

III III

I

III

I

I IIII

I

I

II

I

I

II

II

II I

I

I

II

II

OO

O OO

O

OOO

O

OO

OO OO

3000 2500 2000 1500 1000

1000

800

600

400

F2

F1

eplot(mid[temp,], vowlax.l[temp], dopoints=T, form=T)

temp =

Logischer Vektor um Sprecher “67” zu identifizieren

vowlax.spkr==“67”

Ellipsen Sprecher 67 Sprecherin 68

E EEEE

EE

EE

EEEE

EE

E

E

E

E

E

EE

EEE

EE

E

E

E

EEE EE

EE

EE

E

E

aa

a

a

a

aaa

a

a

aa

a

a

aa

a

a

aa

a a

aa a

a

a

a

a aa

a

a

a

a

aa

a

aa aa

a

a

a aa

a

a

a

a

a

a

a

a

a

a

aaaaa a

II

I

I

II

II

I

III

I

II I II

I

II I

II

I

I I

II

I

I

II

I

I

I

I

II

I

II

II

I

I

II

II

I

II

I

I

III

I

II

I

I

I

III

I

I

II

I

I

II

I

I

I

II

I

I

I

II

O

O

O

O OO

OOO

OO

O

OOO O

2000 1500 1000

80

07

00

60

05

00

40

03

00

F2

F1

Mit !temp statt temp

vowlax Segmentlistevowlax.fdat Trackdatei F1-F4vowlax.l Etikettierungen "E" "a" "I" "O"vowlax.spkr Sprecher-Etikettierungen "67" "68"

mid = dcut(vowlax.fdat, .5, prop=T)

mid = mid[,1:2]

Page 4: Formant-Analysen von Vokalen

Mehrere Abbildungen gleichzeitig

par(mfrow=c(1,2))

Eine Reihe, zwei Spalten

eplot(mid[temp,], vowlax.l[temp], dopoints=T, form=T)

eplot(mid[!temp,], vowlax.l[!temp], dopoints=T, form=T)

par(mfrow=c(1,1))

wieder auf eine Reihe x eine Spalte setzen

Page 5: Formant-Analysen von Vokalen

help(eplot)

Eine Ellipse für alle Daten Eine Ellipse pro Kategorie

eplot(mid[temp,], vowlax.l[temp], centroid=T)

args(eplot)

eplot(mid[temp,]) eplot(mid[temp,], vowlax.l[temp])

Mit Mittelpunkt-Beschriftung

dopoints: eine entsprechende Etikettierung pro Wert

Achsen drehen (nur für F1 x F2 Abbildungen)

eplot(mid[temp,], vowlax.l[temp], dopoints=T)

eplot(mid[temp,], vowlax.l[temp], centroid=T, form=T)

Info zu eplot()

Page 6: Formant-Analysen von Vokalen

eplot(mid[temp,], vowlax.l[temp], centroid=T, doellipse=F)

Keine Ellipsen

Farben variieren

eplot(mid[temp,], vowlax.l[temp], centroid=T, col=F, line=T)

eplot(mid[temp,1:2], vowlax.l[temp], centroid=T, col=c("pink", "red", "blue", "green"))

Keine Farben und andere Linien, größere Liniendichte

Page 7: Formant-Analysen von Vokalen

Achsen Beschriftung

eplot(mid[temp,], vowlax.l[temp], form=T, main="Vokale", xlab="F2 (Hz)", ylab="F1 (Hz)")

Bereiche setzen

x = c(500, 3000)

y= c(0, 1000)

eplot(mid[temp,], vowlax.l[temp],form=T, xlim=x, ylim=y)

Page 8: Formant-Analysen von Vokalen

2. Ausreißer identifizierenvowlax Segmentlistevowlax.fdat Trackdatei F1-F4vowlax.l Etikettierungen "E" "a" "I" "O"vowlax.spkr Sprecher-Etikettierungen "67" "68"

F1 x F2 Abbildung zum Segment-Onset,"I" Vokale, Sprecher 67

III

III

II

I

II

I

II

I

II

II

III

III

I III I

III

II

III I

I

II

I

III

I

II

I

II

III I

I

I

I

II

II

III I

I

I I

II

II

I

I

I I I I

I

I

I

II

200 300 400

050

015

00

F1-Onset

F2-

Ons

et

Page 9: Formant-Analysen von Vokalen

on =

B. Matrix, F1-F2 zum Segment-Onset der "I" Vokale vom Sprecher 67

dcut(vowlax.fdat[temp,1:2], 0, prop=T)

A. Logischer Vektor um die "I" Vokale vom Sprecher 67 zu identifizierentemp = vowlax.spkr=="67" & vowlax.l == "I"

vowlax Segmentlistevowlax.fdat Trackdatei F1-F4vowlax.l Etikettierungen "E" "a" "I" "O"vowlax.spkr Sprecher-Etikettierungen "67" "68"

C. Labels die dazu passenlabs = vowlax.l[temp]

Oderlabs = rep("I", sum(temp))

D. Eine dazu passende Segmentliste

seg = vowlax[temp,]

segsegment list from database: kielread06 query was: Kanonic=a | E | I | O labels start end utts4 I 1670.940 1710.690 K67MR0015 I 2093.000 2144.190 K67MR0017 I 538.687 595.187 K67MR003...

Page 10: Formant-Analysen von Vokalen

eplot(on, labs, dopoints=T, xlab="F1-Onset", ylab="F2-Onset")

E. Abbildung (Achsen nicht drehen)

F. Ausreißer identifizieren

Logischer Vektor wenn F2 dieser "I" Vokale weniger als zB 100 Hz ist

temp = I

II

III

II

I

II

I

II

I

II

II

III

III

I III I

III

II

III I

I

II

I

III

I

II

I

II

III I

I

I

I

II

II

III I

I

I I

II

II

I

I

I I I I

I

I

I

II

200 300 400

050

015

00

F1-Onset

F2-

Ons

et on[,2] < 100

on Matrix. F1, F2 zum Segment-Onset

labs Vektor von "I" Labels

seg Dazu passende Segmentliste

Page 11: Formant-Analysen von Vokalen

eplot(on[!temp,], labs[!temp], dopoints=T, xlab="F1-Onset", ylab="F2-Onset")

temp = on[,2] < 100

G. Kann man diesen Befehl modifizieren, um den Ausreißer zu entfernen?

I

II

I

I

I

I

I

I

II

I

II

I

I

I

I

I

II

I

II

I

I II

II

I

II

II

III I

I

II

I

I

I

I

I

I

I

I

I

I

III

I

I

I

I

I

I

II

II

I I

I

II

I

I

II

I

I

II

II

I

I

I

I

200 250 300 350 400 450

1200

1600

2000

F1-Onset

F2-

Ons

et

eplot(on, labs, dopoints=T, xlab="F1-Onset", ylab="F2-Onset")

Page 12: Formant-Analysen von Vokalen

H. Der entsprechende Segment (also die Segmente, für die F2 weniger als 100 Hz ist)

segment list from database: kielread06 query was: Kanonic=a | E | I | O labels start end utts194 I 911.563 964.625 K67MR096

seg[temp,]

Alternative Lösung: der Segment wird identifiziert, um den Formant-Fehler in EMU zu korrigieren.

temp = on[,2] < 100

on Matrix. F1, F2 zum Segment-Onset

labs Vektor von "I" Labels

seg Dazu passende Segmentliste

Page 13: Formant-Analysen von Vokalen

Formantfehler in EMU korrigieren

Page 14: Formant-Analysen von Vokalen

I. (Nach der Korrektur) Formanten-Trackdatei aus segform = emu.track(seg, "fm")

J. Neue F1 und F2 zum Segment-Onset

on2 = dcut(form[,1:2], 0, prop=T)

on Matrix. F1, F2 zum Segment-Onset

labs Vektor von "I" Labels

seg Dazu passende Segmentliste

K. Ellipse-Abbildungeplot(on2, labs, dopoints=T, xlab="F1-Onset", ylab="F2-Onset")

I

II

I

I

I

I

I

I

II

I

II

I

I

II

I

II

I

II

I

I II

I I

I

II

II

III I

I

II

I

I

I

I

I

I

I

I

I

I

IIII

I

I

I

I

I

II

II

I I

I

II

II

II

I

I

II

II

II

I

I

I

200 300 400

1200

1600

2000

F1-Onset

F2-

Ons

et

Page 15: Formant-Analysen von Vokalen

3. Vokalzielposition setzen

wird oft zum 50% Zeitpunkt genommen, da hier der Vokal am wenigsten vom Kontext beeinflusst wird.

Manchmal auch für offene und halb-offene Vokale: der Zeitpunkt, zu dem ein F1-Maximum erreicht wird (weil hier im Gegensatz zu Konsonanten der Vokaltrakt maximal offen ist).

Page 16: Formant-Analysen von Vokalen

vowlax Segmentlistevowlax.fdat Trackdatei F1-F4vowlax.l Etikettierungen "E" "a" "I" "O"vowlax.spkr Sprecher-Etikettierungen "67" "68"

Abbildung F1 vom ersten Segment von vowlax als Funktion der Zeit:

plot(vowlax.fdat[1,1])

v = locator(1)Linke Maustaste klicken, um eineVertikale Linie zu diesem Zeitpunkt zu überlagernabline(v=v)Der ms-Wert der Liniev$x

860 880 900 920 940

400

450

500

550

times

data

[, k

]

Page 17: Formant-Analysen von Vokalen

Die F1-Werte vom ersten Segment

w = vowlax.fdat[1,1]$data

T1857.5 372862.5 412867.5 467872.5 506877.5 532882.5 547887.5 556892.5 561897.5 562902.5 556907.5 550912.5 538917.5 525922.5 521927.5 517932.5 504937.5 494942.5 492

Die Zeiten, zu denen diese Werte vorkommen.

zeit = tracktimes(w)zeit

Logischer Vektor: T wenn w ein Maximum erreicht

temp =

Die entsprechende Zeit dieses Maximums

zeit[temp]

w

w == max(w)

[1] 897.5

Page 18: Formant-Analysen von Vokalen

In eine Funktion packen:

mzeit <- function(werte){zeit = tracktimes(werte)temp = werte == max(werte)# Sollte es 2 Maxima geben, nimm den erstenzeit[temp][1]}

mzeit(w)

f1zeit = by(vowlax.fdat[,1], mzeit, simplify=T)

Die mzeit() Funktion auf die Trackdatei andwenden:

Der Zeitpunkt, zu dem zuerst w ein Maximum erreicht

Page 19: Formant-Analysen von Vokalen

Überprüfen für die ersten 10 Segmente

for(j in 1:10){plot(vowlax.fdat[j,1])abline(v=f1zeit[j])# Linke Maustaste klickenlocator(1)}

Vielleicht modifizieren, sodass der F1-Maximum nur im zeitlich mittleren 30% des Vokals vorkommt:

f1zeit = by(mittel30, mzeit, simplify=T)

mittel30 = dcut(vowlax.fdat[,1], .35, .65, prop=T)

Page 20: Formant-Analysen von Vokalen

Die Zeiten können exportiert werden, um in Emulabel eingelesen zu werden.

makelab(f1zeit, utt(vowlax), pfad)

pfad = "ein Verzeichnis"

Ein Vezeichnis definieren, zu dem die Etikettierungen exportiert werden sollen

Vektor von Zeiten

Parallel Vektor von Äußerungsnamen

Label-Dateien erzeugen

Page 21: Formant-Analysen von Vokalen

Template-Datei modifizieren, neue Ebene definieren (zB Target), damit die Zeiten der Zielpositionen abgebildet werden können.