Edinburgh Speech Tools  2.4-release
 All Classes Functions Variables Typedefs Enumerations Enumerator Friends Pages
EST_tilt.h
1 /*************************************************************************/
2 /* */
3 /* Centre for Speech Technology Research */
4 /* University of Edinburgh, UK */
5 /* Copyright (c) 1996 */
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 /* THE UNIVERSITY OF EDINBURGH 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 THE UNIVERSITY OF EDINBURGH 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 /* Author : Paul Taylor */
34 /* Date : February 1996 */
35 /*-----------------------------------------------------------------------*/
36 /* Intonational Event Include file */
37 /* */
38 /*=======================================================================*/
39 #ifndef __RFC_H__
40 #define __RFC_H__
41 
42 #include "ling_class/EST_Relation.h"
43 #include "EST_util_class.h"
44 #include "EST_speech_class.h"
45 #include "EST_Event.h"
46 
47 /**@name Tilt functions
48 
49 Functions for:
50 <itemizedlist>
51 <listitem><para>Generating RFC and Tilt parameters from F0 contours</para></listitem>
52 <listitem><para>Converting RFC to Tilt parameters and vice-versa</para></listitem>
53 <listitem><para>Synthesizing F0 contours from RFC and Tilt events</para></listitem>
54 </itemizedlist>
55 
56 */
57 //@{
58 
59 /** Fill op with sensible default parameters for RFC analysis.
60  */
61 void default_rfc_params(EST_Features &op);
62 
63 /** Produce a set of RFC parameterized events given approximate event
64  boundaries and a smoothed F0 contour. See <xref
65  linkend="ov-rfc-analysis"> for a description of this process.
66 
67  @param f0: Smoothed continuous F0 contour. An error will occur
68  if any unvoiced regions are detected in the contour. Use the
69  function smooth_pda to smooth and interpolate a normal contour.
70  @param ev_list: list of events, each containing approximate start
71  and end times of the events. On completion each event in this list
72  will have a set of RFC parameters.
73  @param op: parameters used to control analysis process.
74 
75  */
76 
77 void rfc_analysis(EST_Track &fz, EST_Relation &event_list, EST_Features &op);
78 /** Fill op with sensible default parameters for RFC analysis
79  */
80 
81 void tilt_analysis(EST_Track &fz, EST_Relation &event_list, EST_Features &op);
82 /** Fill op with sensible default parameters for RFC analysis
83  */
84 
85 
86 void fill_rise_fall_values(EST_Track &fz, float amp, float start_f0);
87 
88 /** Generate an F0 contour given a list RFC events.
89 
90 @param f0: Generated F0 contour
91 @param ev_list: list of events, each containing a set of RFC parameters
92 @param f_shift: frame shift in seconds of the generated contour
93 @param no_conn: Do not join events with straight lines if set to 1
94 */
95 
96 void rfc_synthesis(EST_Track &f0, EST_Relation &ev_list,
97  float f_shift, int no_conn);
98 
99 /** Generate an F0 contour given a list Tilt events.
100 
101 This function simply calls \Ref{tilt_to_rfc} followed by \Ref{rfc_synthesis}.
102 
103 @param f0: Generated F0 contour
104 @param ev_list: list of events, each containing a set of Tilt parameters
105 @param f_shift: frame shift in seconds of the generated contour
106 @param no_conn: Do not join events with straight lines if set to 1
107 */
108 
109 void tilt_synthesis(EST_Track &track, EST_Relation &ev_list,
110  float f_shift, int no_conn);
111 
112 /** Convert a single set of local tilt parameters to local RFC parameters.
113 <parameter>amp</parameter>
114 
115 @param tilt: input tilt parameters, named <parameter>amp</parameter>, <parameter>dur</parameter> and <parameter>tilt</parameter>
116 @param rfc: output RFC parameters, name <parameter>rise_amp</parameter>, <parameter>fall_amp</parameter>, <parameter>rise_dur</parameter> and <parameter>fall_dur</parameter>
117 
118 */
119 void tilt_to_rfc(EST_Features &tilt, EST_Features &rfc);
120 
121 /** Convert a single set of local RFC parameters to local tilt
122 parameters. See <xref linkend="ov-rfc-to-tilt"> for a description of
123 how this is performed.
124 
125 <parameter>
126 @param rfc: input RFC parameters, named <parameter> rise_amp</parameter>, <parameter>fall_amp</parameter>, <parameter>rise_dur</parameter> and<parameter> fall_dur</parameter>
127 @param tilt: output tilt parameters, named <parameter>amp</parameter>, <parameter>dur</parameter> and <parameter>tilt</parameter> */
128 void rfc_to_tilt(EST_Features &rfc, EST_Features &tilt);
129 
130 /** For each tilt events in ev_tilt, produce a set of RFC parameters.
131  The tilt parameters are stored as the following features in the event:
132 
133 <ITEMIZEDLIST MARK="bullet" SPACING="compact">
134 <LISTITEM>tilt.amp
135 <LISTITEM>tilt.dur
136 <LISTITEM>tilt.tilt
137 </itemizedlist>
138 
139  A set of features with the following names are created:
140 
141 <ITEMIZEDLIST MARK="bullet" SPACING="compact">
142 <LISTITEM>rfc.rise_amp</listitem>
143 <LISTITEM>rfc.rise_dur</listitem>
144 <LISTITEM>rfc.fall_amp</listitem>
145 <LISTITEM>rfc.fall_dur</listitem>
146 </itemizedlist>
147 
148  The original tilt features are not deleted.
149 
150 */
151 void tilt_to_rfc(EST_Relation &ev_tilt);
152 
153 /** For each tilt events in ev_rfc, produce a set of Tiltparameters.
154  The RFC parameters are stored as the following features in the event:
155 
156 <ITEMIZEDLIST MARK="bullet" SPACING="compact">
157 <LISTITEM>rfc.rise_amp</listitem>
158 <LISTITEM>rfc.rise_dur</listitem>
159 <LISTITEM>rfc.fall_amp</listitem>
160 <LISTITEM>rfc.fall_dur</listitem>
161 </itemizedlist>
162 
163  A set of features with the following names are created:
164 
165 <ITEMIZEDLIST MARK="bullet" SPACING="compact">
166 <LISTITEM>tilt.amp
167 <LISTITEM>tilt.dur
168 <LISTITEM>tilt.tilt
169 </itemizedlist>
170 
171  The original RFC features are not deleted.
172 
173 */
174 void rfc_to_tilt(EST_Relation &ev_rfc);
175 
176 int validate_rfc_stream(EST_Relation &ev);
177 void fill_rfc_types(EST_Relation &ev);
178 
179 //@}
180 
181 
182 
183 #endif /* RFC */