• Keine Ergebnisse gefunden

Formant-Analysen von Vokalen (1)

N/A
N/A
Protected

Academic year: 2021

Aktie "Formant-Analysen von Vokalen (1)"

Copied!
28
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Formant-Analysen von Vokalen (1)

Jonathan Harrington

Ellipse-Darstellung ungespannter Vokale Ausreißer identifizieren

Sprecher-Normalisierung

Literatur: siehe C Vokale der Seminar EMU-R Webseite.

(2)

Die Sprechdaten

Ungespante [ɪ   a] Vokale Sprecher 67 (M) und Sprecherin 68 (W)

Standard-Norddeutsche Sprecher, Vokale aus 100 gelesenen Sätzen.

vowlax Segmentliste

vowlax.fdat Trackdatei F1-F4

vowlax.l Etikettierungen "E" "a" "I" "O"

vowlax.spkr Sprecher-Etikettierungen "67" "68"

data(package="emu")

(3)

vowlax Segmentliste vowlax.fdat Trackdatei F1-F4

vowlax.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]

(4)

1. Ellipse-Abbildungen

EEE E EE EE

EE EE

EE

E E E E E

E

E EE

E E E

E EE E

E E EE

E E

E E

E E

E a

a

a a a a

a a a a a

a a a a a

a a

aa

a a

a

a a

a a a

a

a

aa a a

a a

a a

a a

a a a

a a a

aaa a

a a

a a a a a

a a a a a

a I

I I

I I I

I

I I

I II I I II

I I IIII I I

I I

I I I

I I I

I I

I I I

I I

I

I I

III

I I I

I I

II II I I

I I I

I I I II I I

I

I I I

I I

I I

I I

I II I

I I I I I

OO

O O

OO O O

O O

OO OO OO

3000 2500 2000 1500 1000

1000800600400

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 E EE E E E

E EEEEE

E E E

E E E

E

EE E E E E

E E E E

EE E E

EE E E E

E

E

a aa a

a aaa a

a a a a

a aa a

a aa

a a a aa

a a a

aa a a

a a

a a a a

aa aa a

a aa a

a a

a a a

a a

a a a

a a a aaa

I I I

I I I

I I I

I I I

I

I I I I

I I I II

I I I

I I

I I I

I II 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

II I I

I

I I

I

I I I

I I

I I I I I

I I I

O O O

OO O OOO O

O

O OO OO

2000 1500 1000

800700600500400300

F1

Mit !temp statt temp

vowlax Segmentliste

vowlax.fdat Trackdatei F1-F4

vowlax.l Etikettierungen "E" "a" "I" "O"

vowlax.spkr Sprecher-Etikettierungen "67" "68"

mid = dcut(vowlax.fdat, .5, prop=T) mid = mid[,1:2]

(5)

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

(6)

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

(7)

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

Farben variieren

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

col=c("pink", "red", "blue", "green")) Keine Farben

Linientyp

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

(8)

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)

(9)

2. Ausreißer identifizieren

EEE E EE EE

EE EE E E

E E E E E

E

E EE

E E E

E EE E

E E E

E E E

E E

E E

E

a

a

a a a a

a a a a a

a a a a

a a a

aa

a a

a

a a

a a a

a

a

aa a a

a a

a a

a a

a a a

a a a

aaa a

a a

a a a a a

a a a a a

a I

I I

I I I

I

I I

I II

I I II

I I IIII I I

I I

I I I

I I I

I I

I II I I I

I I

I II

I I I

I I

II II I I

I I I

I I I III

I I

I I I

I I

I I

I I

I I I I

I

I I

I I

OO

O O

O O O O

O O

OO OO OO

3000 2500 2000 1500 1000

1000800600400

F2

F1

Vokale des weiblichen Sprechers

Formanten zum zeitlichen Mittelpunkt

Logischer Vektor: F1 ist mehr als 800 und der Vokal ist “E” und die Sprecherin ist “68”

temp = mid[,1] > 800 & vowlax.l == "E" & vowlax.spkr == "68"

Äußerung identifizieren:

Ein Spektrogramm dieses Vokales in Emulabel darstellen.

vowlax[temp,] oder utt(vowlax[temp,])

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

vowlax Segmentliste

vowlax.fdat Trackdatei F1-F4

vowlax.l Etikettierungen "E" "a" "I" "O"

vowlax.spkr Sprecher-Etikettierungen "67" "68"

(10)

3. Sprechernormalisierung

