[1.48.03]

Fix bug, use of the command-line  "espeakedit --compile" produced phoneme data
in which vowels started at full amplitude instead of gradual increase.

Fix bug:  SSML <break time=""> with values greater than 23 seconds were ignored
due to arithmetic overflow.

Phoneme definition files:
Added new function:  ChangeNextPhoneme().

Language changes include: da, en, fa, gu, hu, it, nl, pt, ta

Started new language: eu (Basque).

*_rules files:
Allow $p_alt1, $p_alt2, etc in pre-conditions.  The rule matches if the
characters before the current point in the word occur as an entry in the
*_list file with the corresponding $alt attibute.

Added condition $list.  This is similar to $p_alt etc, but examines
all words in the *_list file which don't have the $only attribute.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@374 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
jonsd
2014-03-04 16:52:26 +00:00
parent 227d37256e
commit 6bc5e798c1
47 changed files with 2442 additions and 1036 deletions
+15 -3
View File
@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: jonsd@users.sourceforge.net *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -2092,7 +2092,13 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb
}
if((attr2 = GetSsmlAttribute(px,"time")) != NULL)
{
value = (attrnumber(attr2,0,1) * 25) / speed.pause_factor; // compensate for speaking speed to keep constant pause length
value2 = attrnumber(attr2,0,1); // pause in mS
// compensate for speaking speed to keep constant pause length, see function PauseLength()
// 'value' here is x 10mS
value = (value2 * 256) / (speed.clause_pause_factor * 10);
if(value < 200)
value = (value2 * 256) / (speed.pause_factor * 10);
if(terminator == 0)
terminator = CLAUSE_NONE;
@@ -2100,7 +2106,13 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb
if(terminator)
{
if(value > 0xfff)
value = 0xfff;
{
// scale down the value and set a scaling indicator bit
value = value / 32;
if(value > 0xfff)
value = 0xfff;
terminator |= CLAUSE_PAUSE_LONG;
}
return(terminator + value);
}
break;