#include <phon.h>
Collaboration diagram for phon:
Public Methods | |
phon (string newname, uint newdur, globalsT glob) | |
A constructor. More... | |
phon () | |
the empty Constructor. | |
void | setName (string newName) |
Set/change name of phon, defines type, manner and place of articulation of phone. More... | |
void | setPhonFeatures (PHON_FEATURES newPhonFeatures) |
Set/change phone features. More... | |
void | setSteadyStart (uint newSteadyStart) |
Set/change start of steady-state in framenumbers. More... | |
void | setSteadyEnd (uint newSteadyEnd) |
Set/change end of steady-state in framenumbers. More... | |
void | setBurstStart (uint newBurstStart) |
Set/change start of burst in framenumbers (stops only). More... | |
void | setAspStart (uint newAspStart) |
Set/change start of Aspiration in framenumbers (stops only). More... | |
void | setF0ValVec (vector<uint>& newF0ValVec) |
set/change f0 vals. More... | |
void | setF0TimeVec (vector<uint>& newF0TimeVec) |
set/change location of f0 vals. More... | |
void | setF0Vec (vector<uint>& newF0Vec, globalsT &kg) |
set/change f0-vals. More... | |
void | setAmpVec (vector<uint> newVec, globalsT &kg) |
set/change Amp-vals, changes bool ampDyn to true. More... | |
void | setF1Vec (vector<uint> newVec, globalsT &kg) |
set/change F1-vals, changes bool f1Dyn to true. More... | |
void | setF2Vec (vector<uint> newVec, globalsT &kg) |
set/change f2-vals, changes bool f2Dyn to true. More... | |
void | setF3Vec (vector<uint> newVec, globalsT &kg) |
set/change f3-vals, changes bool f3Dyn to true. More... | |
void | setF4Vec (vector<uint> newVec, globalsT &kg) |
set/change f4-vals, changes bool f4Dyn to true. More... | |
void | setF5Vec (vector<uint> newVec, globalsT &kg) |
set/change f5-vals, changes bool f5Dyn to true. More... | |
void | setF6Vec (vector<uint> newVec, globalsT &kg) |
set/change f6-vals, changes bool f6Dyn to true. More... | |
void | setB1Vec (vector<uint> newVec, globalsT &kg) |
set/change b1-vals, changes bool b1Dyn to true. More... | |
void | setB2Vec (vector<uint> newVec, globalsT &kg) |
set/change b2-vals, changes bool b2Dyn to true. More... | |
void | setB3Vec (vector<uint> newVec, globalsT &kg) |
set/change b3-vals, changes bool b3Dyn to true. More... | |
void | setB4Vec (vector<uint> newVec, globalsT &kg) |
set/change b4-vals, changes bool b4Dyn to true. More... | |
void | setB5Vec (vector<uint> newVec, globalsT &kg) |
set/change b5-vals, changes bool b5Dyn to true. More... | |
void | setB6Vec (vector<uint> newVec, globalsT &kg) |
set/change b6-vals, changes bool b6Dyn to true. More... | |
void | setA1Vec (vector<uint> newVec, globalsT &kg) |
set/change a1-vals, (iles&simmons-version only). More... | |
void | setA2Vec (vector<uint> newVec, globalsT &kg) |
set/change a2-vals, (iles&simmons-version only). More... | |
void | setA3Vec (vector<uint> newVec, globalsT &kg) |
set/change a3-vals, (iles&simmons-version only). More... | |
void | setA4Vec (vector<uint> newVec, globalsT &kg) |
set/change a4-vals, (iles&simmons-version only). More... | |
void | setA5Vec (vector<uint> newVec, globalsT &kg) |
set/change a5-vals, (iles&simmons-version only). More... | |
void | setA6Vec (vector<uint> newVec, globalsT &kg) |
set/change a6-vals, (iles&simmons-version only). More... | |
void | setB1pVec (vector<uint> newVec, globalsT &kg) |
set/change b1p-vals,. More... | |
void | setB2pVec (vector<uint> newVec, globalsT &kg) |
set/change b2p-vals, changes bool Dyn to true. More... | |
void | setB3pVec (vector<uint> newVec, globalsT &kg) |
set/change b3p-vals, changes bool Dyn to true. More... | |
void | setB4pVec (vector<uint> newVec, globalsT &kg) |
set/change b4p-vals, changes bool Dyn to true. More... | |
void | setB5pVec (vector<uint> newVec, globalsT &kg) |
set/change b5p-vals, changes bool Dyn to true. More... | |
void | setB6pVec (vector<uint> newVec, globalsT &kg) |
set/change b6p-vals, changes bool Dyn to true. More... | |
uint | MeanF0 () |
returns mean of f0 vals. More... | |
string | Name () |
returns name of phon (in Sampa). More... | |
PHON_TYPE | Type () |
returns type of phon (vowel or consonant). More... | |
PHON_MANNER | Manner () |
returns manner of phon (manner of articulation). More... | |
PHON_PLACE | Place () |
returns place of phon (place of articulation). More... | |
bool | Voiced () |
returns true if phone is fundamentally voiced. More... | |
bool | Diphtong () |
returns true if phone is diphtong. More... | |
void | initMannerPlaceType (string name) |
sets manner, place, type, formantQuadrant and voiced according to name. More... | |
uint | Dur () |
returns duration of phon in msec. More... | |
uint | FrameNum () |
returns number of frames of phon (klattSynth). More... | |
uint | DataFrameNum () |
returns original number of f0 vals (from mbrola-file). More... | |
PHON_FEATURES | PhonFeatures () |
returns struct PhonFeatures for the phone. More... | |
vector<uint> | F0ValVec () |
returns original f0 vals (from mbrola-file). More... | |
vector<uint> | F0TimeVec () |
returns original locations of f0 vals (from mbrola-file). More... | |
vector<uint> | AmpVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | F0Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | F1Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | F2Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | F3Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | F4Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | F5Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | F6Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B1Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B2Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B3Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B4Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B5Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B6Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A1Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A2Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A3Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A4Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A5Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A6Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B1PVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B2PVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B3PVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B4PVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B5PVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | B6PVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | AvVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | AhVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | OqVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | AturbVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | AfVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | AbVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | AvpVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | TlVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | FlVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | GainVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | AnvVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | FnzVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | BnzVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | FnpVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | BnpVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | SqVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | DiVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | Df1Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | Db1Vec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | FtpVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | BtpVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | FtzVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | BtzVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A2fVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A3fVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A4fVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A5fVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A6fVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A1vVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A2vVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A3vVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | A4vVec () |
returns parameter vector (length==frameNum). More... | |
vector<uint> | AtvVec () |
returns parameter vector (length==frameNum). More... | |
uint | SteadyStart () |
returns start of steady-state in framenumbers. More... | |
uint | SteadyEnd () |
returns end of steady-state in framenumbers. More... | |
uint | BurstStart () |
returns start of burst in framenumbers (stops only). More... | |
uint | AspStart () |
returns start of Aspiration in framenumbers (stops only). More... | |
void | printName (ostream &outFile) |
prints name of phon to outFile (debugging). More... | |
void | printSenSynFrames (uint start, ostream &outFile, globalsT glob) |
prints all parameters (frames) of the phone in sensyn-format. More... | |
void | printKlattFrames (ostream &outFile) |
prints KlattFrames of phone in simmons&iles format to outFile. More... | |
void | setSoundSource (globalsT &glob) |
models voice-source parameters. More... | |
void | setArticulationTractFilter (globalsT &glob) |
models ArticulationTractFilter parameters. More... | |
void | modelFeatures (uint sylMeanF0, globalsT &glob, phon *prevpP, phon *nextpP) |
models phone-features changing voice-source and/or ArticulationTractFilter parameters. More... | |
void | modelIntonation (globalsT &kg) |
models Intonation by filling the gaps in f0ValVec. More... | |
void | changeDur (uint newDur, globalsT glob) |
set/change duration of phon in msek. More... | |
void | changeAvrInt (int dBVal) |
add/subtract <dbVal> from ampVal. More... | |
void | changeMeanF0 (uint rate) |
change f0Vals by rate (100=no change). More... | |
void | smootheF0 (uint winsize) |
smoothing function: all f0Vals get centerFiltered around winsize. More... | |
void | changeF0Range (uint rate, uint meanF0) |
change Range of f0Contour compressing/expanding at <rate> in relation to <meanF0>. More... | |
void | interpolateF0Vec (uint start, uint end) |
interpolate f0Contour linear from start to end. More... | |
Private Attributes | |
string | name |
The name of the phone in Sampa. Possible phone-names are language dependend. | |
uint | dur |
duration of phon in msec. | |
uint | frameNum |
number of frames, should be dur/framesize. | |
uint | meanF0 |
The mean f0-Value. | |
PHON_TYPE | type |
vowel/consonant. | |
PHON_MANNER | manner |
long_vowel, short_vowel, nasal, stop, ... | |
PHON_PLACE | place |
bilabial, labial, labiodental, ... | |
PHON_FEATURES | phonFeatures |
spread, nasalized, laryngealized, ... | |
bool | voiced |
true if phone is normally voiced. | |
bool | diphtong |
true if phone is diphtong. | |
FORMANT_QUADRANT | formantQuadrant |
the quadrant for vowels in the vowel-chart. currently not used. | |
uint | origValNum |
the originale frameNumber from diphone-inventory. | |
uint | steadyStart |
time of start of steady state (in frameNums). | |
uint | steadyEnd |
time of end of steady state (in frameNums). | |
uint | burstStart |
stops: time of start of burst (in frameNums). | |
uint | aspStart |
stops: time of start of aspiration (in frameNums). | |
vector<uint> | f0ValVec |
intonation description. | |
vector<uint> | f0TimeVec |
intonation description, comes from mbrola-format. | |
vector<uint> | f0Vec |
each frame one f0-val. | |
vector<uint> | ampVec |
each frame one amplitude-val in dB, normalized to 60 dB. | |
vector<uint> | f1Vec |
cascade formant-parameters. | |
vector<uint> | f2Vec |
cascade formant-parameters. | |
vector<uint> | f3Vec |
cascade formant-parameters. | |
vector<uint> | f4Vec |
cascade formant-parameters. | |
vector<uint> | f5Vec |
cascade formant-parameters. | |
vector<uint> | f6Vec |
cascade formant-parameters. | |
vector<uint> | b1Vec |
cascade formant-parameters. | |
vector<uint> | b2Vec |
cascade formant-parameters. | |
vector<uint> | b3Vec |
cascade formant-parameters. | |
vector<uint> | b4Vec |
cascade formant-parameters. | |
vector<uint> | b5Vec |
cascade formant-parameters. | |
vector<uint> | b6Vec |
cascade formant-parameters. | |
vector<uint> | a1Vec |
parallel formant-parameters, amplitudes of formants. | |
vector<uint> | a2Vec |
parallel formant-parameters, amplitudes of formants. | |
vector<uint> | a3Vec |
parallel formant-parameters, amplitudes of formants. | |
vector<uint> | a4Vec |
parallel formant-parameters, amplitudes of formants. | |
vector<uint> | a5Vec |
parallel formant-parameters, amplitudes of formants. | |
vector<uint> | a6Vec |
parallel formant-parameters, amplitudes of formants. | |
vector<uint> | b1pVec |
parallel formant-parameters, bandwidths for parallel branch. | |
vector<uint> | b2pVec |
parallel formant-parameters, bandwidths for parallel branch. | |
vector<uint> | b3pVec |
parallel formant-parameters, bandwidths for parallel branch. | |
vector<uint> | b4pVec |
parallel formant-parameters, bandwidths for parallel branch. | |
vector<uint> | b5pVec |
parallel formant-parameters, bandwidths for parallel branch. | |
vector<uint> | b6pVec |
parallel formant-parameters, bandwidths for parallel branch. | |
vector<uint> | avVec |
voice-source parameters voiced amplitude of cascade branch (0-70). | |
vector<uint> | ahVec |
amp. of aspiration (0-70). | |
vector<uint> | aturbVec |
amp. of turbulence(0-80). | |
vector<uint> | oqVec |
open perc in glottal period. | |
vector<uint> | afVec |
amp. of frication, par. branch(0-80). | |
vector<uint> | abVec |
amp. of bypass frication, par. branch(0-80). | |
vector<uint> | avpVec |
amp. of voicing, par. branch(0-70). | |
vector<uint> | tlVec |
spectral tl in dB(0-24). | |
vector<uint> | flVec |
spectral skew(0-40). | |
vector<uint> | gainVec |
overall gain(0-80). | |
vector<uint> | anvVec |
nasal parameters amp. of nasal formant, parallel branch. | |
vector<uint> | fnzVec |
freq of nasal zero. | |
vector<uint> | bnzVec |
bw of nasal zero. | |
vector<uint> | fnpVec |
freq of nasal pole. | |
vector<uint> | bnpVec |
bw of nasal pole. | |
vector<uint> | sqVec |
speed quotient, glottal source parameter. | |
vector<uint> | diVec |
diplophonic double pulsing. | |
vector<uint> | df1Vec |
delta f1, for pharyngeal interactions. | |
vector<uint> | db1Vec |
delta b1, for pharyngeal interactions. | |
vector<uint> | ftpVec |
freq of tracheal pole. | |
vector<uint> | btpVec |
bw of tracheal pole. | |
vector<uint> | ftzVec |
freq of tracheal zero. | |
vector<uint> | btzVec |
bw of tracheal zero. | |
vector<uint> | a2fVec |
amplitude of 2. formant (parallel branch). | |
vector<uint> | a3fVec |
amplitude of 3. formant (parallel branch). | |
vector<uint> | a4fVec |
amplitude of 4. formant (parallel branch). | |
vector<uint> | a5fVec |
amplitude of 5. formant (parallel branch). | |
vector<uint> | a6fVec |
amplitude of 6. formant (parallel branch). | |
vector<uint> | a1vVec |
amplitude of 1. formant (parallel branch, voicing), not used. | |
vector<uint> | a2vVec |
amplitude of 2. formant (parallel branch, voicing), not used. | |
vector<uint> | a3vVec |
amplitude of 3. formant (parallel branch, voicing), not used. | |
vector<uint> | a4vVec |
amplitude of 4. formant (parallel branch, voicing), not used. | |
vector<uint> | atvVec |
amplitude of tracheal formant (parallel branch, voicing), not used. |
|
A constructor. creates a phon with name newname, duration newdur and all klattparameter-frames are initialized to klatt_global-defaults side-effects: frameNum, type, manner and place are defined 00352 { 00353 name = newname; 00354 initMannerPlaceType(name); 00355 dur = newdur; 00356 frameNum = (uint) dur/klatt_globals.ui; 00357 00358 steadyStart = 0; 00359 steadyEnd = frameNum; 00360 burstStart = frameNum; 00361 aspStart = frameNum; 00362 00363 for (uint i=0; i<frameNum; i++){ 00364 ampVec.push_back(60); 00365 f0Vec.push_back(klatt_globals.f0); 00366 f1Vec.push_back(klatt_globals.f1); 00367 f2Vec.push_back(klatt_globals.f2); 00368 f3Vec.push_back(klatt_globals.f3); 00369 f4Vec.push_back(klatt_globals.f4); 00370 f5Vec.push_back(klatt_globals.f5); 00371 f6Vec.push_back(klatt_globals.f6); 00372 b1Vec.push_back(klatt_globals.b1); 00373 b2Vec.push_back(klatt_globals.b2); 00374 b3Vec.push_back(klatt_globals.b3); 00375 b4Vec.push_back(klatt_globals.b4); 00376 b5Vec.push_back(klatt_globals.b5); 00377 b6Vec.push_back(klatt_globals.b6); 00378 a1Vec.push_back(klatt_globals.a1); 00379 a2Vec.push_back(klatt_globals.a2); 00380 a3Vec.push_back(klatt_globals.a3); 00381 a4Vec.push_back(klatt_globals.a4); 00382 a5Vec.push_back(klatt_globals.a5); 00383 a6Vec.push_back(klatt_globals.a6); 00384 b1pVec.push_back(klatt_globals.b1p); 00385 b2pVec.push_back(klatt_globals.b2p); 00386 b3pVec.push_back(klatt_globals.b3p); 00387 b4pVec.push_back(klatt_globals.b4p); 00388 b5pVec.push_back(klatt_globals.b5p); 00389 b6pVec.push_back(klatt_globals.b6p); 00390 avVec.push_back(klatt_globals.av); 00391 ahVec.push_back(klatt_globals.ah); 00392 oqVec.push_back(klatt_globals.oq); 00393 aturbVec.push_back(klatt_globals.aturb); 00394 afVec.push_back(klatt_globals.af); 00395 abVec.push_back(klatt_globals.ab); 00396 avpVec.push_back(klatt_globals.avp); 00397 tlVec.push_back(klatt_globals.tl); 00398 flVec.push_back(klatt_globals.fl); 00399 gainVec.push_back(klatt_globals.gain); 00400 anvVec.push_back(klatt_globals.anv); 00401 fnzVec.push_back(klatt_globals.fnz); 00402 bnzVec.push_back(klatt_globals.bnz); 00403 fnpVec.push_back(klatt_globals.fnp); 00404 bnpVec.push_back(klatt_globals.bnp); 00405 sqVec.push_back(klatt_globals.sq); 00406 diVec.push_back(klatt_globals.di); 00407 df1Vec.push_back(klatt_globals.df1); 00408 db1Vec.push_back(klatt_globals.db1); 00409 ftpVec.push_back(klatt_globals.ftp); 00410 btpVec.push_back(klatt_globals.btp); 00411 ftzVec.push_back(klatt_globals.ftz); 00412 btzVec.push_back(klatt_globals.btz); 00413 a2fVec.push_back(klatt_globals.a2f); 00414 a3fVec.push_back(klatt_globals.a3f); 00415 a4fVec.push_back(klatt_globals.a4f); 00416 a5fVec.push_back(klatt_globals.a5f); 00417 a6fVec.push_back(klatt_globals.a6f); 00418 a1vVec.push_back(klatt_globals.a1v); 00419 a2vVec.push_back(klatt_globals.a2v); 00420 a3vVec.push_back(klatt_globals.a3v); 00421 a4vVec.push_back(klatt_globals.a4v); 00422 atvVec.push_back(klatt_globals.atv); 00423 } 00424 } |
|
the empty Constructor.
00348 { 00349 00350 } |
|
returns parameter vector (length==frameNum).
00111 {return a1Vec;} |
|
returns parameter vector (length==frameNum).
00151 {return a1vVec;} |
|
returns parameter vector (length==frameNum).
00112 {return a2Vec;} |
|
returns parameter vector (length==frameNum).
00146 {return a2fVec;} |
|
returns parameter vector (length==frameNum).
00152 {return a2vVec;} |
|
returns parameter vector (length==frameNum).
00113 {return a3Vec;} |
|
returns parameter vector (length==frameNum).
00147 {return a3fVec;} |
|
returns parameter vector (length==frameNum).
00153 {return a3vVec;} |
|
returns parameter vector (length==frameNum).
00114 {return a4Vec;} |
|
returns parameter vector (length==frameNum).
00148 {return a4fVec;} |
|
returns parameter vector (length==frameNum).
00154 {return a4vVec;} |
|
returns parameter vector (length==frameNum).
00115 {return a5Vec;} |
|
returns parameter vector (length==frameNum).
00149 {return a5fVec;} |
|
returns parameter vector (length==frameNum).
00116 {return a6Vec;} |
|
returns parameter vector (length==frameNum).
00150 {return a6fVec;} |
|
returns parameter vector (length==frameNum).
00128 {return abVec;} |
|
returns parameter vector (length==frameNum).
00127 {return afVec;} |
|
returns parameter vector (length==frameNum).
00124 {return ahVec;} |
|
returns parameter vector (length==frameNum).
00097 {return ampVec;} |
|
returns parameter vector (length==frameNum).
00133 {return anvVec;} |
|
returns start of Aspiration in framenumbers (stops only).
00176 { 00177 return aspStart; 00178 } |
|
returns parameter vector (length==frameNum).
00126 {return aturbVec;} |
|
returns parameter vector (length==frameNum).
00155 {return atvVec;} |
|
returns parameter vector (length==frameNum).
00123 {return avVec;} |
|
returns parameter vector (length==frameNum).
00129 {return avpVec;} |
|
returns parameter vector (length==frameNum).
00117 {return b1pVec;} |
|
returns parameter vector (length==frameNum).
00105 {return b1Vec;} |
|
returns parameter vector (length==frameNum).
00118 {return b2pVec;} |
|
returns parameter vector (length==frameNum).
00106 {return b2Vec;} |
|
returns parameter vector (length==frameNum).
00119 {return b3pVec;} |
|
returns parameter vector (length==frameNum).
00107 {return b3Vec;} |
|
returns parameter vector (length==frameNum).
00120 {return b4pVec;} |
|
returns parameter vector (length==frameNum).
00108 {return b4Vec;} |
|
returns parameter vector (length==frameNum).
00121 {return b5pVec;} |
|
returns parameter vector (length==frameNum).
00109 {return b5Vec;} |
|
returns parameter vector (length==frameNum).
00122 {return b6pVec;} |
|
returns parameter vector (length==frameNum).
00110 {return b6Vec;} |
|
returns parameter vector (length==frameNum).
00137 {return bnpVec;} |
|
returns parameter vector (length==frameNum).
00135 {return bnzVec;} |
|
returns parameter vector (length==frameNum).
00143 {return btpVec;} |
|
returns parameter vector (length==frameNum).
00145 {return btzVec;} |
|
returns start of burst in framenumbers (stops only).
00172 { 00173 return burstStart; 00174 } |
|
returns original number of f0 vals (from mbrola-file).
|
|
returns parameter vector (length==frameNum).
00141 {return db1Vec;} |
|
returns parameter vector (length==frameNum).
00140 {return df1Vec;} |
|
returns parameter vector (length==frameNum).
00139 {return diVec;} |
|
returns true if phone is diphtong.
00083 { 00084 return diphtong; 00085 } |
|
returns duration of phon in msec.
00068 { 00069 return dur; 00070 } |
|
returns original locations of f0 vals (from mbrola-file).
00159 { 00160 return f0TimeVec; 00161 } |
|
returns original f0 vals (from mbrola-file).
00094 { 00095 return f0ValVec; 00096 } |
|
returns parameter vector (length==frameNum).
00098 {return f0Vec;} |
|
returns parameter vector (length==frameNum).
00099 {return f1Vec;} |
|
returns parameter vector (length==frameNum).
00100 {return f2Vec;} |
|
returns parameter vector (length==frameNum).
00101 {return f3Vec;} |
|
returns parameter vector (length==frameNum).
00102 {return f4Vec;} |
|
returns parameter vector (length==frameNum).
00103 {return f5Vec;} |
|
returns parameter vector (length==frameNum).
00104 {return f6Vec;} |
|
returns parameter vector (length==frameNum).
00131 {return flVec;} |
|
returns parameter vector (length==frameNum).
00136 {return fnpVec;} |
|
returns parameter vector (length==frameNum).
00134 {return fnzVec;} |
|
returns number of frames of phon (klattSynth). uses ui (update interval) from globalsT
00086 { 00087 return frameNum; 00088 } |
|
returns parameter vector (length==frameNum).
00142 {return ftpVec;} |
|
returns parameter vector (length==frameNum).
00144 {return ftzVec;} |
|
returns parameter vector (length==frameNum).
00132 {return gainVec;} |
|
returns manner of phon (manner of articulation).
00074 { 00075 return manner; 00076 } |
|
returns mean of f0 vals.
00059 { 00060 return meanF0; 00061 } |
|
returns name of phon (in Sampa).
00064 { 00065 return name; 00066 } |
|
returns parameter vector (length==frameNum).
00125 {return oqVec;} |
|
returns struct PhonFeatures for the phone.
00090 { 00091 return phonFeatures; 00092 } |
|
returns place of phon (place of articulation).
00077 { 00078 return place; 00079 } |
|
returns parameter vector (length==frameNum).
00138 {return sqVec;} |
|
returns end of steady-state in framenumbers.
00168 { 00169 return steadyEnd; 00170 } |
|
returns start of steady-state in framenumbers.
00164 { 00165 return steadyStart; 00166 } |
|
returns parameter vector (length==frameNum).
00130 {return tlVec;} |
|
returns type of phon (vowel or consonant).
00071 { 00072 return type; 00073 } |
|
returns true if phone is fundamentally voiced.
00080 { 00081 return voiced; 00082 } |
|
add/subtract <dbVal> from ampVal.
00596 { 00597 if (dBVal<0) { 00598 for (uint i=0; i<frameNum; i++) { 00599 if (ampVec[i]-dBVal>0) 00600 ampVec[i] -= dBVal; 00601 else 00602 ampVec[i] = 0; 00603 } 00604 } else if (dBVal>0) { 00605 for (uint i=0; i<frameNum; i++) { 00606 if (ampVec[i]+dBVal<MAX_DBVAL) 00607 ampVec[i] += dBVal; 00608 else 00609 ampVec[i] = MAX_DBVAL; 00610 } 00611 } 00612 } |
|
set/change duration of phon in msek. Set/change frameNumber of phon. shortens or lengthens all valVecs, algorithm depends on glob.changeDurMethod. if glob.changeDurMethod==STEADY_STATE_CUT -> frames in the steady state get repeated/deleted. if glob.changeDurMethod==TIME_ALIGNED -> the contour gets expnaded/compressed. Expects valVecs, steadyStart, steadyEnd and burstStart to be set.
00642 { 00643 uint leftBorder, rightBorder; 00644 uint oldFrameNum = frameNum; 00645 uint newFrameNum; 00646 00647 newFrameNum = msec2frames(newDur, glob); 00648 00649 if (manner == stop_voiced || manner == stop_voiceless) { 00650 leftBorder = 0; 00651 rightBorder = burstStart; 00652 } else { 00653 leftBorder = steadyStart; 00654 rightBorder = steadyEnd; 00655 } 00656 // if (name=="_") 00657 // cout << name<<": "<<oldFrameNum<<" "<<newFrameNum<<" "<<rightBorder<<" "<<leftBorder<<"\n"; 00658 00659 if (oldFrameNum-newFrameNum <= rightBorder-leftBorder || newFrameNum>oldFrameNum) { 00660 // cout <<"change\n"; 00661 dur = newDur; 00662 vector<uint> tmpTimeVec; 00663 for (uint i=0; i<frameNum; i++) { 00664 tmpTimeVec.push_back(i*(100/frameNum)); 00665 } 00666 frameNum = newFrameNum; 00667 00668 f0Vec = modelTrack(name, frameNum, f0Vec, tmpTimeVec); 00669 00670 00671 if (glob.changeDurMethod == TIME_ALIGNED && (manner!=stop_voiced || manner!=stop_voiceless)) { 00672 ampVec = modelTrack(name, frameNum, ampVec, tmpTimeVec); 00673 f1Vec = modelTrack(name, frameNum, f1Vec, tmpTimeVec); 00674 f2Vec = modelTrack(name, frameNum, f2Vec, tmpTimeVec); 00675 f3Vec = modelTrack(name, frameNum, f3Vec, tmpTimeVec); 00676 if (glob.use4Freq) 00677 f4Vec = modelTrack(name, frameNum, f4Vec, tmpTimeVec); 00678 if (glob.use5Freq) { 00679 f5Vec = modelTrack(name, frameNum, f5Vec, tmpTimeVec); 00680 } 00681 } else if (glob.changeDurMethod == STEADY_STATE_CUT || (manner==stop_voiced || manner==stop_voiceless)) { 00682 ampVec = change_valNum(name, frameNum, leftBorder, rightBorder, ampVec); 00683 f1Vec = change_valNum(name, frameNum, leftBorder, rightBorder, f1Vec); 00684 f2Vec = change_valNum(name, frameNum, leftBorder, rightBorder, f2Vec); 00685 f3Vec = change_valNum(name, frameNum, leftBorder, rightBorder, f3Vec); 00686 if (glob.use4Freq) 00687 f4Vec = change_valNum(name, frameNum, leftBorder, rightBorder, f4Vec); 00688 if (glob.use5Freq) { 00689 f5Vec = change_valNum(name, frameNum, leftBorder, rightBorder, f5Vec); 00690 } 00691 } else { 00692 error("phon::changeDur(): durChangeMethod not defined", -3); 00693 } 00694 00695 if (manner == stop_voiced || manner == stop_voiceless) { 00696 leftBorder = 0; 00697 rightBorder = burstStart; 00698 } else { 00699 leftBorder = 0; 00700 rightBorder = frameNum; 00701 } 00702 00703 if (!glob.use4Freq) 00704 f4Vec = change_valNum(name, frameNum, leftBorder, rightBorder, f4Vec); 00705 if (!glob.use5Freq) { 00706 f5Vec = change_valNum(name, frameNum, leftBorder, rightBorder, f5Vec); 00707 } 00708 00709 b1Vec = change_valNum(name, frameNum, leftBorder, rightBorder, b1Vec); 00710 b2Vec = change_valNum(name, frameNum, leftBorder, rightBorder, b2Vec); 00711 b3Vec = change_valNum(name, frameNum, leftBorder, rightBorder, b3Vec); 00712 b4Vec = change_valNum(name, frameNum, leftBorder, rightBorder, b4Vec); 00713 b5Vec = change_valNum(name, frameNum, leftBorder, rightBorder, b5Vec); 00714 f6Vec = change_valNum(name, frameNum, leftBorder, rightBorder, f6Vec); 00715 b6Vec = change_valNum(name, frameNum, leftBorder, rightBorder, b6Vec); 00716 a1Vec = change_valNum(name, frameNum, leftBorder, rightBorder, a1Vec); 00717 a2Vec = change_valNum(name, frameNum, leftBorder, rightBorder, a2Vec); 00718 a3Vec = change_valNum(name, frameNum, leftBorder, rightBorder, a3Vec); 00719 a4Vec = change_valNum(name, frameNum, leftBorder, rightBorder, a4Vec); 00720 a5Vec = change_valNum(name, frameNum, leftBorder, rightBorder, a5Vec); 00721 a6Vec = change_valNum(name, frameNum, leftBorder, rightBorder, a6Vec); 00722 b1pVec = change_valNum(name, frameNum, leftBorder, rightBorder, b1pVec); 00723 b2pVec = change_valNum(name, frameNum, leftBorder, rightBorder, b2pVec); 00724 b3pVec = change_valNum(name, frameNum, leftBorder, rightBorder, b3pVec); 00725 b4pVec = change_valNum(name, frameNum, leftBorder, rightBorder, b4pVec); 00726 b5pVec = change_valNum(name, frameNum, leftBorder, rightBorder, b5pVec); 00727 b6pVec = change_valNum(name, frameNum, leftBorder, rightBorder, b6pVec); 00728 oqVec = change_valNum(name, frameNum, leftBorder, rightBorder, oqVec); 00729 avVec = change_valNum(name, frameNum, leftBorder, rightBorder, avVec); 00730 ahVec = change_valNum(name, frameNum, leftBorder, rightBorder, ahVec); 00731 aturbVec = change_valNum(name, frameNum, leftBorder, rightBorder, aturbVec); 00732 afVec = change_valNum(name, frameNum, leftBorder, rightBorder, afVec); 00733 abVec = change_valNum(name, frameNum, leftBorder, rightBorder, abVec); 00734 avpVec = change_valNum(name, frameNum, leftBorder, rightBorder, avpVec); 00735 tlVec = change_valNum(name, frameNum, leftBorder, rightBorder, tlVec); 00736 flVec = change_valNum(name, frameNum, leftBorder, rightBorder, flVec); 00737 gainVec = change_valNum(name, frameNum, leftBorder, rightBorder, gainVec); 00738 anvVec = change_valNum(name, frameNum, leftBorder, rightBorder, anvVec); 00739 fnzVec = change_valNum(name, frameNum, leftBorder, rightBorder, fnzVec); 00740 bnzVec = change_valNum(name, frameNum, leftBorder, rightBorder, bnzVec); 00741 fnpVec = change_valNum(name, frameNum, leftBorder, rightBorder, fnpVec); 00742 bnpVec = change_valNum(name, frameNum, leftBorder, rightBorder, bnpVec); 00743 sqVec = change_valNum(name, frameNum, leftBorder, rightBorder, sqVec); 00744 diVec = change_valNum(name, frameNum, leftBorder, rightBorder, diVec); 00745 df1Vec = change_valNum(name, frameNum, leftBorder, rightBorder, df1Vec); 00746 db1Vec = change_valNum(name, frameNum, leftBorder, rightBorder, db1Vec); 00747 ftpVec = change_valNum(name, frameNum, leftBorder, rightBorder, ftpVec); 00748 btpVec = change_valNum(name, frameNum, leftBorder, rightBorder, btpVec); 00749 ftzVec = change_valNum(name, frameNum, leftBorder, rightBorder, ftzVec); 00750 btzVec = change_valNum(name, frameNum, leftBorder, rightBorder, btzVec); 00751 a2fVec = change_valNum(name, frameNum, leftBorder, rightBorder, a2fVec); 00752 a3fVec = change_valNum(name, frameNum, leftBorder, rightBorder, a3fVec); 00753 a4fVec = change_valNum(name, frameNum, leftBorder, rightBorder, a4fVec); 00754 a5fVec = change_valNum(name, frameNum, leftBorder, rightBorder, a5fVec); 00755 a6fVec = change_valNum(name, frameNum, leftBorder, rightBorder, a6fVec); 00756 a1vVec = change_valNum(name, frameNum, leftBorder, rightBorder, a1vVec); 00757 a2vVec = change_valNum(name, frameNum, leftBorder, rightBorder, a2vVec); 00758 a3vVec = change_valNum(name, frameNum, leftBorder, rightBorder, a3vVec); 00759 a4vVec = change_valNum(name, frameNum, leftBorder, rightBorder, a4vVec); 00760 atvVec = change_valNum(name, frameNum, leftBorder, rightBorder, atvVec); 00761 00762 if (manner == stop_voiced || manner == stop_voiceless) { 00763 burstStart = burstStart - (oldFrameNum-frameNum); 00764 aspStart = aspStart - (oldFrameNum-frameNum); 00765 } 00766 } 00767 } |
|
change Range of f0Contour compressing/expanding at <rate> in relation to <meanF0>.
00627 { 00628 changeContrast(f0Vec, rate, meanF0); 00629 } |
|
change f0Vals by rate (100=no change).
00583 { 00584 changeMean(f0Vec, rate); // change all 00585 } |
|
sets manner, place, type, formantQuadrant and voiced according to name. This is done by the consturctor.
00180 { 00181 char *c_tmp; 00182 c_tmp = (char *) malloc(100); 00183 strcpy(c_tmp, name.c_str()); 00184 manner = classify_german(c_tmp); 00185 switch(manner) { 00186 case long_vowel: 00187 type = vowel; 00188 voiced = true; 00189 break; 00190 case short_vowel: 00191 type = vowel; 00192 voiced = true; 00193 break; 00194 case liquide: 00195 type = consonant; 00196 voiced = true; 00197 break; 00198 case nasal: 00199 type = consonant; 00200 voiced = true; 00201 break; 00202 case fricative_voiced: 00203 type = consonant; 00204 voiced = true; 00205 break; 00206 case fricative_voiceless: 00207 type = consonant; 00208 voiced = false; 00209 break; 00210 case stop_voiced: 00211 type = consonant; 00212 voiced = true; 00213 break; 00214 case stop_voiceless: 00215 type = consonant; 00216 voiced = false; 00217 break; 00218 case silence: 00219 type = consonant; 00220 voiced = false; 00221 break; 00222 default : 00223 error("phon::initMannerPlaceType: undefined phon-type/n", -3); 00224 } 00225 if (type == consonant) { 00226 if (name == "t") { 00227 place = alveolar; 00228 } 00229 else if (name == "d") { 00230 place = alveolar; 00231 } 00232 else if (name == "p") { 00233 place = bilabial; 00234 } 00235 else if (name == "b") { 00236 place = bilabial; 00237 } 00238 else if (name == "k") { 00239 place = velar; 00240 } 00241 else if (name == "g") { 00242 place = velar; 00243 } 00244 else if (name == "f") { 00245 place = labial; 00246 } 00247 else if (name == "v") { 00248 place = labial; 00249 } 00250 else if (name == "s") { 00251 place = alveolar; 00252 } 00253 else if (name == "z") { 00254 place = alveolar; 00255 } 00256 else if (name == "S") { 00257 place = postalveolar; 00258 } 00259 else if (name == "j") { 00260 place = palatal; 00261 } 00262 else if (name == "C") { 00263 place = palatal; 00264 } 00265 else if (name == "x") { 00266 place = velar; 00267 } 00268 else if (name == "h") { 00269 place = glottal; 00270 } 00271 else if (name == "?") { 00272 place = glottal; 00273 } 00274 else if (name == "l") { 00275 place = alveolar; 00276 } 00277 else if (name == "R") { 00278 place = uvular; 00279 } 00280 else if (name == "m") { 00281 place = bilabial; 00282 } 00283 else if (name == "n") { 00284 place = alveolar; 00285 } 00286 else if (name == "N") { 00287 place = velar; 00288 } 00289 } else { 00290 place = noPlace; 00291 } 00292 if (type == vowel) { 00293 if (name == "6") 00294 formantQuadrant = bottomRight; 00295 else if (name == "@") 00296 formantQuadrant = topLeft; 00297 else if (name == "I") 00298 formantQuadrant = topLeft; 00299 else if (name == "Y") 00300 formantQuadrant = topLeft; 00301 else if (name == "E") 00302 formantQuadrant = bottomLeft; 00303 else if (name == "9") 00304 formantQuadrant = topRight; 00305 else if (name == "U") 00306 formantQuadrant = topRight; 00307 else if (name == "O") 00308 formantQuadrant = bottomRight; 00309 else if (name == "a") 00310 formantQuadrant = bottomLeft; 00311 else if (name == "i:") 00312 formantQuadrant = topLeft; 00313 else if (name == "y:") 00314 formantQuadrant = topLeft; 00315 else if (name == "e:") 00316 formantQuadrant = topLeft; 00317 else if (name == "E:") 00318 formantQuadrant = bottomLeft; 00319 else if (name == "2:") 00320 formantQuadrant = bottomLeft; 00321 else if (name == "u:") 00322 formantQuadrant = topRight; 00323 else if (name == "o:") 00324 formantQuadrant = topRight; 00325 else if (name == "a:") 00326 formantQuadrant = bottomLeft; 00327 else 00328 formantQuadrant = noQuadrant; 00329 } else { 00330 formantQuadrant = noQuadrant; 00331 } 00332 if (type == vowel) { 00333 if (name == "aI" || name == "OY" || name == "aU" || name == "I6") 00334 diphtong = true; 00335 else 00336 diphtong = false; 00337 } else { 00338 diphtong = false; 00339 } 00340 } |
|
interpolate f0Contour linear from start to end.
00638 { 00639 interpolateLinear(f0Vec, start, end); 00640 } |
|
models phone-features changing voice-source and/or ArticulationTractFilter parameters.
For voiceless phones which should become voiced, sylMeanF0 is used. For coarticulation prev- and nextManner are used.
the one for acoustic theory:
this one was (I think) never published, but it's very valuable, they ship it with the sensyn synthesizer
and, of course:
01052 { 01054 // cout << name <<": act:"<<manner<<", prev:"<<prevManner <<", next:"<<nextManner<<"\n"; 01055 if (phonFeatures.undershoot) { 01056 uint rate = phonFeatures.undershootRate; 01057 for (uint i=0; i<frameNum; i++) { 01058 int f1Diff = (int)(f1Vec[i] - center_F1)* (int)rate/100; 01059 int f2Diff = (int)(f2Vec[i] - center_F2)* (int)rate/100; 01060 f1Vec[i] = checkMinF1(checkMaxF1(f1Vec[i]-f1Diff)); 01061 f2Vec[i] = checkMinF2(checkMaxF2(f2Vec[i]-f2Diff)); 01062 } 01063 } 01064 if (phonFeatures.overshoot) { 01065 uint rate = phonFeatures.overshootRate; 01066 for (uint i=0; i<frameNum; i++) { 01067 int f1Diff = (int)(f1Vec[i] - center_F1)* (int)rate/100; 01068 int f2Diff = (int)(f2Vec[i] - center_F2)* (int)rate/100; 01069 f1Vec[i] = checkMinF1(checkMaxF1(f1Vec[i]+f1Diff)); 01070 f2Vec[i] = checkMinF2(checkMaxF2(f2Vec[i]+f2Diff)); 01071 } 01072 } 01073 if (phonFeatures.spread) { 01074 uint rate = phonFeatures.spreadRate; 01075 for (uint i=0; i<frameNum; i++) { 01076 int f1Diff = (int)(f1Vec[i])* (int)rate/100; 01077 int f2Diff = (int)(f2Vec[i])* (int)rate/100; 01078 f1Vec[i] = checkMinF1(checkMaxF1(f1Vec[i]+f1Diff)); 01079 f2Vec[i] = checkMinF2(checkMaxF2(f2Vec[i]+f2Diff)); 01080 } 01081 } 01082 if (phonFeatures.rounded) { 01083 uint rate = phonFeatures.roundedRate; 01084 for (uint i=0; i<frameNum; i++) { 01085 int f1Diff = (int)(f1Vec[i])* (int)rate/100; 01086 int f2Diff = (int)(f2Vec[i])* (int)rate/100; 01087 int f3Diff = (int)(f3Vec[i])* (int)rate/100; 01088 int f4Diff = (int)(f4Vec[i])* (int)rate/100; 01089 int f5Diff = (int)(f5Vec[i])* (int)rate/100; 01090 01091 f1Vec[i] = checkMinF1(checkMaxF1(f1Vec[i]-f1Diff/2)); 01092 f2Vec[i] = checkMinF2(checkMaxF2(f2Vec[i]-f2Diff/2)); 01093 f3Vec[i] = checkMinF3(checkMaxF3(f3Vec[i]-f3Diff)); 01094 //f4Vec[i] = checkMinF4(checkMaxF4(f4Vec[i]-f4Diff)); 01095 //f5Vec[i] = checkMinF5(checkMaxF5(f5Vec[i]-f5Diff)); 01096 } 01097 } 01098 if (phonFeatures.headSize) { 01099 uint rate = phonFeatures.headSizeRate; 01100 changeMean(f0Vec, rate); 01101 changeMean(f1Vec, rate); 01102 changeMean(f2Vec, rate); 01103 changeMean(f3Vec, rate); 01104 changeMean(f4Vec, rate); 01105 changeMean(f5Vec, rate); 01106 } 01107 if (phonFeatures.coarticulation) { 01108 uint rate = phonFeatures.coarticulationRate; 01109 PHON_MANNER pManner, nManner; 01110 PHON_PLACE pPlace, nPlace; 01111 bool first=false, last=false; 01112 uint coFrames = frameNum/2 * rate/100; 01113 if (prevpP != NULL) { 01114 pManner=(*prevpP).Manner(); 01115 pPlace=(*prevpP).Place(); 01116 } else 01117 first = true; 01118 if (nextpP != NULL) { 01119 nManner=(*nextpP).Manner(); 01120 nPlace=(*nextpP).Place(); 01121 } else 01122 last = true; 01123 CO_TYPE coType = phonFeatures.coarticulationType; 01124 01125 if (!first && (coType==progressive || coType==both)) { 01126 if (manner==fricative_voiceless && (pManner==long_vowel||pManner==short_vowel) ) { 01127 glob.b1Dyn = true; 01128 glob.avDyn = true; 01129 for (uint i=0; i<coFrames; i++) { 01130 b1Vec[i] = 300; 01131 avVec[i] = ampVec[i]; 01132 f0Vec[i] = (*prevpP).F0Vec()[(*prevpP).FrameNum()-1]; 01133 } 01134 } 01135 if ((manner==long_vowel||manner==short_vowel)) { 01136 if (pManner==fricative_voiceless||pManner==fricative_voiced) { 01137 if (pPlace==alveolar) 01138 for (uint i=0; i<coFrames; i++) { 01139 afVec[i] = ampVec[i]>6 ? ampVec[i]-6 : 0; 01140 f5Vec[i] = 3500; f6Vec[i] = 4500; 01141 b5pVec[i] = 500; b6pVec[i] = 500; 01142 a5fVec[i]= 50; a6fVec[i]= 60; 01143 } 01144 if (pPlace==postalveolar) 01145 for (uint i=0; i<coFrames; i++) { 01146 afVec[i] = ampVec[i]>6 ? ampVec[i]-6 : 0; 01147 f4Vec[i] = 2000; f5Vec[i] = 3500; f6Vec[i] = 4500; 01148 b4pVec[i] = 320; b5pVec[i] = 500; b6pVec[i] = 1500; 01149 a4fVec[i]= 60; a5fVec[i]= 60; a6fVec[i]= 60; 01150 } 01151 } 01152 if (pManner==nasal) { 01153 uint lastFnp = (*prevpP).FnpVec()[(*prevpP).FrameNum()-1]; 01154 uint lastFnz = (*prevpP).FnzVec()[(*prevpP).FrameNum()-1]; 01155 uint lastBnp = (*prevpP).BnpVec()[(*prevpP).FrameNum()-1]; 01156 uint lastBnz = (*prevpP).BnzVec()[(*prevpP).FrameNum()-1]; 01157 for (uint i=0; i<coFrames; i++) { 01158 fnpVec[i] = lastFnp; 01159 bnpVec[i] = lastBnp; 01160 fnzVec[i] = lastFnz; 01161 bnzVec[i] = lastBnz; 01162 } 01163 } 01164 } 01165 } 01166 if (!last && (coType==regressive || coType==both)) { 01167 if (manner==fricative_voiceless && (nManner==long_vowel||pManner==short_vowel) ) { 01168 // cout <<name<<" "<<frameNum-coFrames<<"\n"; 01169 glob.b1Dyn = true; 01170 glob.avDyn = true; 01171 for (uint i=frameNum-coFrames; i<frameNum; i++) { 01172 avVec[i] = ampVec[i]; 01173 f0Vec[i] = (*nextpP).F0Vec()[0]; 01174 b1Vec[i] = 300; 01175 } 01176 } 01177 if ((manner==long_vowel||manner==short_vowel)) { 01178 if (nManner==fricative_voiceless||nManner==fricative_voiced) { 01179 // glob.b4pDyn = true; 01180 glob.b5pDyn = true; 01181 glob.b6pDyn = true; 01182 glob.a4fDyn = true; 01183 glob.a5fDyn = true; 01184 glob.a6fDyn = true; 01185 for (uint i=frameNum-coFrames; i<frameNum; i++) { 01186 afVec[i] = ampVec[i]>6 ? ampVec[i]-6 : 0; 01187 f4Vec[i] = 2000; f5Vec[i] = 3500; f6Vec[i] = 4500; 01188 b4pVec[i] = 320; b5pVec[i] = 500; b6pVec[i] = 1500; 01189 a4fVec[i]= 60; a5fVec[i]= 60; a6fVec[i]= 60; 01190 } 01191 } 01192 if (nManner==nasal) { 01193 uint nextFnp = (*nextpP).FnpVec()[0]; 01194 uint nextFnz = (*nextpP).FnzVec()[0]; 01195 uint nextBnp = (*nextpP).BnpVec()[0]; 01196 uint nextBnz = (*nextpP).BnzVec()[0]; 01197 for (uint i=0; i<frameNum-coFrames; i++) { 01198 fnpVec[i] = nextFnp; 01199 bnpVec[i] = nextBnp; 01200 fnzVec[i] = nextFnz; 01201 bnzVec[i] = nextBnz; 01202 } 01203 01204 } 01205 } 01206 } 01207 } 01208 if (phonFeatures.jitter) { 01209 if (phonFeatures.jitterMethod==USE_FLUTTER) { 01210 glob.flDyn = true; 01211 for (uint i=0; i<frameNum; i++) { 01212 if (f0Vec[i]>0) 01213 flVec[i] = phonFeatures.jitterRate; 01214 } 01215 } else if (phonFeatures.jitterMethod==USE_F0_ALTERNATING) { 01216 addJitterVec(f0Vec, phonFeatures.jitterRate); 01217 } else { 01218 error ("modelPhonFeatures: no jitter-method defined\n", -5); 01219 } 01220 } 01221 if (phonFeatures.voiced && voiced) { 01222 uint voiceLessStart = phonFeatures.vocStop; 01223 uint voiceLessEnd = phonFeatures.vocStart==0 ? 01224 frameNum : phonFeatures.vocStart; 01225 for (uint i=voiceLessStart; i<voiceLessEnd; i++) { 01226 if (type == vowel) { 01227 avVec[i] = 0; 01228 aturbVec[i] = 60; 01229 } else if (type == consonant) { 01230 avpVec[i] = 0; 01231 } 01232 } 01233 } 01234 if (phonFeatures.voiced && !voiced) { 01235 cout <<"here\n"; 01236 01237 uint voiceStart = phonFeatures.vocStart; 01238 uint voiceEnd = phonFeatures.vocStop>frameNum ? frameNum : phonFeatures.vocStop; 01239 glob.avDyn = true; 01240 if (glob.senSyn) { 01241 for (uint i=voiceStart; i<voiceEnd; i++) { 01242 avVec[i] = ampVec[i]-6; 01243 f0Vec[i] = sylMeanF0; 01244 // f0Vec[i] = (*nextpP).F0Vec()[0]; 01245 // f0Vec[i] = (*prevpP).F0Vec()[(*prevpP).FrameNum()-1]; 01246 } 01247 } else { 01248 for (uint i=voiceStart; i<voiceEnd; i++) { 01249 avpVec[i] = ampVec[i]>6 ? ampVec[i]-6 : 0; 01250 a1Vec[i] = 50; a2Vec[i] = 50; a3Vec[i] = 50; 01251 } 01252 } 01253 } 01254 01255 if (phonFeatures.breathy) { 01256 uint brtStart = phonFeatures.brtStart; 01257 uint brtEnd = phonFeatures.brtStop>frameNum ? 01258 frameNum : phonFeatures.brtStop; 01259 uint rate = phonFeatures.brtRate; 01260 01261 if ((*nextpP).Manner()==stop_voiced && brtEnd==frameNum) 01262 brtEnd /= 2; 01263 01264 glob.btpDyn = true; 01265 glob.ahDyn=true; 01266 glob.oqDyn=true; 01267 glob.tlDyn=true; 01268 01269 glob.btpDyn = true; 01270 glob.fnpDyn = true; 01271 glob.fnzDyn = true; 01272 glob.bnpDyn = true; 01273 01274 uint oqAdd = (100-glob.oq)*rate/100; 01275 uint tlAdd = (24-glob.tl)*rate/100; 01276 uint b1Add = (200-glob.ah)*rate/100; 01277 uint avSub = 6*rate/100; 01278 uint ahAdd; 01279 01280 uint btpSub = (glob.btp-minBtp)*rate/100; 01281 uint bnpSub = (glob.bnp-minBnp)*rate/100; 01282 01283 // cout << tlAdd<<" "<<oqAdd<<"\n"; 01284 for (uint i=brtStart; i<brtEnd; i++) { 01286 b1Vec[i] += b1Add; 01287 oqVec[i] += oqAdd; 01288 ahAdd = ampVec[i]>3 ? (ampVec[i]-3)*rate/100 : 0; 01289 ahVec[i] += ahAdd; 01290 tlVec[i] += tlAdd; 01291 avVec[i] = avVec[i]>avSub ? avVec[i]-avSub : 0; 01292 01295 fnpVec[i] = 550; 01296 fnzVec[i] = 550; 01297 btpVec[i] -= btpSub; 01298 bnpVec[i] -= bnpSub; 01299 if (!glob.senSyn) 01300 aturbVec[i] = ampVec[i]+6; 01301 } 01302 } 01303 01304 if (phonFeatures.nasalized) { 01305 uint nasStart = phonFeatures.nasStart; 01306 uint nasEnd = phonFeatures.nasStop>frameNum ? 01307 frameNum : phonFeatures.nasStop; 01308 for (uint i=nasStart; i<nasEnd; i++) { 01309 // fnzVec[i] = f2Vec[i] - f1Vec[i]; 01310 } 01311 } 01312 01313 if (phonFeatures.laryngealized) { 01314 glob.diDyn=true; 01315 uint larStart = phonFeatures.larStart; 01316 uint larEnd = phonFeatures.larStop>frameNum ? 01317 frameNum : phonFeatures.larStop; 01318 01319 if (glob.senSyn) { 01320 uint rate = phonFeatures.larRate; 01321 glob.diDyn = true; 01322 glob.b1Dyn = true; 01323 glob.oqDyn = true; 01324 uint b1Add = 250*rate/100; 01325 uint oqAdd = (100-glob.oq)*rate/100; 01326 for (uint i=larStart; i<larEnd; i++) { 01327 diVec[i]= rate; 01328 oqVec[i] += oqAdd; 01329 b1Vec[i] += b1Add; 01330 } 01331 } else { 01332 cout << "phon::modelFeatures: generating output for i&s version, not tested\n"; 01333 for (uint i=larStart; i<larEnd; i++) { 01335 f0Vec[i] = checkMinF0((uint) f0Vec[i]/2); 01337 avVec[i] = avVec[i] - 3; 01338 } 01339 } 01340 } 01341 if (phonFeatures.creaky) { 01342 glob.diDyn=true; 01343 uint creakyStart = phonFeatures.creakyStart; 01344 uint creakyEnd = phonFeatures.creakyStop>frameNum ? 01345 frameNum : phonFeatures.creakyStop; 01346 01347 if (glob.senSyn) { 01348 uint rate = phonFeatures.creakyRate; 01349 glob.diDyn = true; 01350 glob.b1Dyn = true; 01351 glob.oqDyn = true; 01352 uint b1Add = 250*rate/100; 01353 uint oqAdd = (100-glob.oq)*rate/200; 01354 uint avSub = 6*rate/100; 01355 for (uint i=creakyStart; i<creakyEnd; i++) { 01356 diVec[i]= rate; 01357 oqVec[i] += oqAdd; 01358 avVec[i] = avVec[i]>avSub ? avVec[i]-avSub : 0; 01359 b1Vec[i] += b1Add; 01360 } 01361 } else { 01362 cout << "phon::modelFeatures: generating output for i&s version, not tested\n"; 01363 for (uint i=creakyStart; i<creakyEnd; i++) { 01365 f0Vec[i] = checkMinF0((uint) f0Vec[i]/2); 01367 avVec[i] = avVec[i] - 3; 01368 } 01369 } 01370 } 01371 if (phonFeatures.tense) { 01372 glob.oqDyn=true; 01373 glob.tlDyn=true; 01374 glob.b1Dyn=true; 01375 glob.b2Dyn=true; 01376 glob.b3Dyn=true; 01377 glob.b4Dyn=true; 01378 glob.b5Dyn=true; 01379 glob.b6Dyn=true; 01380 uint rate = phonFeatures.tenseRate; 01381 uint avAdd = 6*rate/100; 01382 uint oqSub = (glob.oq-minOq)*rate/100; 01383 uint tlSub = glob.tl*rate/100; 01384 uint b1Sub = (glob.b1-minB1)*rate/100; 01385 uint b2Sub = (glob.b2-minB2)*rate/100; 01386 uint b3Sub = (glob.b3-minB3)*rate/100; 01387 uint b4Sub = (glob.b4-minB4)*rate/100; 01388 uint b5Sub = (glob.b5-minB5)*rate/100; 01389 uint b6Sub = (glob.b6-minB6)*rate/100; 01390 // cout << tlSub<<" "<<oqSub<<"\n"; 01391 // cout << b1Sub<<" "<<oqSub<<"\n"; 01392 01393 for (uint i=0; i<frameNum; i++) { 01394 avVec[i] += avAdd; 01395 oqVec[i] = oqVec[i] > oqSub ? oqVec[i]-oqSub : 0; 01396 tlVec[i] = tlVec[i] > tlSub ? tlVec[i]-tlSub : 0; 01397 b1Vec[i] -= b1Sub; 01398 b2Vec[i] -= b2Sub; 01399 b3Vec[i] -= b3Sub; 01400 b4Vec[i] -= b4Sub; 01401 b5Vec[i] -= b5Sub; 01402 b6Vec[i] -= b6Sub; 01403 } 01404 } 01405 if (phonFeatures.falsett) { 01406 glob.oqDyn=true; 01407 glob.tlDyn=true; 01408 glob.b1Dyn=true; 01409 glob.b2Dyn=true; 01410 glob.b3Dyn=true; 01411 glob.b4Dyn=true; 01412 glob.b5Dyn=true; 01413 glob.b6Dyn=true; 01414 glob.flDyn=true; 01415 uint rate = phonFeatures.falsettRate; 01416 uint oqAdd = (100-glob.oq)*phonFeatures.brtRate/100; 01417 uint tlAdd = (24-glob.tl)*phonFeatures.brtRate/100; 01418 // cout << tlAdd<<" "<<oqAdd<<"\n"; 01419 for (uint i=0; i<frameNum; i++) { 01420 f0Vec[i] += (uint)((double)f0Vec[i] * (double)rate/100.0); 01421 oqVec[i] += oqAdd; 01422 tlVec[i] += tlAdd; 01423 // flVec[i] += rate; 01424 01425 b1Vec[i] = 200; 01426 b2Vec[i] = 200; 01427 b3Vec[i] = 200; 01428 b4Vec[i] = 200; 01429 b5Vec[i] = 200; 01430 b6Vec[i] = 1000; 01431 } 01432 } 01433 if (phonFeatures.whisper) { 01434 glob.oqDyn=true; 01435 glob.tlDyn=true; 01436 glob.b1Dyn=true; 01437 glob.b2Dyn=true; 01438 glob.b3Dyn=true; 01439 glob.b4Dyn=true; 01440 glob.b5Dyn=true; 01441 glob.b6Dyn=true; 01442 uint rate = phonFeatures.whisperRate; 01443 uint oqAdd = (100-glob.oq)*rate/100; 01444 uint tlAdd = (24-glob.tl)*rate/100; 01445 // cout << tlAdd<<" "<<oqAdd<<"\n"; 01446 for (uint i=0; i<frameNum; i++) { 01447 // ahVec[i] += avVec[i]*rate/100; 01448 avVec[i] = avVec[i]>avVec[i]*rate/100?avVec[i]-avVec[i]*rate/100:0; 01449 01450 oqVec[i] += oqAdd; 01451 tlVec[i] += tlAdd; 01452 b1Vec[i] = 200; 01453 b2Vec[i] = 200; 01454 b3Vec[i] = 200; 01455 b4Vec[i] = 200; 01456 b5Vec[i] = 200; 01457 b6Vec[i] = 1000; 01458 } 01459 /* 01460 if (type==vowel&&(*prevpP).Manner()==stop_voiced) { 01461 cout<<"here\n"; 01462 for (uint i=0; i<frameNum; i++) { 01463 // avVec[i] = 0; 01464 // f0Vec[i] = 0; 01465 ahVec[i] = 0; 01466 } 01467 } 01468 */ 01469 } 01470 // printVec(avVec); 01471 } |
|
models Intonation by filling the gaps in f0ValVec. f0Vec gets set/changed. f0Dyn is true.
00342 { 00343 f0Vec = modelTrack(name, frameNum, f0ValVec, f0TimeVec); 00344 glob.f0Dyn=true; 00345 } |
|
prints KlattFrames of phone in simmons&iles format to outFile.
00430 { 00431 for (uint i=0; i<frameNum;i++) { 00432 if(f0Vec[i] > maxF0) cerr << "WARNING: phon:"+name+", f0Val="<<f0Vec[i]<<" > maxF0\n"; 00433 if(f0Vec[i] < minF0 && f0Vec[i]!=0) cerr << "WARNING: phon:"+name+", f0Val="<<f0Vec[i]<<" < minF0\n"; 00434 if(f1Vec[i] > maxF1) cerr << "WARNING: phon:"+name+", f1Val="<<f1Vec[i]<<" > maxF1\n"; 00435 if(f2Vec[i] > maxF2) cerr << "WARNING: phon:"+name+", f2Val="<<f2Vec[i]<<" > maxF2\n"; 00436 if(f3Vec[i] > maxF3) cerr << "WARNING: phon:"+name+", f3Val="<<f3Vec[i]<<" > maxF3\n"; 00437 00438 if (ampVec[i]>maxVal) warn ("unplausibel value for param: amp at phon: "+name+"\n"); 00439 if (f0Vec[i]>maxVal) warn ("unplausibel value for param: f0 at phon: "+name+"\n"); 00440 if (f1Vec[i]>maxVal) warn ("unplausibel value for param: f1 at phon: "+name+"\n"); 00441 if (f2Vec[i]>maxVal) warn ("unplausibel value for param: f2 at phon: "+name+"\n"); 00442 if (f3Vec[i]>maxVal) warn ("unplausibel value for param: f3 at phon: "+name+"\n"); 00443 if (f4Vec[i]>maxVal) warn ("unplausibel value for param: f4 at phon: "+name+"\n"); 00444 if (f5Vec[i]>maxVal) warn ("unplausibel value for param: f5 at phon: "+name+"\n"); 00445 if (f6Vec[i]>maxVal) warn ("unplausibel value for param: f6 at phon: "+name+"\n"); 00446 if (b1Vec[i]>maxVal) warn ("unplausibel value for param: b1 at phon: "+name+"\n"); 00447 if (b2Vec[i]>maxVal) warn ("unplausibel value for param: b2 at phon: "+name+"\n"); 00448 if (b3Vec[i]>maxVal) warn ("unplausibel value for param: b3 at phon: "+name+"\n"); 00449 if (b4Vec[i]>maxVal) warn ("unplausibel value for param: b4 at phon: "+name+"\n"); 00450 if (b5Vec[i]>maxVal) warn ("unplausibel value for param: b5 at phon: "+name+"\n"); 00451 if (b6Vec[i]>maxVal) warn ("unplausibel value for param: b6 at phon: "+name+"\n"); 00452 if (a1Vec[i]>maxVal) warn ("unplausibel value for param: a1 at phon: "+name+"\n"); 00453 if (a2Vec[i]>maxVal) warn ("unplausibel value for param: a2 at phon: "+name+"\n"); 00454 if (a3Vec[i]>maxVal) warn ("unplausibel value for param: a3 at phon: "+name+"\n"); 00455 if (a4Vec[i]>maxVal) warn ("unplausibel value for param: a4 at phon: "+name+"\n"); 00456 if (a5Vec[i]>maxVal) warn ("unplausibel value for param: a5 at phon: "+name+"\n"); 00457 if (a6Vec[i]>maxVal) warn ("unplausibel value for param: a6 at phon: "+name+"\n"); 00458 if (b1pVec[i]>maxVal) warn ("unplausibel value for param: b1p at phon: "+name+"\n"); 00459 if (b2pVec[i]>maxVal) warn ("unplausibel value for param: b2p at phon: "+name+"\n"); 00460 if (b3pVec[i]>maxVal) warn ("unplausibel value for param: b3p at phon: "+name+"\n"); 00461 if (b4pVec[i]>maxVal) warn ("unplausibel value for param: b4p at phon: "+name+"\n"); 00462 if (b5pVec[i]>maxVal) warn ("unplausibel value for param: b5p at phon: "+name+"\n"); 00463 if (b6pVec[i]>maxVal) warn ("unplausibel value for param: b6p at phon: "+name+"\n"); 00464 if (avVec[i]>maxVal) warn ("unplausibel value for param: av at phon: "+name+"\n"); 00465 if (ahVec[i]>maxVal) warn ("unplausibel value for param: ah at phon: "+name+"\n"); 00466 if (oqVec[i]>maxVal) warn ("unplausibel value for param: oq at phon: "+name+"\n"); 00467 if (aturbVec[i]>maxVal) warn ("unplausibel value for param: aturb at phon: "+name+"\n"); 00468 if (afVec[i]>maxVal) warn ("unplausibel value for param: af at phon: "+name+"\n"); 00469 if (abVec[i]>maxVal) warn ("unplausibel value for param: ab at phon: "+name+"\n"); 00470 if (avpVec[i]>maxVal) warn ("unplausibel value for param: avp at phon: "+name+"\n"); 00471 if (tlVec[i]>maxVal) warn ("unplausibel value for param: tl at phon: "+name+"\n"); 00472 if (flVec[i]>maxVal) warn ("unplausibel value for param: fl at phon: "+name+"\n"); 00473 if (gainVec[i]>maxVal) warn ("unplausibel value for param: gain at phon: "+name+"\n"); 00474 if (anvVec[i]>maxVal) warn ("unplausibel value for param: anv at phon: "+name+"\n"); 00475 if (fnzVec[i]>maxVal) warn ("unplausibel value for param: fnz at phon: "+name+"\n"); 00476 if (bnzVec[i]>maxVal) warn ("unplausibel value for param: bnz at phon: "+name+"\n"); 00477 if (fnpVec[i]>maxVal) warn ("unplausibel value for param: fnp at phon: "+name+"\n"); 00478 if (bnpVec[i]>maxVal) warn ("unplausibel value for param: bnp at phon: "+name+"\n"); 00479 if (sqVec[i]>maxVal) warn ("unplausibel value for param: sq at phon: "+name+"\n"); 00480 if (diVec[i]>maxVal) warn ("unplausibel value for param: di at phon: "+name+"\n"); 00481 if (df1Vec[i]>maxVal) warn ("unplausibel value for param: df1 at phon: "+name+"\n"); 00482 if (db1Vec[i]>maxVal) warn ("unplausibel value for param: db1 at phon: "+name+"\n"); 00483 if (ftpVec[i]>maxVal) warn ("unplausibel value for param: ftp at phon: "+name+"\n"); 00484 if (btpVec[i]>maxVal) warn ("unplausibel value for param: btp at phon: "+name+"\n"); 00485 if (ftzVec[i]>maxVal) warn ("unplausibel value for param: ftz at phon: "+name+"\n"); 00486 if (btzVec[i]>maxVal) warn ("unplausibel value for param: btz at phon: "+name+"\n"); 00487 if (a2fVec[i]>maxVal) warn ("unplausibel value for param: a2f at phon: "+name+"\n"); 00488 if (a3fVec[i]>maxVal) warn ("unplausibel value for param: a3f at phon: "+name+"\n"); 00489 if (a4fVec[i]>maxVal) warn ("unplausibel value for param: a4f at phon: "+name+"\n"); 00490 if (a5fVec[i]>maxVal) warn ("unplausibel value for param: a5f at phon: "+name+"\n"); 00491 if (a6fVec[i]>maxVal) warn ("unplausibel value for param: a6f at phon: "+name+"\n"); 00492 if (a1vVec[i]>maxVal) warn ("unplausibel value for param: a1v at phon: "+name+"\n"); 00493 if (a2vVec[i]>maxVal) warn ("unplausibel value for param: a2v at phon: "+name+"\n"); 00494 if (a3vVec[i]>maxVal) warn ("unplausibel value for param: a3v at phon: "+name+"\n"); 00495 if (a4vVec[i]>maxVal) warn ("unplausibel value for param: a4v at phon: "+name+"\n"); 00496 if (atvVec[i]>maxVal) warn ("unplausibel value for param: atv at phon: "+name+"\n"); 00497 00498 00499 outFile <<f0Vec[i]<<" "<<avVec[i] 00500 <<" "<<f1Vec[i]<<" "<<b1Vec[i]<<" "<<f2Vec[i]<<" "<<b2Vec[i]<<" " 00501 <<f3Vec[i]<<" "<<b3Vec[i]<<" "<<f4Vec[i]<<" "<<b4Vec[i]<<" "<<f5Vec[i]<<" " 00502 <<b5Vec[i]<<" "<<f6Vec[i]<<" "<<b6Vec[i]<<" "<<fnzVec[i]<<" "<<bnzVec[i]<<" " 00503 <<fnpVec[i]<<" "<<bnpVec[i]<<" "<<ahVec[i]<<" "<<oqVec[i]<<" " 00504 <<aturbVec[i]<<" "<<tlVec[i]<<" "<<afVec[i]<<" "<<flVec[i]<<" " 00505 <<a1Vec[i]<<" "<<b1pVec[i]<<" "<<a2Vec[i]<<" "<<b2pVec[i]<<" "<<a3Vec[i]<<" " 00506 <<b3pVec[i]<<" "<<a4Vec[i]<<" "<<b4pVec[i]<<" "<<a5Vec[i]<<" "<<b5pVec[i]<<" " 00507 <<a6Vec[i]<<" "<<b6pVec[i]<<" "<<anvVec[i]<<" "<<abVec[i]<<" "<<avpVec[i]<<" " 00508 <<gainVec[i]<<"\n"; 00509 } 00510 } |
|
prints name of phon to outFile (debugging).
00426 { 00427 outFile << name; 00428 } |
|
prints all parameters (frames) of the phone in sensyn-format. the paramter start gives the start time of the phone. Used by printSenSynFile().
00512 { 00513 uint time = start; 00514 for (uint i=0; i<frameNum;i++) { 00515 // if(f0Vec[i] > maxF0) cerr << "WARNING: f0Val="<<f0Vec[i]<<" > maxF0\n"; 00516 // if(f0Vec[i] < minF0 && f0Vec[i]!=0) cerr << "WARNING: f0Val="<<f0Vec[i]<<" < minF0\n"; 00517 if(f1Vec[i] > maxF1) cerr << "WARNING: f1Val="<<f1Vec[i]<<" > maxF1\n"; 00518 if(f2Vec[i] > maxF2) cerr << "WARNING: f2Val="<<f2Vec[i]<<" > maxF2\n"; 00519 if(f3Vec[i] > maxF3) cerr << "WARNING: f3Val="<<f3Vec[i]<<" > maxF3\n"; 00520 // fprintf((FILE *)outFile, "%5d", "time"); 00521 outFile.width(4); 00522 outFile << time ; 00523 if (glob.f0Dyn) {outFile.width(5); outFile << f0Vec[i];} 00524 if (glob.avDyn) {outFile.width(5); outFile << avVec[i];} 00525 if (glob.oqDyn) {outFile.width(5); outFile << oqVec[i];} 00526 if (glob.sqDyn) {outFile.width(5); outFile << sqVec[i];} 00527 if (glob.tlDyn) {outFile.width(5); outFile << tlVec[i];} 00528 if (glob.flDyn) {outFile.width(5); outFile << flVec[i];} 00529 if (glob.diDyn) {outFile.width(5); outFile << diVec[i];} 00530 if (glob.ahDyn) {outFile.width(5); outFile << ahVec[i];} 00531 if (glob.afDyn) {outFile.width(5); outFile << afVec[i];} 00532 if (glob.f1Dyn) {outFile.width(5); outFile << f1Vec[i];} 00533 if (glob.b1Dyn) {outFile.width(5); outFile << b1Vec[i];} 00534 if (glob.df1Dyn) {outFile.width(5); outFile << df1Vec[i];} 00535 if (glob.db1Dyn) {outFile.width(5); outFile << db1Vec[i];} 00536 if (glob.f2Dyn) {outFile.width(5); outFile << f2Vec[i];} 00537 if (glob.b2Dyn) {outFile.width(5); outFile << b2Vec[i];} 00538 if (glob.f3Dyn) {outFile.width(5); outFile << f3Vec[i];} 00539 if (glob.b3Dyn) {outFile.width(5); outFile << b3Vec[i];} 00540 if (glob.f4Dyn) {outFile.width(5); outFile << f4Vec[i];} 00541 if (glob.b4Dyn) {outFile.width(5); outFile << b4Vec[i];} 00542 if (glob.f5Dyn) {outFile.width(5); outFile << f5Vec[i];} 00543 if (glob.b5Dyn) {outFile.width(5); outFile << b5Vec[i];} 00544 if (glob.f6Dyn) {outFile.width(5); outFile << f6Vec[i];} 00545 if (glob.b6Dyn) {outFile.width(5); outFile << b6Vec[i];} 00546 if (glob.fnpDyn) {outFile.width(5); outFile << fnpVec[i];} 00547 if (glob.bnpDyn) {outFile.width(5); outFile << bnpVec[i];} 00548 if (glob.fnzDyn) {outFile.width(5); outFile << fnzVec[i];} 00549 if (glob.bnzDyn) {outFile.width(5); outFile << bnzVec[i];} 00550 if (glob.ftpDyn) {outFile.width(5); outFile << ftpVec[i];} 00551 if (glob.btpDyn) {outFile.width(5); outFile << btpVec[i];} 00552 if (glob.ftzDyn) {outFile.width(5); outFile << ftzVec[i];} 00553 if (glob.btzDyn) {outFile.width(5); outFile << btzVec[i];} 00554 if (glob.a2fDyn) {outFile.width(5); outFile << a2fVec[i];} 00555 if (glob.a3fDyn) {outFile.width(5); outFile << a3fVec[i];} 00556 if (glob.a4fDyn) {outFile.width(5); outFile << a4fVec[i];} 00557 if (glob.a5fDyn) {outFile.width(5); outFile << a5fVec[i];} 00558 if (glob.a6fDyn) {outFile.width(5); outFile << a6fVec[i];} 00559 if (glob.abDyn) {outFile.width(5); outFile << abVec[i];} 00560 if (glob.b2pDyn) {outFile.width(5); outFile << b2pVec[i];} 00561 if (glob.b3pDyn) {outFile.width(5); outFile << b3pVec[i];} 00562 if (glob.b4pDyn) {outFile.width(5); outFile << b4pVec[i];} 00563 if (glob.b5pDyn) {outFile.width(5); outFile << b5pVec[i];} 00564 if (glob.b6pDyn) {outFile.width(5); outFile << b6pVec[i];} 00565 if (glob.anvDyn) {outFile.width(5); outFile << anvVec[i];} 00566 if (glob.a1vDyn) {outFile.width(5); outFile << a1vVec[i];} 00567 if (glob.a2vDyn) {outFile.width(5); outFile << a2vVec[i];} 00568 if (glob.a3vDyn) {outFile.width(5); outFile << a3vVec[i];} 00569 if (glob.a4vDyn) {outFile.width(5); outFile << a4vVec[i];} 00570 if (glob.atvDyn) {outFile.width(5); outFile << atvVec[i];} 00571 outFile << "\n"; 00572 time += glob.ui; 00573 } 00574 } |
|
set/change a1-vals, (iles&simmons-version only).
00564 {a1Vec = newVec;} |
|
set/change a2-vals, (iles&simmons-version only).
00570 {a2Vec = newVec;} |
|
set/change a3-vals, (iles&simmons-version only).
00576 {a3Vec = newVec;} |
|
set/change a4-vals, (iles&simmons-version only).
00582 {a4Vec = newVec;} |
|
set/change a5-vals, (iles&simmons-version only).
00588 {a5Vec = newVec;} |
|
set/change a6-vals, (iles&simmons-version only).
00594 {a6Vec = newVec;} |
|
set/change Amp-vals, changes bool ampDyn to true.
00474 {ampVec = newVec;} |
|
models ArticulationTractFilter parameters.
Parameters (val-vectors are filled) are set according to place and manner of articulation. Some of the modeling depends on the actual klatt-synthesizer that's used. I did all the testing with the sensyn synthesizer, so there's still work to do for the Simmons&Iles synthesizer.
It's not easy to get data for this in the literature, I did lot's of experiments and I only cared about the parameters for phones that occured in my testsentence. However, you get some information from
or (in German and difficult to get)
or even
00876 { 00877 00878 switch(type) { 00879 case vowel: 00880 // modeling is done by the cascade tract 00881 break; 00882 case consonant: 00883 switch (manner) { 00884 case liquide: 00885 break; 00886 case nasal: 00887 00888 glob.fnzDyn = true; 00889 glob.fnpDyn = true; 00890 glob.bnpDyn = true; 00891 glob.bnzDyn = true; 00892 00893 glob.ftpDyn = true; 00894 glob.ftzDyn = true; 00895 glob.btpDyn = true; 00896 glob.btzDyn = true; 00897 00898 glob.tlDyn=true; 00899 00900 for (uint i=0; i<frameNum; i++) { 00901 // fnzVec[i] = 1800; 00902 fnzVec[i] = f1Vec[i] + (int) ((double)(f2Vec[i]-f1Vec[i])*0.75); 00903 // fnpVec[i] = 900; 00904 fnpVec[i] = f1Vec[i] + (int) (f2Vec[i]-f1Vec[i])/2; 00905 bnpVec[i] = 500; bnzVec[i] = 30; 00906 00907 ftpVec[i] = 2700; 00908 ftzVec[i] = 3200; 00909 // btpVec[i] = 50; 00910 // btzVec[i] = 500; 00911 00912 a1Vec[i]=50; a2Vec[i]=50; a3Vec[i]=50; // for i&s 00913 switch (place) { 00914 case bilabial: 00915 break; 00916 case alveolar: 00917 break; 00918 case velar: 00919 break; 00920 default: 00921 error ("phon::setArticulationTractFilter: nasal with unknown place\n", -3); 00922 } 00923 } 00924 00925 break; 00926 00927 case silence: 00928 00929 break; 00930 default : // fricativss and stops 00931 switch (place) { 00932 case bilabial: 00933 for (uint i=0; i<frameNum; i++) 00934 abVec[i] = 60; glob.abDyn=true; 00935 break; 00936 case labial: 00937 for (uint i=0; i<frameNum; i++) { 00938 if (voiced) { 00939 a1Vec[i] = 50; a2Vec[i] = 45; a3Vec[i] = 45; // for i&s 00940 a2fVec[i] = 45; glob.a2fDyn=true; 00941 a3fVec[i] = 45; glob.a3fDyn=true; 00942 b2pVec[i] = 100; glob.b2pDyn=true; 00943 b3pVec[i] = 200; glob.b3pDyn=true; 00944 } else 00945 abVec[i] = 60; glob.abDyn=true; 00946 } 00947 break; 00948 case alveolar: 00949 if (manner == fricative_voiced || manner == fricative_voiceless) { 00950 glob.a5fDyn=true; glob.a6fDyn=true; glob.f5Dyn=true; glob.f6Dyn=true; glob.b5pDyn=true; glob.b6pDyn=true; 00951 for (uint i=0; i<frameNum; i++) { 00952 a5Vec[i] = 60; a6Vec[i] = 60; // for i&s 00953 if (glob.sr==16000) { 00954 a5fVec[i] = 60; a6fVec[i] = 60; 00955 f5Vec[i] = 5000; f6Vec[i] = 6500; 00956 b5pVec[i] = 500; b6pVec[i] = 1000; 00957 } else { // sr is 10 kHz 00958 f5Vec[i] = 3500; f6Vec[i] = 4500; 00959 b5pVec[i] = 500; b6pVec[i] = 500; 00960 a5fVec[i] = 50; a6fVec[i] = 60; 00961 } 00962 } 00963 if (voiced) { 00964 for (uint i=0; i<frameNum; i++) { 00965 a1Vec[i] = 40; a2Vec[i] = 35; a3Vec[i] = 40; // for i&s 00966 } 00967 } 00968 } else { // stop 00969 if (burstStart>frameNum || aspStart>frameNum) 00970 error("phon::setArticulationTractFilter: wrong burst/asp-start",-5); 00971 for (uint i=burstStart; i<aspStart; i++) { 00972 // abVec[i] = 60; 00973 00974 f1Vec[i] = 500; 00975 f2Vec[i] = 1500; 00976 f3Vec[i] = 2500; 00977 a1Vec[i] = 50;a2Vec[i] = 50;a3Vec[i] = 50;a4Vec[i] = 40;a5Vec[i] = 40;a6Vec[i] = 40; // for i&s 00978 a2fVec[i] = 50; glob.a2fDyn=true; 00979 a3fVec[i] = 50; glob.a3fDyn=true; 00980 a4fVec[i] = 40; glob.a4fDyn=true; 00981 a5fVec[i] = 40; glob.a5fDyn=true; 00982 a6fVec[i] = 40; glob.a6fDyn=true; 00983 b2pVec[i] = 110; glob.b2pDyn=true; 00984 b3pVec[i] = 250; glob.b3pDyn=true; 00985 b4pVec[i] = 300; glob.b4pDyn=true; 00986 b5pVec[i] = 300; glob.b5pDyn=true; 00987 b6pVec[i] = 300; glob.b6pDyn=true; 00988 } 00989 } 00990 break; 00991 case postalveolar: 00992 glob.f4Dyn=true; glob.f5Dyn=true; glob.f6Dyn=true; 00993 glob.a3fDyn=true;glob.a4fDyn=true;glob.a5fDyn=true; 00994 glob.b3pDyn=true; glob.b4pDyn=true; glob.b5pDyn=true; glob.b6pDyn=true; 00995 for (uint i=0; i<frameNum; i++) { 00996 a3Vec[i]=50; a4Vec[i]=50; a5Vec[i]=60; a6Vec[i]=60; // for i&s 00997 if (glob.sr==16000) { 00998 b3pVec[i] = 200; b4pVec[i] = 200; b5pVec[i] = 600; b6pVec[i] = 600; 00999 } else { 01000 a3fVec[i] = 0; a4fVec[i] = 60; a5fVec[i] = 60; a6fVec[i] = 60; 01001 b4pVec[i] = 320; b5pVec[i] = 500; b6pVec[i] = 1500; 01002 f4Vec[i] = 2000; f5Vec[i] = 3500; f6Vec[i] = 4500; 01003 } 01004 } 01005 break; 01006 case palatal: 01007 for (uint i=0; i<frameNum; i++) { 01008 a4Vec[i] = 60;a5Vec[i] = 50;a6Vec[i] = 30; // for i&s 01009 01010 a4fVec[i] = 60; glob.a4fDyn=true; 01011 a5fVec[i] = 50; glob.a5fDyn=true; 01012 a6fVec[i] = 30; glob.a6fDyn=true; 01013 // f4Vec[i] = 3000; 01014 f5Vec[i] = 4000; glob.f5Dyn=true; 01015 f6Vec[i] = 5500; glob.f6Dyn=true; 01016 b4pVec[i] = 1000; glob.b4pDyn=true; 01017 b5pVec[i] = 1000; glob.b5pDyn=true; 01018 b6pVec[i] = 1000; glob.b6pDyn=true; 01019 } 01020 break; 01021 case velar: 01022 for (uint i=0; i<frameNum; i++) { 01023 a2Vec[i] = 50;// for i&s 01024 // ahVec[i] = ampVec[i]; 01025 a2fVec[i] = 50; glob.a2fDyn=true; 01026 f2Vec[i] = 1200; glob.f2Dyn=true; 01027 b2pVec[i] = 200; glob.b2pDyn=true; 01028 a5fVec[i] = 40; glob.a5fDyn=true; 01029 f5Vec[i] = 4000; glob.f5Dyn=true; 01030 b5pVec[i] = 200; glob.b5pDyn=true; 01031 } 01032 break; 01033 case uvular: 01034 break; 01035 case glottal: 01036 for (uint i=0; i<frameNum; i++) { 01037 a1Vec[i] = 30;a2Vec[i] = 30;a3Vec[i] = 30; // for i&s 01038 /* 01039 a2fVec[i] = 30; glob.a2fDyn=true; 01040 a3fVec[i] = 30; glob.a3fDyn=true; 01041 b2pVec[i] = 200; glob.b2pDyn=true; 01042 b3pVec[i] = 200; glob.b3pDyn=true; 01043 */ 01044 } 01045 break; 01046 default : 01047 error("phon::setArticulationTractFilter: wrong place of articulation\n", -3); 01048 } // switch place 01049 } // switch manner 01050 } // switch type 01051 } |
|
Set/change start of Aspiration in framenumbers (stops only).
00046 { 00047 aspStart = newAspStart; 00048 } |
|
set/change b1-vals, changes bool b1Dyn to true.
00523 {b1Vec = newVec; kg.b1Dyn=true;} |
|
set/change b1p-vals,.
00600 {b1pVec = newVec;} |
|
set/change b2-vals, changes bool b2Dyn to true.
00530 {b2Vec = newVec; kg.b2Dyn=true;} |
|
set/change b2p-vals, changes bool Dyn to true.
00607 {b2pVec = newVec; kg.b2pDyn=true;} |
|
set/change b3-vals, changes bool b3Dyn to true.
00537 {b3Vec = newVec; kg.b3Dyn=true;} |
|
set/change b3p-vals, changes bool Dyn to true.
00614 {b3pVec = newVec; kg.b3pDyn=true;} |
|
set/change b4-vals, changes bool b4Dyn to true.
00544 {b4Vec = newVec; kg.b4Dyn=true;} |
|
set/change b4p-vals, changes bool Dyn to true.
00621 {b4pVec = newVec; kg.b4pDyn=true;} |
|
set/change b5-vals, changes bool b5Dyn to true.
00551 {b5Vec = newVec; kg.b5Dyn=true;} |
|
set/change b5p-vals, changes bool Dyn to true.
00628 {b5pVec = newVec; kg.b5pDyn=true;} |
|
set/change b6-vals, changes bool b6Dyn to true.
00558 {b6Vec = newVec; kg.b6Dyn=true;} |
|
set/change b6p-vals, changes bool Dyn to true.
00635 {b6pVec = newVec; kg.b6pDyn=true;} |
|
Set/change start of burst in framenumbers (stops only).
00043 { 00044 burstStart = newBurstStart; 00045 } |
|
set/change location of f0 vals. (together with f0ValVec: intonation description)
00055 { 00056 f0TimeVec = newF0TimeVec; 00057 } |
|
set/change f0 vals. (together with f0TimeVec: intonation description) this is the original f0-vector that comes from the mbrola-file, it's filled up with values (each frame one f0-value) after reading and stored in f0Vec. defines mean-val of f0-vals
00051 { 00052 f0ValVec = newF0ValVec; 00053 meanF0 = (uint) mean(f0ValVec); 00054 } |
|
set/change f0-vals. defines mean-val of f0-vals changes bool f0Dyn in globals to true
00461 { 00462 f0Vec = newF0Vec; 00463 meanF0 = (uint) mean(f0Vec); 00464 kg.f0Dyn=true; 00465 if (kg.copyDB) 00466 dur = newF0Vec.size()*kg.ui; 00467 } |
|
set/change F1-vals, changes bool f1Dyn to true.
00481 {f1Vec = newVec; kg.f1Dyn=true;} |
|
set/change f2-vals, changes bool f2Dyn to true.
00488 {f2Vec = newVec; kg.f2Dyn=true;} |
|
set/change f3-vals, changes bool f3Dyn to true.
00495 {f3Vec = newVec; kg.f3Dyn=true;} |
|
set/change f4-vals, changes bool f4Dyn to true.
00502 {f4Vec = newVec; kg.f4Dyn=true;} |
|
set/change f5-vals, changes bool f5Dyn to true.
00509 {f5Vec = newVec; kg.f5Dyn=true;} |
|
set/change f6-vals, changes bool f6Dyn to true.
00516 {f6Vec = newVec; kg.f6Dyn=true;} |
|
Set/change name of phon, defines type, manner and place of articulation of phone.
00026 { 00027 name = newName; 00028 initMannerPlaceType(name); 00029 } |
|
Set/change phone features.
00032 { 00033 phonFeatures = newPhonFeatures; 00034 } |
|
models voice-source parameters.
Parameters (val-vectors are filled) are set according to place and manner of articulation. Some of the modeling depends on the actual klatt-synthesizer that's used. I did all the testing with the sensyn synthesizer, so there's still work to do for the Simmons&Iles synthesizer.
It's not easy to get data for this in the literature, I did lot's of experiments and I only cared about the parameters for phones that occured in my testsentence. However, you get some information from
or (in German and difficult to get)
or even
00768 { 00769 // cout << name <<"\n"; 00770 switch(type) { 00771 case vowel: 00772 // set amplitude of voicing 00773 avVec = ampVec; glob.avDyn = true; 00774 00775 // model noise in higher freqs 00776 glob.b4pDyn = true; 00777 glob.b5pDyn = true; 00778 glob.b6pDyn = true; 00779 glob.a4fDyn = true; 00780 glob.a5fDyn = true; 00781 glob.a6fDyn = true; 00782 for (uint i=0; i<frameNum; i++) { 00783 afVec[i] = ampVec[i]>22 ? ampVec[i]-22 : 0; 00784 if (afVec[i] > maxVal) cout <<"phon::setSoundSource: afVec[i] > maxVal\n"; 00785 b4pVec[i] = 70; 00786 b5pVec[i] = 70; 00787 b6pVec[i] = 100; 00788 a4fVec[i]= 35; 00789 a5fVec[i]= 35; 00790 a6fVec[i]= 35; 00791 } 00792 00793 // model phraryngeal interaction 00794 // following klattalk, chpt. 3, p. 27 00795 glob.df1Dyn = true; 00796 glob.db1Dyn=true; 00797 for (uint i=0; i<frameNum; i++) { 00798 df1Vec[i] = f1Vec[i]/10; 00799 db1Vec[i] = b1Vec[i]*6; 00800 } 00801 00802 // model dependence of BW1 from F1 00803 // following fujimura&lindqvist 00804 glob.b1Dyn=true; 00805 for (uint i=0; i<frameNum; i++) { 00806 b1Vec[i] = F12BW(f1Vec[i]); 00807 } 00808 break; 00809 case consonant: 00810 switch (manner) { 00811 case liquide: 00812 avVec = ampVec; glob.avDyn = true; 00813 break; 00814 case nasal: 00815 avVec = ampVec; glob.avDyn = true; 00816 break; 00817 case fricative_voiced: 00818 if (name=="h") { 00819 // phonFeatures.breathy=true; 00820 glob.avDyn = true; 00821 glob.ahDyn = true; 00822 for (uint i=0; i<frameNum; i++) { 00823 avVec[i] = ampVec[i]>18 ? ampVec[i]-18 : 0; 00824 ahVec[i] = ampVec[i]>12 ? ampVec[i]-12 : 0; 00825 } 00826 glob.ahDyn = true; 00827 } else { 00828 afVec = ampVec; glob.afDyn = true; 00829 for (uint i=0; i<frameNum; i++) 00830 avVec[i] = ampVec[i]-6; 00831 glob.avDyn = true; 00832 avpVec = ampVec; // for i&s 00833 } 00834 break; 00835 case fricative_voiceless: 00836 afVec = ampVec; glob.afDyn = true; 00837 break; 00838 case stop_voiced: 00839 if (burstStart>frameNum || aspStart>frameNum) { 00840 error("phon::setSoundSource: wrong burst/asp-start at phon: "+name+"\n",-5); 00841 } 00842 glob.afDyn = true; 00843 for (uint i=burstStart; i<aspStart; i++) { 00844 afVec[i] = ampVec[i]>6 ? ampVec[i]-6 : 0; 00845 } 00846 glob.ahDyn = true; glob.avDyn = true; 00847 for (uint i=aspStart; i<frameNum; i++) { 00848 ahVec[i] = ampVec[i]; 00849 avVec[i] = ampVec[i]>6 ? ampVec[i]-6 : 0; 00850 avpVec[i] = ampVec[i]; // for i&s 00851 } 00852 break; 00853 case stop_voiceless: 00854 // cout <<name<<" l:"<<frameNum<<":, bS:"<<burstStart<<", aS:"<<aspStart<<"\n"; 00855 if (burstStart>frameNum || aspStart>frameNum) 00856 error("phon::setSoundSource: wrong burst/asp-start at phon: "+name+"\n",-5); 00857 for (uint i=burstStart; i<aspStart; i++) { 00858 afVec[i] = ampVec[i]; glob.afDyn = true; 00859 } 00860 for (uint i=aspStart; i<frameNum; i++) { 00861 ahVec[i] = ampVec[i]; 00862 } 00863 break; 00864 case silence: 00865 for (uint i=0; i<frameNum; i++) { 00866 f0Vec[i] = 0; 00867 avVec[i] = 0; 00868 } 00869 break; 00870 default : 00871 error("phon::setSoundSource: undefined phon-type/n", -3); 00872 } 00873 } 00874 } |
|
Set/change end of steady-state in framenumbers.
00040 { 00041 steadyEnd = newSteadyEnd; 00042 } |
|
Set/change start of steady-state in framenumbers.
00037 { 00038 steadyStart = newSteadyStart; 00039 } |
|
smoothing function: all f0Vals get centerFiltered around winsize.
00614 { 00615 smoothe(f0Vec, winsize); 00616 } |
|
parallel formant-parameters, amplitudes of formants.
|
|
amplitude of 1. formant (parallel branch, voicing), not used.
|
|
parallel formant-parameters, amplitudes of formants.
|
|
amplitude of 2. formant (parallel branch).
|
|
amplitude of 2. formant (parallel branch, voicing), not used.
|
|
parallel formant-parameters, amplitudes of formants.
|
|
amplitude of 3. formant (parallel branch).
|
|
amplitude of 3. formant (parallel branch, voicing), not used.
|
|
parallel formant-parameters, amplitudes of formants.
|
|
amplitude of 4. formant (parallel branch).
|
|
amplitude of 4. formant (parallel branch, voicing), not used.
|
|
parallel formant-parameters, amplitudes of formants.
|
|
amplitude of 5. formant (parallel branch).
|
|
parallel formant-parameters, amplitudes of formants.
|
|
amplitude of 6. formant (parallel branch).
|
|
amp. of bypass frication, par. branch(0-80).
|
|
amp. of frication, par. branch(0-80).
|
|
amp. of aspiration (0-70).
|
|
each frame one amplitude-val in dB, normalized to 60 dB.
|
|
nasal parameters amp. of nasal formant, parallel branch.
|
|
stops: time of start of aspiration (in frameNums).
|
|
amp. of turbulence(0-80).
|
|
amplitude of tracheal formant (parallel branch, voicing), not used.
|
|
voice-source parameters voiced amplitude of cascade branch (0-70).
|
|
amp. of voicing, par. branch(0-70).
|
|
cascade formant-parameters.
|
|
parallel formant-parameters, bandwidths for parallel branch.
|
|
cascade formant-parameters.
|
|
parallel formant-parameters, bandwidths for parallel branch.
|
|
cascade formant-parameters.
|
|
parallel formant-parameters, bandwidths for parallel branch.
|
|
cascade formant-parameters.
|
|
parallel formant-parameters, bandwidths for parallel branch.
|
|
cascade formant-parameters.
|
|
parallel formant-parameters, bandwidths for parallel branch.
|
|
cascade formant-parameters.
|
|
parallel formant-parameters, bandwidths for parallel branch.
|
|
bw of nasal pole.
|
|
bw of nasal zero.
|
|
bw of tracheal pole.
|
|
bw of tracheal zero.
|
|
stops: time of start of burst (in frameNums).
|
|
delta b1, for pharyngeal interactions.
|
|
delta f1, for pharyngeal interactions.
|
|
diplophonic double pulsing.
|
|
true if phone is diphtong.
|
|
duration of phon in msec.
|
|
intonation description, comes from mbrola-format.
|
|
intonation description.
|
|
each frame one f0-val.
|
|
cascade formant-parameters.
|
|
cascade formant-parameters.
|
|
cascade formant-parameters.
|
|
cascade formant-parameters.
|
|
cascade formant-parameters.
|
|
cascade formant-parameters.
|
|
spectral skew(0-40).
|
|
freq of nasal pole.
|
|
freq of nasal zero.
|
|
the quadrant for vowels in the vowel-chart. currently not used.
|
|
number of frames, should be dur/framesize.
|
|
freq of tracheal pole.
|
|
freq of tracheal zero.
|
|
overall gain(0-80).
|
|
long_vowel, short_vowel, nasal, stop, ...
|
|
The mean f0-Value.
|
|
The name of the phone in Sampa. Possible phone-names are language dependend.
|
|
open perc in glottal period.
|
|
the originale frameNumber from diphone-inventory.
|
|
spread, nasalized, laryngealized, ...
|
|
bilabial, labial, labiodental, ...
|
|
speed quotient, glottal source parameter.
|
|
time of end of steady state (in frameNums).
|
|
time of start of steady state (in frameNums).
|
|
spectral tl in dB(0-24).
|
|
vowel/consonant.
|
|
true if phone is normally voiced.
|