Ejemplo n.º 1
0
static const cst_val *last_accent(const cst_item *syl)
{
    const cst_item *s;
    int c;
    
    for (c=0,s=item_as(syl,"Syllable");
	 s && (c < CST_CONST_INT_MAX); 
	 s=item_prev(s),c++)
    {
	if (val_int(accented(s)))
	    return val_string_n(c);
    }

    return val_string_n(c);
}
Ejemplo n.º 2
0
static const cst_val *sub_phrases(const cst_item *syl)
{
    const cst_item *s;
    int c;
    
    for (c=0,s=path_to_item(syl,"R:SylStructure.parent.R:Phrase.parent.p");
	 s && (c < CST_CONST_INT_MAX); 
	 s=item_prev(s),c++);

    return val_string_n(c);
}
Ejemplo n.º 3
0
static const cst_val *pos_in_syl(const cst_item *seg)
{
    const cst_item *s;
    int c;
    
    for (c=-1,s=item_as(seg,"SylStructure");
	 s;
	 s=item_prev(s),c++);

    return val_string_n(c);
}
Ejemplo n.º 4
0
static const cst_val *syl_onsetsize(const cst_item *syl)
{
    cst_item *d;
    int c;
    
    for (c=0,d=item_daughter(item_as(syl,"SylStructure"));
	 d;
	 d=item_next(d),c++)
    {
	if (cst_streq("+",val_string(ph_vc(d))))
	    break;
    }

    return val_string_n(c);
}
Ejemplo n.º 5
0
static const cst_val *syl_in(const cst_item *syl)
{
    /* Number of syllables since last major break */
    const cst_item *ss,*p,*fs;
    int c;

    ss = item_as(syl,"Syllable");

    fs = path_to_item(syl,"R:SylStructure.parent.R:Phrase.parent.daughter.R:SylStructure.daughter");

    for (c=0, p=ss; 
	 p && (c < CST_CONST_INT_MAX); 
	 p=item_prev(p),c++)
	if (item_equal(p,fs))
	    break;
    return val_string_n(c);
}
Ejemplo n.º 6
0
static const cst_val *ssyl_out(const cst_item *syl)
{
    /* Number of stressed syllables until last major break */
    const cst_item *ss,*p,*fs;
    int c;

    ss = item_as(syl,"Syllable");

    fs = path_to_item(syl,"R:SylStructure.parent.R:Phrase.parent.daughtern.R:SylStructure.daughtern");

    for (c=0, p=item_next(ss); 
	 p && (c < CST_CONST_INT_MAX); 
	 p=item_next(p))
    {
	if (cst_streq("1",item_feat_string(p,"stress")))
	    c++;
	if (item_equal(p,fs))
	    break;
    }
    
    return val_string_n(c);  /* its used randomly as int and float */
}
Ejemplo n.º 7
0
static const cst_val *ssyl_in(const cst_item *syl)
{
    /* Number of stressed syllables since last major break */
    const cst_item *ss,*p,*fs;
    int c;

    ss = item_as(syl,"Syllable");

    fs = path_to_item(syl,"R:SylStructure.parent.R:Phrase.parent.daughter.R:SylStructure.daughter");

    /* This should actually include the first syllable, but Festival's
       doesn't. */
    for (c=0, p=item_prev(ss); 
	 p && (!item_equal(p,fs)) && (c < CST_CONST_INT_MAX);
	 p=item_prev(p))
    {
	if (cst_streq("1",item_feat_string(p,"stress")))
	    c++;
    }
    
    return val_string_n(c);  /* its used randomly as int and float */
}
Ejemplo n.º 8
0
/* Flite_HTS_Engine_create_label: create label per phoneme */
static void Flite_HTS_Engine_create_label(Flite_HTS_Engine * f, cst_item * item, char *label)
{
   const char *p1 = ffeature_string(item, "p.p.name");
   const char *p2 = ffeature_string(item, "p.name");
   const char *p3 = ffeature_string(item, "name");
   const char *p4 = ffeature_string(item, "n.name");
   const char *p5 = ffeature_string(item, "n.n.name");

   if (strcmp(p3, "pau") == 0) {
      /* for pause */
      int a3 = ffeature_int(item, "p.R:SylStructure.parent.R:Syllable.syl_numphones");
      int c3 = ffeature_int(item, "n.R:SylStructure.parent.R:Syllable.syl_numphones");
      int d2 = ffeature_int(item, "p.R:SylStructure.parent.parent.R:Word.word_numsyls");
      int f2 = ffeature_int(item, "n.R:SylStructure.parent.parent.R:Word.word_numsyls");
      int g1 = ffeature_int(item, "p.R:SylStructure.parent.parent.R:Phrase.parent.lisp_num_syls_in_phrase");
      int g2 = ffeature_int(item, "p.R:SylStructure.parent.parent.R:Phrase.parent.lisp_num_words_in_phrase");
      int i1 = ffeature_int(item, "n.R:SylStructure.parent.parent.R:Phrase.parent.lisp_num_syls_in_phrase");
      int i2 = ffeature_int(item, "n.R:SylStructure.parent.parent.R:Phrase.parent.lisp_num_words_in_phrase");
      int j1, j2, j3;
      if (item_next(item) != NULL) {
         j1 = ffeature_int(item, "n.R:SylStructure.parent.parent.R:Phrase.parent.lisp_total_syls");
         j2 = ffeature_int(item, "n.R:SylStructure.parent.parent.R:Phrase.parent.lisp_total_words");
         j3 = ffeature_int(item, "n.R:SylStructure.parent.parent.R:Phrase.parent.lisp_total_phrases");
      } else {
         j1 = ffeature_int(item, "p.R:SylStructure.parent.parent.R:Phrase.parent.lisp_total_syls");
         j2 = ffeature_int(item, "p.R:SylStructure.parent.parent.R:Phrase.parent.lisp_total_words");
         j3 = ffeature_int(item, "p.R:SylStructure.parent.parent.R:Phrase.parent.lisp_total_phrases");
      }
      sprintf(label, "%s^%s-%s+%s=%s@x_x/A:%s_%s_%s/B:x-x-x@x-x&x-x#x-x$x-x!x-x;x-x|x/C:%s+%s+%s/D:%s_%s/E:x+x@x+x&x+x#x+x/F:%s_%s/G:%s_%s/H:x=x^x=x|x/I:%s=%s/J:%d+%d-%d",     /* */
              strcmp(p1, "0") == 0 ? "x" : p1,  /* p1 */
              strcmp(p2, "0") == 0 ? "x" : p2,  /* p2 */
              p3,               /* p3 */
              strcmp(p4, "0") == 0 ? "x" : p4,  /* p4 */
              strcmp(p5, "0") == 0 ? "x" : p5,  /* p5 */
              a3 == 0 ? "x" : ffeature_string(item, "p.R:SylStructure.parent.R:Syllable.stress"),       /* a1 */
              a3 == 0 ? "x" : ffeature_string(item, "p.R:SylStructure.parent.R:Syllable.accented"),     /* a2 */
              a3 == 0 ? "x" : val_string(val_string_n(a3)),     /* a3 */
              c3 == 0 ? "x" : ffeature_string(item, "n.R:SylStructure.parent.R:Syllable.stress"),       /* c1 */
              c3 == 0 ? "x" : ffeature_string(item, "n.R:SylStructure.parent.R:Syllable.accented"),     /* c2 */
              c3 == 0 ? "x" : val_string(val_string_n(c3)),     /* c3 */
              d2 == 0 ? "x" : ffeature_string(item, "p.R:SylStructure.parent.parent.R:Word.gpos"),      /* d1 */
              d2 == 0 ? "x" : val_string(val_string_n(d2)),     /* d2 */
              f2 == 0 ? "x" : ffeature_string(item, "n.R:SylStructure.parent.parent.R:Word.gpos"),      /* f1 */
              f2 == 0 ? "x" : val_string(val_string_n(f2)),     /* f2 */
              g1 == 0 ? "x" : val_string(val_string_n(g1)),     /* g1 */
              g2 == 0 ? "x" : val_string(val_string_n(g2)),     /* g2 */
              i1 == 0 ? "x" : val_string(val_string_n(i1)),     /* i1 */
              i2 == 0 ? "x" : val_string(val_string_n(i2)),     /* i2 */
              j1,               /* j1 */
              j2,               /* j2 */
              j3);              /* j3 */
   } else {
      /* for no pause */
      int p6 = ffeature_int(item, "R:SylStructure.pos_in_syl") + 1;
      int a3 = ffeature_int(item, "R:SylStructure.parent.R:Syllable.p.syl_numphones");
      int b3 = ffeature_int(item, "R:SylStructure.parent.R:Syllable.syl_numphones");
      int b4 = ffeature_int(item, "R:SylStructure.parent.R:Syllable.pos_in_word") + 1;
      int b12 = ffeature_int(item, "R:SylStructure.parent.R:Syllable.lisp_distance_to_p_stress");
      int b13 = ffeature_int(item, "R:SylStructure.parent.R:Syllable.lisp_distance_to_n_stress");
      int b14 = ffeature_int(item, "R:SylStructure.parent.R:Syllable.lisp_distance_to_p_accent");
      int b15 = ffeature_int(item, "R:SylStructure.parent.R:Syllable.lisp_distance_to_n_accent");
      int c3 = ffeature_int(item, "R:SylStructure.parent.R:Syllable.n.syl_numphones");
      int d2 = ffeature_int(item, "R:SylStructure.parent.parent.R:Word.p.word_numsyls");
      int e2 = ffeature_int(item, "R:SylStructure.parent.parent.R:Word.word_numsyls");
      int e3 = ffeature_int(item, "R:SylStructure.parent.parent.R:Word.pos_in_phrase") + 1;
      int e7 = ffeature_int(item, "R:SylStructure.parent.parent.R:Word.lisp_distance_to_p_content");
      int e8 = ffeature_int(item, "R:SylStructure.parent.parent.R:Word.lisp_distance_to_n_content");
      int f2 = ffeature_int(item, "R:SylStructure.parent.parent.R:Word.n.word_numsyls");
      int g1 = ffeature_int(item, "R:SylStructure.parent.parent.R:Phrase.parent.p.lisp_num_syls_in_phrase");
      int g2 = ffeature_int(item, "R:SylStructure.parent.parent.R:Phrase.parent.p.lisp_num_words_in_phrase");
      int h2 = ffeature_int(item, "R:SylStructure.parent.parent.R:Phrase.parent.lisp_num_words_in_phrase");
      int h3 = ffeature_int(item, "R:SylStructure.parent.R:Syllable.sub_phrases") + 1;
      const char *h5 = ffeature_string(item, "R:SylStructure.parent.parent.R:Phrase.parent.daughtern.R:SylStructure.daughtern.endtone");
      int i1 = ffeature_int(item, "R:SylStructure.parent.parent.R:Phrase.parent.n.lisp_num_syls_in_phrase");
      int i2 = ffeature_int(item, "R:SylStructure.parent.parent.R:Phrase.parent.n.lisp_num_words_in_phrase");
      int j1 = ffeature_int(item, "R:SylStructure.parent.parent.R:Phrase.parent.lisp_total_syls");
      int j2 = ffeature_int(item, "R:SylStructure.parent.parent.R:Phrase.parent.lisp_total_words");
      int j3 = ffeature_int(item, "R:SylStructure.parent.parent.R:Phrase.parent.lisp_total_phrases");
      sprintf(label, "%s^%s-%s+%s=%s@%d_%d/A:%s_%s_%s/B:%d-%d-%d@%d-%d&%d-%d#%d-%d$%d-%d!%s-%s;%s-%s|%s/C:%s+%s+%s/D:%s_%s/E:%s+%d@%d+%d&%d+%d#%s+%s/F:%s_%s/G:%s_%s/H:%d=%d^%d=%d|%s/I:%s=%s/J:%d+%d-%d",      /* */
              strcmp(p1, "0") == 0 ? "x" : p1,  /* p1 */
              strcmp(p2, "0") == 0 ? "x" : p2,  /* p2 */
              p3,               /* p3 */
              strcmp(p4, "0") == 0 ? "x" : p4,  /* p4 */
              strcmp(p5, "0") == 0 ? "x" : p5,  /* p5 */
              p6,               /* p6 */
              b3 - p6 + 1,      /* p7 */
              a3 == 0 ? "x" : ffeature_string(item, "R:SylStructure.parent.R:Syllable.p.stress"),       /* a1 */
              a3 == 0 ? "x" : ffeature_string(item, "R:SylStructure.parent.R:Syllable.p.accented"),     /* a2 */
              a3 == 0 ? "x" : val_string(val_string_n(a3)),     /* a3 */
              ffeature_int(item, "R:SylStructure.parent.R:Syllable.stress"),    /* b1 */
              ffeature_int(item, "R:SylStructure.parent.R:Syllable.accented"),  /* b2 */
              b3,               /* b3 */
              b4,               /* b4 */
              e2 - b4 + 1,      /* b5 */
              ffeature_int(item, "R:SylStructure.parent.R:Syllable.syl_in") + 1,        /* b6 */
              ffeature_int(item, "R:SylStructure.parent.R:Syllable.syl_out") + 1,       /* b7 */
              ffeature_int(item, "R:SylStructure.parent.R:Syllable.ssyl_in"),   /* b8 */
              ffeature_int(item, "R:SylStructure.parent.R:Syllable.ssyl_out"),  /* b9 */
              ffeature_int(item, "R:SylStructure.parent.R:Syllable.asyl_in"),   /* b10 */
              ffeature_int(item, "R:SylStructure.parent.R:Syllable.asyl_out"),  /* b11 */
              b12 == 0 ? "x" : val_string(val_string_n(b12)),   /* b12 */
              b13 == 0 ? "x" : val_string(val_string_n(b13)),   /* b13 */
              b14 == 0 ? "x" : val_string(val_string_n(b14)),   /* b14 */
              b15 == 0 ? "x" : val_string(val_string_n(b15)),   /* b15 */
              ffeature_string(item, "R:SylStructure.parent.R:Syllable.syl_vowel"),      /* b16 */
              c3 == 0 ? "x" : ffeature_string(item, "R:SylStructure.parent.R:Syllable.n.stress"),       /* c1 */
              c3 == 0 ? "x" : ffeature_string(item, "R:SylStructure.parent.R:Syllable.n.accented"),     /* c2 */
              c3 == 0 ? "x" : val_string(val_string_n(c3)),     /* c3 */
              d2 == 0 ? "x" : ffeature_string(item, "R:SylStructure.parent.parent.R:Word.p.gpos"),      /* d1 */
              d2 == 0 ? "x" : val_string(val_string_n(d2)),     /* d2 */
              ffeature_string(item, "R:SylStructure.parent.parent.R:Word.gpos"),        /* e1 */
              e2,               /* e2 */
              e3,               /* e3 */
              h2 - e3 + 1,      /* e4 */
              ffeature_int(item, "R:SylStructure.parent.parent.R:Word.content_words_in"),       /* e5 */
              ffeature_int(item, "R:SylStructure.parent.parent.R:Word.content_words_out"),      /* e6 */
              e7 == 0 ? "x" : val_string(val_string_n(e7)),     /* e7 */
              e8 == 0 ? "x" : val_string(val_string_n(e8)),     /* e8 */
              f2 == 0 ? "x" : ffeature_string(item, "R:SylStructure.parent.parent.R:Word.n.gpos"),      /* f1 */
              f2 == 0 ? "x" : val_string(val_string_n(f2)),     /* f2 */
              g1 == 0 ? "x" : val_string(val_string_n(g1)),     /* g1 */
              g2 == 0 ? "x" : val_string(val_string_n(g2)),     /* g2 */
              ffeature_int(item, "R:SylStructure.parent.parent.R:Phrase.parent.lisp_num_syls_in_phrase"),       /* h1 */
              h2,               /* h2 */
              h3,               /* h3 */
              j3 - h3 + 1,      /* h4 */
              strcmp(h5, "0") == 0 ? "NONE" : h5,       /* h5 */
              i1 == 0 ? "x" : val_string(val_string_n(i1)),     /* i1 */
              i2 == 0 ? "x" : val_string(val_string_n(i2)),     /* i2 */
              j1,               /* j1 */
              j2,               /* j2 */
              j3);              /* j3 */
   }
}