1 / 21

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). 1. Ellipse-Abbildungen. vowlax Segmentliste

manny
Download Presentation

Formant-Analysen von Vokalen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 1. Ellipse-Abbildungen vowlax Segmentliste vowlax.fdat Trackdatei F1-F4 vowlax.rms Trackdatei dB-RMS vowlax.lEtikettierungen "E" "a" "I" "O" vowlax.spkr Sprecher-Etikettierungen "67" "68" Formanten (F1-F4) zum zeitlichen Mittelpunkt mid = dcut(vowlax.fdat, .5, prop=T) mid = mid[,1:2] Nur F1 und F2

  3. 1. Ellipse-Abbildungen I I I I I I I E I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I E I I I I I I I I I I I I I I I O I I I I I I I E a I E E E E E E E E a a O a E E E O a E E a E a E E E O E E E E E a E a O E E E E a E O E E E E a E a E a a a E a a a a O a a E a a E a a a a a a a a a a E a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a vowlax Segmentliste vowlax.fdat Trackdatei F1-F4 vowlax.l Etikettierungen "E" "a" "I" "O" vowlax.spkr Sprecher-Etikettierungen "67" "68" dcut(vowlax.fdat, .5, prop=T) mid = mid = mid[,1:2] Logischer Vektor um Sprecher “67” zu identifizieren vowlax.spkr==“67” temp = Ellipsen Sprecher 67 Sprecherin 68 eplot(mid[temp,], vowlax.l[temp], dopoints=T, form=T) Mit !temp statt temp 300 400 O 500 O O O F1 O O O O 600 O 700 800 2000 1500 1000 F2

  4. Mehrere Abbildungen gleichzeitig Eine Reihe, zwei Spalten par(mfrow=c(1,2)) eplot(mid[temp,], vowlax.l[temp], dopoints=T, form=T) eplot(mid[!temp,], vowlax.l[!temp], dopoints=T, form=T) wieder auf eine Reihe x eine Spalte setzen par(mfrow=c(1,1))

  5. Info zu eplot() args(eplot) help(eplot) Eine Ellipse für alle Daten Eine Ellipse pro Kategorie eplot(mid[temp,]) eplot(mid[temp,], vowlax.l[temp]) Mit Mittelpunkt-Beschriftung eplot(mid[temp,], vowlax.l[temp], centroid=T) dopoints: eine entsprechende Etikettierung pro Wert eplot(mid[temp,], vowlax.l[temp], dopoints=T) Achsen drehen (nur für F1 x F2 Abbildungen) eplot(mid[temp,], vowlax.l[temp], centroid=T, form=T)

  6. Keine Ellipsen eplot(mid[temp,], vowlax.l[temp], centroid=T, doellipse=F) Farben variieren Keine Farben und andere Linien, größere Liniendichte 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"))

  7. x = c(500, 3000) y= c(0, 1000) eplot(mid[temp,], vowlax.l[temp],form=T, xlim=x, ylim=y) Achsen Beschriftung eplot(mid[temp,], vowlax.l[temp], form=T, main="Vokale", xlab="F2 (Hz)", ylab="F1 (Hz)") Bereiche setzen

  8. 2. Ausreißer identifizieren vowlax Segmentliste vowlax.fdat Trackdatei F1-F4 vowlax.l Etikettierungen "E" "a" "I" "O" vowlax.spkr Sprecher-Etikettierungen "67" "68" F1 x F2 Abbildung zum Segment-Onset, "I" Vokale, Sprecher 67

  9. vowlax Segmentliste vowlax.fdat Trackdatei F1-F4 vowlax.l Etikettierungen "E" "a" "I" "O" vowlax.spkr Sprecher-Etikettierungen "67" "68" A. Logischer Vektor um die "I" Vokale vom Sprecher 67 zu identifizieren vowlax.spkr=="67" & vowlax.l == "I" temp = B. Matrix, F1-F2 zum Segment-Onset der "I" Vokale vom Sprecher 67 on = dcut(vowlax.fdat[temp,1:2], 0, prop=T) C. Labels die dazu passen Oder labs = labs= rep("I", sum(temp)) vowlax.l[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 1670.940 1710.690 K67MR001 5 I 2093.000 2144.190 K67MR001 7 I 538.687 595.187 K67MR003 ...

  10. on Matrix. F1, F2 zum Segment-Onset labs Vektor von "I" Labels seg Dazu passende Segmentliste E. Abbildung (Achsen nicht drehen) eplot(on, labs, dopoints=T, xlab="F1-Onset", ylab="F2-Onset") F. Ausreißer identifizieren Logischer Vektor wenn F2 dieser "I" Vokale weniger als zB 100 Hz ist on[,2] < 100 temp =

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

  12. on Matrix. F1, F2 zum Segment-Onset labs Vektor von "I" Labels seg Dazu passende Segmentliste temp = on[,2] < 100 Alternative Lösung: der Segment wird identifiziert, um den Formant-Fehler in EMU zu korrigieren. H. Der entsprechende Segment (also die Segmente, für die F2 weniger als 100 Hz ist) seg[temp,] segment list from database: kielread06 query was: Kanonic=a | E | I | O labels start end utts 194 I 911.563 964.625 K67MR096

  13. Formantfehler in EMU korrigieren

  14. on Matrix. F1, F2 zum Segment-Onset labs Vektor von "I" Labels seg Dazu passende Segmentliste 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) 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. vowlax Segmentliste vowlax.fdat Trackdatei F1-F4 vowlax.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 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 w Die Zeiten, zu denen diese Werte vorkommen. T1 857.5 372 862.5 412 867.5 467 872.5 506 877.5 532 882.5 547 887.5 556 892.5 561 897.5 562 902.5 556 907.5 550 912.5 538 917.5 525 922.5 521 927.5 517 932.5 504 937.5 494 942.5 492 zeit = tracktimes(w) zeit Logischer Vektor: T wenn w ein Maximum erreicht temp = w == max(w) Die entsprechende Zeit dieses Maximums zeit[temp] [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] } Der Zeitpunkt, zu dem zuerst w ein Maximum erreicht mzeit(w) Die mzeit() Funktion auf die Trackdatei andwenden: f1zeit = by(vowlax.fdat[,1], mzeit, simplify=T)

  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: mittel30 = dcut(vowlax.fdat[,1], .35, .65, prop=T) f1zeit = by(mittel30, mzeit, simplify=T)

  20. Die Zeiten können exportiert werden, um in Emulabel eingelesen zu werden. Ein Vezeichnis definieren, zu dem die Etikettierungen exportiert werden sollen pfad = "ein Verzeichnis" Label-Dateien erzeugen makelab(f1zeit, utt(vowlax), pfad) Parallel Vektor von Äußerungsnamen Vektor von Zeiten

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

More Related