#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.
|