Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Formant-Analysen von Vokalen Jonathan Harrington Ellipse-Darstellung von Vokalformanten Ausreißer identifizieren Vokal-Targets setzen Literatur:

Ähnliche Präsentationen


Präsentation zum Thema: "Formant-Analysen von Vokalen Jonathan Harrington Ellipse-Darstellung von Vokalformanten Ausreißer identifizieren Vokal-Targets setzen Literatur:"—  Präsentation transkript:

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

2 vowlaxSegmentliste vowlax.fdatTrackdatei F1-F4 vowlax.rmsTrackdatei dB-RMS vowlax.lEtikettierungen"E" "a" "I" "O" vowlax.spkrSprecher-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

3 eplot(mid[temp,], vowlax.l[temp], dopoints=T, form=T) temp = Logischer Vektor um Sprecher 67 zu identifizieren vowlax.spkr==67 Ellipsen Sprecher 67Sprecherin 68 O O O O O O O O O F2 F1 Mit !temp statt temp vowlaxSegmentliste vowlax.fdatTrackdatei F1-F4 vowlax.lEtikettierungen"E" "a" "I" "O" vowlax.spkrSprecher-Etikettierungen "67" "68" mid = dcut(vowlax.fdat,.5, prop=T) mid = mid[,1:2]

4 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

5 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()

6 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

7 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)

8 2. Ausreißer identifizieren vowlaxSegmentliste vowlax.fdatTrackdatei F1-F4 vowlax.lEtikettierungen"E" "a" "I" "O" vowlax.spkrSprecher-Etikettierungen "67" "68" F1 x F2 Abbildung zum Segment-Onset, "I" Vokale, Sprecher 67

9 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 identifizieren temp = vowlax.spkr=="67" & vowlax.l == "I" vowlaxSegmentliste vowlax.fdatTrackdatei F1-F4 vowlax.lEtikettierungen"E" "a" "I" "O" vowlax.spkrSprecher-Etikettierungen "67" "68" C. Labels die dazu passen labs = vowlax.l[temp] Oder labs = rep("I", sum(temp)) D. Eine dazu passende Segmentliste seg = vowlax[temp,] seg segment list from database: kielread06 query was: Kanonic=a | E | I | O labels start end utts 4 I K67MR001 5 I K67MR001 7 I K67MR003...

10 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 = on[,2] < 100 onMatrix. F1, F2 zum Segment-Onset labsVektor von "I" Labels seg Dazu passende Segmentliste

11 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? eplot(on, labs, dopoints=T, xlab="F1-Onset", ylab="F2-Onset")

12 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 utts 194 I K67MR096 seg[temp,] Alternative Lösung: der Segment wird identifiziert, um den Formant-Fehler in EMU zu korrigieren. temp =on[,2] < 100 onMatrix. F1, F2 zum Segment-Onset labsVektor von "I" Labels seg Dazu passende Segmentliste

13 Formantfehler in EMU korrigieren

14 I. (Nach der Korrektur) Formanten-Trackdatei aus seg form =emu.track(seg, "fm") J. Neue F1 und F2 zum Segment-Onset on2 =dcut(form[,1:2], 0, prop=T) onMatrix. F1, F2 zum Segment-Onset labsVektor von "I" Labels seg Dazu passende Segmentliste K. Ellipse-Abbildung eplot(on2, labs, dopoints=T, xlab="F1-Onset", ylab="F2-Onset")

15 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).

16 vowlaxSegmentliste vowlax.fdatTrackdatei F1-F4 vowlax.lEtikettierungen"E" "a" "I" "O" vowlax.spkrSprecher-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 eine Vertikale Linie zu diesem Zeitpunkt zu überlagern abline(v=v) Der ms-Wert der Linie v$x

17 Die F1-Werte vom ersten Segment w = vowlax.fdat[1,1]$data T 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

18 In eine Funktion packen: mzeit <- function(werte) { zeit = tracktimes(werte) temp = werte == max(werte) # Sollte es 2 Maxima geben, nimm den ersten zeit[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

19 Überprüfen für die ersten 10 Segmente for(j in 1:10){ plot(vowlax.fdat[j,1]) abline(v=f1zeit[j]) # Linke Maustaste klicken locator(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)

20 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

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


Herunterladen ppt "Formant-Analysen von Vokalen Jonathan Harrington Ellipse-Darstellung von Vokalformanten Ausreißer identifizieren Vokal-Targets setzen Literatur:"

Ähnliche Präsentationen


Google-Anzeigen