Edinburgh Speech Tools 2.4-release
 
Loading...
Searching...
No Matches
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
49Functions 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 */
61void 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
77void rfc_analysis(EST_Track &fz, EST_Relation &event_list, EST_Features &op);
78/** Fill op with sensible default parameters for RFC analysis
79 */
80
81void 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
86void 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
96void 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
101This 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
109void 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*/
119void tilt_to_rfc(EST_Features &tilt, EST_Features &rfc);
120
121/** Convert a single set of local RFC parameters to local tilt
122parameters. See <xref linkend="ov-rfc-to-tilt"> for a description of
123how 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> */
128void 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*/
151void 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*/
174void rfc_to_tilt(EST_Relation &ev_rfc);
175
176int validate_rfc_stream(EST_Relation &ev);
177void fill_rfc_types(EST_Relation &ev);
178
179//@}
180
181
182
183#endif /* RFC */