Dies führt zu Vokalüberlappung. zB die Formanten eines männlichen [a] haben oft denselben Wert wie diejenigen eines [o]

Vokals von einem Kind.

Frauen haben kürzere Vokaltrakte, daher eine Erhöhung der Formanten für den selben

phonetischen Vokal. Bei Kindern ist der Vokaltrakt noch kürzer und daher sind die Formanten noch höher.

Peterson & Barney (1952): Vokale von 76 Männern, Frauen, und Kindern.

(11)

EEEE EEEE EEEEEEEE E E E E

EE EE EEEE

EE EE E E EEE E E

E E

a aa a

aaaa a

a aa

a a aa a

a aa aa aaa

a a a a aa

aa a aaaa

aaaa a aaa aa aa

a a

a aa a aa aaaaa

I I I

I I

II II I I I I

I I II I

I I I II I I IIII

I I

II I

I II I I II II I

I I

I I II I I I I

I I I I

I

I I II

III I I

II I

I II

I I

I I III I

I I I

O O O OOO

OOO OO

O OOOO

2500 1500

1000600400

F2

F1

EEE E EE EE EEEE

EE E

EE EEE

E EEEE E

EEE EE

E EE E E EE E

E

E a

a a a a a

a a a a aa a a

a a a

a aa

a a a a a

a a a a

a

aaa a

a a

a a

a a

a a a

a a a

aaa a

a a

a a a a a

a a a a a

a

I I I

I I

I I

I I

II I I I

II I II III I

I I

I I I I I I II I

I I I I I I I II III II

I I

II II I I

I I I

I I I III

I I

I I I

I

I I I

I I

I II I I I I I

I OO

O O OOO OO O

OOO OOO

2500 1500

1000600400

F2

F1

Sprecher 67 Sprecher 68

E

a I

O

2500 2000 1500 1000

900800700600500400300

F2

F1

E

a I

O

2500 2000 1500 1000

900800700600500400300

F2

F1

(12)

Vokalnormalisierung

wie wird derselbe phonetische Vokal trotz dieser sprecherbedingten Unterschiede wahrgenommen?

Wie können sprecherbedingte Merkmale im akustischen Signal entfernt werden?

(13)

intrinsisch extrinsisch

Die Normalisierung eines Vokals braucht eine

Stichprobe von Vokalen desselben Sprechers (zB [ a u])

Die Trennung phonetischer und sprecherbedingter Eigenschaften

Wird auf einzelne

Vokale durchgeführt, ohne die anderen Vokale desselben Sprechers zu

berücksichtigen

Normalisierung

(14)

Die extrinsische Normalisierung

Joos (1948)

Die Vokale eines Sprechers werden im Bezug zu seinem/ihrem [i u a] wahrgenommen. Daher ist die

Entfernung von zB [] zu den Eckvokalen ca. dieselbe für verschiedene Sprecher.

Dagegen Verbrugge et al (1976, JASA). Hörer identifizieren Vokale genau, auch wenn sie den Sprecher zum ersten Mal hören.

Synthese von ‘Please say the word bVt’, in dem F1 variiert wurde.

Je höher F1, umso mehr verschiebt sich die Wahrnehmung von ‘bet’ nach ‘bit’

Ladefoged & Broadbent (1957)

(15)

Extrinsische Normalisierung (Lobanov, 1971)

Normalisierte Formantwerte = (Formantwerte – m)/s m und s sind der Durchschnitt und die

Standardabweichung eines Formanten (zB F1) eines Sprechers

F1 F1-m (F1-m)/s

220 -214 -1.11

550 116 0.60

300 -134 -0.69

700 266 1.38

400 -34 -0.18

m= 434 Hz, s = 193.1 Hz (Standard-Normalisierung)

(16)

f = c(220, 550, 300, 700, 400)

R Befehl für (f-m)/s (f - mean(f))/sd(f)

In eine Funktion packen – damit sie auf beliebiege Formant-Daten angewendet werden kann…

(17)

Funktionen schreiben

probe <- function(x, y) {

}

x + y

# summiert x und y

probe(20, 30)

probe <- function(x=20, y=30) {

}

x + y

# summiert x und y Mit default

probe()

(18)

Funktionen schreiben

Das Ergebnis einer Funktion ist die letzte Zeile ohne = probe <- function(x=20, y=30)

{

}

etwas = x + y

# summiert x und y

probe() etwas

(19)

f = c(220, 550, 300, 700, 400)

R Befehl für (f-m)/s

