Paul Carter (pgc104@york.ac.uk)
Tue, 6 Jul 1999 12:11:18 +0100 (BST)
On Tue, 6 Jul 1999, Mark Huckvale wrote:
> At 12:49 05/07/99 +0100, Paul Carter wrote:
> >I've produced a simple durational model for syllables which runs in place
> >of Mark's Klatt durations model.
>
> I have got this running within Prosynth.exe and I will put this on the
> FTP site by the end of the day.
>
> I had to make a small change:
> I took out all lines that looked like
> :DUR *= ..:DUR;
> which multipled this node's DUR by its parent.
> While this works, it is a bit dangerous since it relies on the
> order in which nodes are processed. Also it prevents 'what-if'
> type testing with prosynth.exe. Instead I have kept the script
> 'calcdur.prx' which does this multiplication afterwards.
> The modified script is called durations002.prx
>
> Mark
Fine. I've not managed to get round the ACODA problem, but I have now
implemented a version of final lengthening, akin to Klatt's multiplying of
final rhymes by 1.4.
My version, however, has factors computed from the database. It can
easily be added to durations002.prx, since it just involves adding the
following IP block to the code:
/* Start of new IP block */
/******************************************
Final lengthening done with RHYME under IP
******************************************/
IP{
/* adaptation of Klatt's DUR*=1.4 rule
but with ProSynth db numbers */
node lastag = ./AG[numchild(.)];
node lastfoot = lastag/FOOT[numchild(lastag)];
node lastsyl = lastfoot/SYL[numchild(lastfoot)];
node lastrhyme = lastsyl/RHYME;
node n;
foreach n (./AG/FOOT/SYL/RHYME) {
if (n==lastrhyme) {
n:DUR *= 1.7916;
} else {
/* shorten the others because finality not in model */
n:DUR *= 0.6993;
}
}
}
/* End of new IP block */
This substantially improves the output.
Paul
This archive was generated by hypermail 2.0b3 on Tue Jul 06 1999 - 12:12:37 BST