1 /*************************************************************************/
2 /* */
3 /* Language Technologies Institute */
4 /* Carnegie Mellon University */
5 /* Copyright (c) 2013 */
6 /* All Rights Reserved. */
7 /* */
8 /* Permission is hereby granted, free of charge, to use and distribute */
9 /* this software and its documentation without restriction, including */
10 /* without limitation the rights to use, copy, modify, merge, publish, */
11 /* distribute, sublicense, and/or sell copies of this work, and to */
12 /* permit persons to whom this work is furnished to do so, subject to */
13 /* the following conditions: */
14 /* 1. The code must retain the above copyright notice, this list of */
15 /* conditions and the following disclaimer. */
16 /* 2. Any modifications must be clearly marked as such. */
17 /* 3. Original authors' names are not deleted. */
18 /* 4. The authors' names are not used to endorse or promote products */
19 /* derived from this software without specific prior written */
20 /* permission. */
21 /* */
22 /* CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK */
23 /* DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING */
24 /* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT */
25 /* SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE */
26 /* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES */
27 /* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN */
28 /* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, */
29 /* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF */
30 /* THIS SOFTWARE. */
31 /* */
32 /*************************************************************************/
33 /* */
34 /* LANGNAME language support */
35 /* */
36 /*************************************************************************/
37 #include "flite.h"
38 #include "cst_val.h"
39 #include "cst_voice.h"
40 #include "cst_lexicon.h"
41 #include "cst_ffeatures.h"
42 #include "cmu_LANGNAME_lang.h"
43
cmu_LANGNAME_tokentowords(cst_item * token,const char * name)44 static cst_val *cmu_LANGNAME_tokentowords(cst_item *token, const char *name)
45 {
46 /* Return list of words that expand token/name */
47 cst_val *r;
48
49 /* printf("token_name %s name %s\n",item_name(token),name); */
50
51 if (item_feat_present(token,"phones"))
52 return cons_val(string_val(name),NULL);
53
54 #if 0
55 if (item_feat_present(token,"nsw"))
56 nsw = item_feat_string(token,"nsw");
57
58 utt = item_utt(token);
59 lex = val_lexicon(feat_val(utt->features,"lexicon"));
60 #endif
61
62 if (cst_strlen(name) > 0)
63 r = cons_val(string_val(name),0);
64 else
65 r = NULL;
66
67 return r;
68 }
69
cmu_LANGNAME_lang_init(cst_voice * v)70 void cmu_LANGNAME_lang_init(cst_voice *v)
71 {
72 /* Set LANGNAME language stuff */
73 feat_set_string(v->features,"language","cmu_LANGNAME_lang");
74
75 /* utterance break function */
76 feat_set(v->features,"utt_break",breakfunc_val(&default_utt_break));
77
78 /* Phoneset -- need to get this from voice */
79 feat_set(v->features,"phoneset",phoneset_val(&cmu_LANGNAME_phoneset));
80 feat_set_string(v->features,"silence",cmu_LANGNAME_phoneset.silence);
81
82 /* Get information from voice and add to lexicon */
83
84 /* Text analyser -- whitespace defaults */
85 feat_set_string(v->features,"text_whitespace",
86 cst_ts_default_whitespacesymbols);
87 feat_set_string(v->features,"text_postpunctuation",
88 cst_ts_default_prepunctuationsymbols);
89 feat_set_string(v->features,"text_prepunctuation",
90 cst_ts_default_postpunctuationsymbols);
91 feat_set_string(v->features,"text_singlecharsymbols",
92 cst_ts_default_singlecharsymbols);
93
94 /* Tokenization tokenization function */
95 feat_set(v->features,"tokentowords_func",itemfunc_val(&cmu_LANGNAME_tokentowords));
96 /* Pos tagger (gpos)/induced pos */
97 /* Phrasing */
98 /* feat_set(v->features,"phrasing_cart",cart_val(&cmu_LANGNAME_phrasing_cart)); */
99 /* Intonation, Duration and F0 -- part of cg */
100 feat_set_string(v->features,"no_intonation_accent_model","1");
101
102 /* Default ffunctions (required) */
103 basic_ff_register(v->ffunctions);
104
105 return;
106 }
107