In eine Funktion snorm(f) packen – damit sie auf beliebiege Formant-Daten angewendet werden kann…

(f - mean(f))/sd(f)

snorm <- function(f) {

(f - mean(f))/sd(f) }

(20)

mat = cbind(c(10, 20, 30), c(5, 8, 8)) mat

[,1] [,2]

[1,] 10 5 [2,] 20 8 [3,] 30 8

Durchschnitt Spalte 1:

Durchschnitt Spalte 2:

Durchschnitt beider Spalten gleichzeitig:

apply(mat, 2, mean) [1] 20 7 Bedeutung von

apply(mat, 1, mean) apply(mat, 2, sd) Durchschnitt der

Reihenwerte Standardabweichung der

Spaltenwerte

Wie kann ich unsere snorm() Funktion auf beide Spalten von mat anwenden?

apply(mat, 2,snorm)

mean(mat[,1]) mean(mat[,2])

(21)

Normalisierte F1 und F2 Werte zum zeitlichen Mittelpunkt, Sprecher 67?

temp =

fnorm.67 = apply(mid[temp,1:2], 2, snorm)

Normalisierte Werte Sprecher 68

fnorm.68 = apply(mid[!temp,1:2], 2, snorm)

vowlax Segmentliste

vowlax.fdat Trackdatei F1-F4

vowlax.l Etikettierungen "E" "a" "I" "O"

vowlax.spkr Sprecher-Etikettierungen "67" "68"

mid = dcut(vowlax.fdat, .5, prop=T) mid = mid[,1:2]

Logischer Vektor

Normalisierte Werte, Sprecher 67 vowlax.spkr=="67"

(22)

Sprecher 67 (links), Sprecherin 68 (rechts) normalisierte F1 x F2

xlim = ylim = c(-2.5, 2.5) par(mfrow=c(1,2))

eplot(fnorm.67, vowlax.l[temp], dopoints=T, form=T, xlim=xlim, ylim=ylim) eplot(fnorm.68, vowlax.l[!temp], dopoints=T, form=T, xlim=xlim, ylim=ylim)

E EEEE E E

E EEEEE

E E E

E E E

E

EE E E E E E

E E E

EE E EEE E E E

E

E a aa

a a

aaa a

a a a a

a aa a

a aa

a a a aa

a a a

aa a a

a a

a aa a

aa aa a

a aaa

a a a

a a

a a

a a a

a a a aaa

I I I

I I I

I I I

I I I

I

I I I I

I I I II

I I I I I

I I I

I II 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

II I I

I

I I

I

I I I

I I

I I I I I

I I I

O O O

OOO OOO O

O

O OO OO

2 1 0 -1 -2

210-1-2

F1 EEE

E EE EE

EE EE EE

E E EE EE

E EEE E E

EEE EE

E EE

E E EE E

E

E a

a a

a aa

a a a a a

a a a a a

a a

aa a a

a a a

a a a

a a

aa a a

a a

a a

a a

aa a

a a a

aaa a

a a

a a a a a

a a a a a

a I

I I

I

I II

I I

II I I I II I

I III I I I

I I

I I I

I I I

I I I I I

I I

I

I I

III

I II

I I

II II I I

I I I

I I I III

I I

I I I

I I

I I

I I

I II I I I I I I

OO O O

OO OOO O

OO O OOO

2 1 0 -1 -2

210-1-2

F1

(23)

Extrinsische Normalisierung (Nearey, 1978)

Normalisierte Formantwerte = Log. (Formantwerte) – k

k ist ein sprechabhängiger Konstant

(24)

Normalisierung laut Nearey

1. Sprecherbedingter konstant, k, berechnen (a) F1 und F2 in Logarithmen umwandeln

(b) Durchschnitt von log. F1 berechnen

(c) Durchschnitt von Log F2 berechnen k ist der Durchschnitt von (a) und (b)

f1 = c(220, 550, 300, 700, 400)

f2 = c(2000, 1800, 1900, 1500, 600)

logf1 = logf2 =

mlogf1 =

mlogf2 =

log(f1) log(f2)

mean(logf1)

mean(logf2)

(25)

Normalisierter F1 ist der Logarithmus davon minus k

normf1 =

Ebenfalls für den normalisierten F2 f1 = c(220, 550, 300, 700, 400)

f2 = c(2000, 1800, 1900, 1500, 600)

log(f1) - k

normf2 = log(f2) - k

(26)

Funktion schreiben, nearey(x) um Nearey-

Normalisierung auf eine 2-spaltige Matrix, x, (von F1 und F2 Werten) anzuwenden.

> form = cbind(f1, f2)

> form f1 f2

[1,] 220 2000 [2,] 550 1800 [3,] 300 1900 [4,] 700 1500 [5,] 400 600

> nearey(form)

f1 f2

[1,] -1.23698013 0.9702948 [2,] -0.32068940 0.8649343 [3,] -0.92682520 0.9190015 [4,] -0.07952734 0.6826127 [5,] -0.63914313 -0.2336780

(27)

nearey <- function(x)

# x ist eine Matrix {

# (a) Log-Werte der Matrix logmat =

# Vektor der Durchschnitte deren Spaltenwerte logmat.m =

# (b) Sprecherabhängiger konstant k =

# (a) – (b)

log(x)

apply(logmat, 2, mean)

mean(logmat.m)

logmat – k }

(28)

Abbildung F1 x F2, Nearey-normalisierte Daten, Sprecher 67 (links), Sprecherin 68 (rechts)

ylim = c(-1.5, 0.2) xlim = c(-.2, 1.2)

temp = vowlax.spkr=="67"

n67= nearey(vowlax.fdat.5[temp,1:2]) n68 = nearey(vowlax.fdat.5[!temp,1:2])

eplot(n67, vowlax.l[temp], dopoints=T, form=T, xlim=xlim, ylim=ylim, main="67") eplot(n68, vowlax.l[!temp], dopoints=T, form=T, xlim=xlim, ylim=ylim, main="68")

EEEEEE EE E EE EE

EEE E E E E EE EE E E

E E E E

EE E E EEE E E E

E a aa

a aaaa a

a aa

a a aa a

a aa a a a aa

a a a aa a aa

a a

aa aaaaa a

a aaaa

aa a a

a aa a a

aa a aaa

I I I

I I I I I

I I I I

I I I II

I I I II

I I I I I

I I I

I II I

I I

I II 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

II I I

I

I I

I I

I I

I I

I III I

I I I

O O O

OOO OOO O O

O OO OO

1.2 1 0.8 0.4 0

0-0.5-1-1.5

67

F1 EEE

E EE EE

EE EE EE

E E EE E

E

E EEEE E

EEE E

E E E

E E E

E E

E E

E a

a

a a

a a a a a a aa a a

a a a

a

aaa a a a a

a a a a

a

a aaa

a a

a a a a

a a

a a

a a aaa

a a a

a a a a a a

a a a a

a I

I I

I I I

I

I I

I III I I

I I

I III

I I I

I I

I I II I

I I I

I II I

I I

I I III

I I II I

I I I II I

I I I

I I III II

I

I I

I

I I

I I I

I I

I I I

I I

I I I

OO

O O

OO OO O O

OO OO OO

1.2 1 0.8 0.4 0

0-0.5-1-1.5

68

F1

Abbildung

Abbildung F1 x F2, Nearey-normalisierte Daten,  Sprecher 67 (links), Sprecherin 68 (rechts)

Referenzen

ÄHNLICHE DOKUMENTE

Achsen drehen (nur für F1 x F2 Abbildungen) eplot(mid[temp,], vowlax.l[temp], dopoints=T). eplot(mid[temp,], vowlax.l[temp],

form=T dreht die Achsen, damit F2 auf der x-Achse, F1 auf der y-Achse erscheinen, und sodass die Werte von links nach rechts (F2) und von unten nach oben (F1) fallen1.

form=T dreht die Achsen, damit F2 auf der x-Achse, F1 auf der y-Achse erscheinen, und sodass die Werte von links nach rechts (F2) und von unten nach oben (F1) fallen.

Dort werden bestimmte Patienten mit einem lokalen Kolorektalkarzinom seit 2006 nach einer neoadjuvanten Therapie nicht mehr unbedingt operiert, sofern nach dieser bereits

(Wäre das nicht bereits in der Vergangenheit so praktiziert worden, sprächen wir wohl nicht bloss über 80 Millionen Franken, die dadurch eingespart werden können.) Nein, die

© www.drachenstuebchen.blogspot.de // kreativ lernen - Jasmin Klenke zur

Wenn wir die beide Werte haben, gibt es ein Standardmethode (Determinanten) um die Nullstellen zu bestimmen und können daraus Frequenz und Bandbreite der Resonanz berechnet werden..

In der Erzeugung eines Vokals ist die Zunge meistens gewölbt – die Stelle der größten Verengung nennt man manchmal die4. höchste Stelle der Zunge (=highest point of