root/trunk/extensions_voxforge.conf

Revision 36, 31.6 KB (checked in by trevarthan, 5 years ago)

Missed a spot. Ugh.

Line 
1; extensions_voxforge.conf - An IVR to automatically recording transcribed audio for Voxforge.org
2; Copyright (C) 2007  Jesse D. Guardiani
3;
4; This program is free software; you can redistribute it and/or
5; modify it under the terms of the GNU General Public License
6; as published by the Free Software Foundation; either version 2
7; of the License, or (at your option) any later version.
8;
9; This program is distributed in the hope that it will be useful,
10; but WITHOUT ANY WARRANTY; without even the implied warranty of
11; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12; GNU General Public License for more details.
13;
14; You should have received a copy of the GNU General Public License
15; along with this program; if not, write to the Free Software
16; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17; ---------------------------------------------------------------------------------
18;
19; note: I misspell 'record' as 'reecord' on purpose because flite mispronounces it.
20;       I also use periods (.) instead of commas (,) because flite doesn't pause long enough on commas.
21
22[custom-voxforge]
23exten => s,1,Set(ran-init=0)
24exten => s,2,Set(ran-instructions=0)
25exten => s,3,Set(prompts-dir=/voxforge-code/prompts)
26exten => s,4,Set(menu-dir=${prompts-dir}/audio/menu)
27;exten => s,5,Flite("Welcome to the Vox Forge automated reecording system!")
28exten => s,5,Answer()
29exten => s,6,Wait(2)
30exten => s,7,Playback(${menu-dir}/welcome)
31exten => s,8,Gosub(sub-voxforge-channel-limit|s|1)
32exten => s,9,Goto(custom-voxforge-license|s|1)
33exten => i,1,Goto(s|2)
34exten => h,1,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
35
36[custom-voxforge-license]
37;exten => s,1,Flite("To use this system. You must agree to have your voice reecorded.")
38;exten => s,2,Flite("And licensed under the G N U ... G P L.")
39;exten => s,3,Flite("With copyright assigned to the Free Software Foundation.")
40;exten => s,4,Flite('Press 1 if you agree. Press 2. Or hang up now. If you do not agree. Or do not understand. Press 3 for more information about the G N U ... G P L license.'|123)
41exten => s,1,Playback(${menu-dir}/license-agree-info)
42exten => s,2,Background(${menu-dir}/license-agree-prompt)
43exten => s,3,WaitExten(10)
44exten => 1,1,Goto(custom-voxforge-gender|s|1)
45exten => 2,1,Playback(vm-goodbye)
46exten => 2,2,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
47exten => 2,3,Hangup()
48;exten => 3,1,Flite("The G N U ... G P L. or G N U... General Public License. refers to a type of Open Source license. Copyright protects a creator's right to control copies and changes to A work. By pressing 1... you agree... to give away the Copyright of your speech submission to the Free Software Foundation. And license your submission under the G P L. The G P L protects everyone's right to copy and make changes to your submission. For more information about the G P L. please go to www dot g n u dot o r g"|123)
49exten => 3,1,Background(${menu-dir}/license-about)
50exten => 3,2,Goto(s|2)
51;exten => i,1,Flite('Sorry. that is not a valid choice.'|1234567890)
52exten => i,1,Background(${menu-dir}/not-a-valid-choice)
53exten => i,2,Goto(s|1)
54exten => h,1,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
55
56[custom-voxforge-gender]
57;exten => s,1,Flite("Please press 1 if you are a male. Press 2 if you are a female."|12)
58exten => s,1,Background(${menu-dir}/gender)
59exten => s,2,WaitExten(10)
60exten => 1,1,Setvar(gender=male)
61exten => 1,2,Goto(custom-voxforge-gender-confirm|s|1)
62exten => 2,1,Setvar(gender=female)
63exten => 2,2,Goto(custom-voxforge-gender-confirm|s|1)
64;exten => i,1,Flite('Sorry. that is not a valid choice.'|1234567890)
65exten => i,1,Background(${menu-dir}/not-a-valid-choice)
66exten => i,2,Goto(s|1)
67exten => h,1,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
68
69[custom-voxforge-gender-confirm]
70;exten => s,1,Flite('OK, you chose ${gender}. Press 1 if this is correct. Press 2 to try again.'|12)
71exten => s,1,GotoIf($[${gender} = 'male']?2:4)
72exten => s,2,Background(${menu-dir}/chose-male)
73exten => s,3,Goto(s|5)
74exten => s,4,Background(${menu-dir}/chose-female)
75exten => s,5,Background(${menu-dir}/1-correct-2-try-again)
76exten => s,6,WaitExten(10)
77exten => 1,1,Goto(custom-voxforge-agerange|s|1)
78exten => 2,1,Goto(custom-voxforge-gender|s|1)
79;exten => i,1,Flite('Sorry. that is not a valid choice.'|1234567890)
80exten => i,1,Background(${menu-dir}/not-a-valid-choice)
81exten => i,2,Goto(s|1)
82exten => h,1,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
83
84[custom-voxforge-agerange]
85;exten => s,1,Flite('Please press 1 if you are a youth. Press 2 if you are an adult. Or press 3 if you are a senior.'|123)
86exten => s,1,Background(${menu-dir}/agerange)
87exten => s,2,WaitExten(10)
88exten => 1,1,Setvar(agerange=youth)
89exten => 1,2,Goto(custom-voxforge-agerange-confirm|s|1)
90exten => 2,1,Setvar(agerange=adult)
91exten => 2,2,Goto(custom-voxforge-agerange-confirm|s|1)
92exten => 3,1,Setvar(agerange=senior)
93exten => 3,2,Goto(custom-voxforge-agerange-confirm|s|1)
94;exten => i,1,Flite('Sorry. that is not a valid choice.'|1234567890)
95exten => i,1,Background(${menu-dir}/not-a-valid-choice)
96exten => i,2,Goto(s|1)
97exten => h,1,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
98
99[custom-voxforge-agerange-confirm]
100;exten => s,1,Flite('OK, you chose ${agerange}. Press 1 if this is correct. Press 2 to try again.'|12)
101exten => s,1,GotoIf($[${agerange} = 'youth']?2:4)
102exten => s,2,Background(${menu-dir}/chose-youth)
103exten => s,3,Goto(s|8)
104exten => s,4,GotoIf($[${agerange} = 'adult']?5:7)
105exten => s,5,Background(${menu-dir}/chose-adult)
106exten => s,6,Goto(s|8)
107exten => s,7,Background(${menu-dir}/chose-senior)
108exten => s,8,Background(${menu-dir}/1-correct-2-try-again)
109exten => s,9,WaitExten(10)
110exten => 1,1,Set(num-complete=0)
111exten => 1,2,Set(num-complete-this-round=0)
112exten => 1,3,Goto(custom-voxforge-selectscript|s|1)
113exten => 2,1,Goto(custom-voxforge-agerange|s|1)
114;exten => i,1,Flite('Sorry. that is not a valid choice.'|1234567890)
115exten => i,1,Background(${menu-dir}/not-a-valid-choice)
116exten => i,2,Goto(s|1)
117exten => h,1,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
118
119[custom-voxforge-selectscript]
120exten => s,1,Set(max-script-num=48)
121exten => s,2,Gosub(sub-voxforge-get-script-num|s|1)
122exten => s,3,Gosub(sub-voxforge-increment-script-num|s|1)
123exten => s,4,Goto(${script-num}|1)
124
125exten =>  1,1,Goto(custom-voxforge-vf3-1|s|1)
126exten =>  2,1,Goto(custom-voxforge-vf3-2|s|1)
127exten =>  3,1,Goto(custom-voxforge-vf3-3|s|1)
128exten =>  4,1,Goto(custom-voxforge-vf3-4|s|1)
129exten =>  5,1,Goto(custom-voxforge-vf3-5|s|1)
130exten =>  6,1,Goto(custom-voxforge-vf3-6|s|1)
131exten =>  7,1,Goto(custom-voxforge-vf3-7|s|1)
132exten =>  8,1,Goto(custom-voxforge-vf3-8|s|1)
133
134exten =>  9,1,Goto(custom-voxforge-vf4-1|s|1)
135exten => 10,1,Goto(custom-voxforge-vf4-2|s|1)
136exten => 11,1,Goto(custom-voxforge-vf4-3|s|1)
137exten => 12,1,Goto(custom-voxforge-vf4-4|s|1)
138exten => 13,1,Goto(custom-voxforge-vf4-5|s|1)
139exten => 14,1,Goto(custom-voxforge-vf4-6|s|1)
140exten => 15,1,Goto(custom-voxforge-vf4-7|s|1)
141exten => 16,1,Goto(custom-voxforge-vf4-8|s|1)
142
143exten => 17,1,Goto(custom-voxforge-vf5-1|s|1)
144exten => 18,1,Goto(custom-voxforge-vf5-2|s|1)
145exten => 19,1,Goto(custom-voxforge-vf5-3|s|1)
146exten => 20,1,Goto(custom-voxforge-vf5-4|s|1)
147exten => 21,1,Goto(custom-voxforge-vf5-5|s|1)
148exten => 22,1,Goto(custom-voxforge-vf5-6|s|1)
149exten => 23,1,Goto(custom-voxforge-vf5-7|s|1)
150exten => 24,1,Goto(custom-voxforge-vf5-8|s|1)
151
152exten => 25,1,Goto(custom-voxforge-vf6-1|s|1)
153exten => 26,1,Goto(custom-voxforge-vf6-2|s|1)
154exten => 27,1,Goto(custom-voxforge-vf6-3|s|1)
155exten => 28,1,Goto(custom-voxforge-vf6-4|s|1)
156exten => 29,1,Goto(custom-voxforge-vf6-5|s|1)
157exten => 30,1,Goto(custom-voxforge-vf6-6|s|1)
158exten => 31,1,Goto(custom-voxforge-vf6-7|s|1)
159exten => 32,1,Goto(custom-voxforge-vf6-8|s|1)
160
161exten => 33,1,Goto(custom-voxforge-vf7-1|s|1)
162exten => 34,1,Goto(custom-voxforge-vf7-2|s|1)
163exten => 35,1,Goto(custom-voxforge-vf7-3|s|1)
164exten => 36,1,Goto(custom-voxforge-vf7-4|s|1)
165exten => 37,1,Goto(custom-voxforge-vf7-5|s|1)
166exten => 38,1,Goto(custom-voxforge-vf7-6|s|1)
167exten => 39,1,Goto(custom-voxforge-vf7-7|s|1)
168exten => 40,1,Goto(custom-voxforge-vf7-8|s|1)
169
170exten => 41,1,Goto(custom-voxforge-vf8-1|s|1)
171exten => 42,1,Goto(custom-voxforge-vf8-2|s|1)
172exten => 43,1,Goto(custom-voxforge-vf8-3|s|1)
173exten => 44,1,Goto(custom-voxforge-vf8-4|s|1)
174exten => 45,1,Goto(custom-voxforge-vf8-5|s|1)
175exten => 46,1,Goto(custom-voxforge-vf8-6|s|1)
176exten => 47,1,Goto(custom-voxforge-vf8-7|s|1)
177exten => 48,1,Goto(custom-voxforge-vf8-8|s|1)
178
179exten => i,1,Goto(s|1)
180
181
182[custom-voxforge-vf3-1]
183include => custom-voxforge-phoneme-explain
184exten => 50,1,Macro(voxforge-hrecord,'vf3-01')
185exten => 50,2,Macro(voxforge-hrecord,'vf3-02')
186exten => 50,3,Macro(voxforge-hrecord,'vf3-03')
187exten => 50,4,Macro(voxforge-hrecord,'vf3-04')
188exten => 50,5,Macro(voxforge-hrecord,'vf3-05')
189
190[custom-voxforge-vf3-2]
191include => custom-voxforge-phoneme-explain
192exten => 50,1,Macro(voxforge-hrecord,'vf3-06')
193exten => 50,2,Macro(voxforge-hrecord,'vf3-07')
194exten => 50,3,Macro(voxforge-hrecord,'vf3-08')
195exten => 50,4,Macro(voxforge-hrecord,'vf3-09')
196exten => 50,5,Macro(voxforge-hrecord,'vf3-10')
197
198[custom-voxforge-vf3-3]
199include => custom-voxforge-phoneme-explain
200exten => 50,1,Macro(voxforge-hrecord,'vf3-11')
201exten => 50,2,Macro(voxforge-hrecord,'vf3-12')
202exten => 50,3,Macro(voxforge-hrecord,'vf3-13')
203exten => 50,4,Macro(voxforge-hrecord,'vf3-14')
204exten => 50,5,Macro(voxforge-hrecord,'vf3-15')
205
206[custom-voxforge-vf3-4]
207include => custom-voxforge-phoneme-explain
208exten => 50,1,Macro(voxforge-hrecord,'vf3-16')
209exten => 50,2,Macro(voxforge-hrecord,'vf3-17')
210exten => 50,3,Macro(voxforge-hrecord,'vf3-18')
211exten => 50,4,Macro(voxforge-hrecord,'vf3-19')
212exten => 50,5,Macro(voxforge-hrecord,'vf3-20')
213
214[custom-voxforge-vf3-5]
215include => custom-voxforge-phoneme-explain
216exten => 50,1,Macro(voxforge-hrecord,'vf3-21')
217exten => 50,2,Macro(voxforge-hrecord,'vf3-22')
218exten => 50,3,Macro(voxforge-hrecord,'vf3-23')
219exten => 50,4,Macro(voxforge-hrecord,'vf3-24')
220exten => 50,5,Macro(voxforge-hrecord,'vf3-25')
221
222[custom-voxforge-vf3-6]
223include => custom-voxforge-phoneme-explain
224exten => 50,1,Macro(voxforge-hrecord,'vf3-26')
225exten => 50,2,Macro(voxforge-hrecord,'vf3-27')
226exten => 50,3,Macro(voxforge-hrecord,'vf3-28')
227exten => 50,4,Macro(voxforge-hrecord,'vf3-29')
228exten => 50,5,Macro(voxforge-hrecord,'vf3-30')
229
230[custom-voxforge-vf3-7]
231include => custom-voxforge-phoneme-explain
232exten => 50,1,Macro(voxforge-hrecord,'vf3-31')
233exten => 50,2,Macro(voxforge-hrecord,'vf3-32')
234exten => 50,3,Macro(voxforge-hrecord,'vf3-33')
235exten => 50,4,Macro(voxforge-hrecord,'vf3-34')
236exten => 50,5,Macro(voxforge-hrecord,'vf3-35')
237
238[custom-voxforge-vf3-8]
239include => custom-voxforge-phoneme-explain
240exten => 50,1,Macro(voxforge-hrecord,'vf3-36')
241exten => 50,2,Macro(voxforge-hrecord,'vf3-37')
242exten => 50,3,Macro(voxforge-hrecord,'vf3-38')
243exten => 50,4,Macro(voxforge-hrecord,'vf3-39')
244exten => 50,5,Macro(voxforge-hrecord,'vf3-40')
245
246
247[custom-voxforge-vf4-1]
248include => custom-voxforge-phoneme-explain
249exten => 50,1,Macro(voxforge-hrecord,'vf4-01')
250exten => 50,2,Macro(voxforge-hrecord,'vf4-02')
251exten => 50,3,Macro(voxforge-hrecord,'vf4-03')
252exten => 50,4,Macro(voxforge-hrecord,'vf4-04')
253exten => 50,5,Macro(voxforge-hrecord,'vf4-05')
254
255[custom-voxforge-vf4-2]
256include => custom-voxforge-phoneme-explain
257exten => 50,1,Macro(voxforge-hrecord,'vf4-06')
258exten => 50,2,Macro(voxforge-hrecord,'vf4-07')
259exten => 50,3,Macro(voxforge-hrecord,'vf4-08')
260exten => 50,4,Macro(voxforge-hrecord,'vf4-09')
261exten => 50,5,Macro(voxforge-hrecord,'vf4-10')
262
263[custom-voxforge-vf4-3]
264include => custom-voxforge-phoneme-explain
265exten => 50,1,Macro(voxforge-hrecord,'vf4-11')
266exten => 50,2,Macro(voxforge-hrecord,'vf4-12')
267exten => 50,3,Macro(voxforge-hrecord,'vf4-13')
268exten => 50,4,Macro(voxforge-hrecord,'vf4-14')
269exten => 50,5,Macro(voxforge-hrecord,'vf4-15')
270
271[custom-voxforge-vf4-4]
272include => custom-voxforge-phoneme-explain
273exten => 50,1,Macro(voxforge-hrecord,'vf4-16')
274exten => 50,2,Macro(voxforge-hrecord,'vf4-17')
275exten => 50,3,Macro(voxforge-hrecord,'vf4-18')
276exten => 50,4,Macro(voxforge-hrecord,'vf4-19')
277exten => 50,5,Macro(voxforge-hrecord,'vf4-20')
278
279[custom-voxforge-vf4-5]
280include => custom-voxforge-phoneme-explain
281exten => 50,1,Macro(voxforge-hrecord,'vf4-21')
282exten => 50,2,Macro(voxforge-hrecord,'vf4-22')
283exten => 50,3,Macro(voxforge-hrecord,'vf4-23')
284exten => 50,4,Macro(voxforge-hrecord,'vf4-24')
285exten => 50,5,Macro(voxforge-hrecord,'vf4-25')
286
287[custom-voxforge-vf4-6]
288include => custom-voxforge-phoneme-explain
289exten => 50,1,Macro(voxforge-hrecord,'vf4-26')
290exten => 50,2,Macro(voxforge-hrecord,'vf4-27')
291exten => 50,3,Macro(voxforge-hrecord,'vf4-28')
292exten => 50,4,Macro(voxforge-hrecord,'vf4-29')
293exten => 50,5,Macro(voxforge-hrecord,'vf4-30')
294
295[custom-voxforge-vf4-7]
296include => custom-voxforge-phoneme-explain
297exten => 50,1,Macro(voxforge-hrecord,'vf4-31')
298exten => 50,2,Macro(voxforge-hrecord,'vf4-32')
299exten => 50,3,Macro(voxforge-hrecord,'vf4-33')
300exten => 50,4,Macro(voxforge-hrecord,'vf4-34')
301exten => 50,5,Macro(voxforge-hrecord,'vf4-35')
302
303[custom-voxforge-vf4-8]
304include => custom-voxforge-phoneme-explain
305exten => 50,1,Macro(voxforge-hrecord,'vf4-36')
306exten => 50,2,Macro(voxforge-hrecord,'vf4-37')
307exten => 50,3,Macro(voxforge-hrecord,'vf4-38')
308exten => 50,4,Macro(voxforge-hrecord,'vf4-39')
309exten => 50,5,Macro(voxforge-hrecord,'vf4-40')
310
311
312[custom-voxforge-vf5-1]
313include => custom-voxforge-phoneme-explain
314exten => 50,1,Macro(voxforge-hrecord,'vf5-01')
315exten => 50,2,Macro(voxforge-hrecord,'vf5-02')
316exten => 50,3,Macro(voxforge-hrecord,'vf5-03')
317exten => 50,4,Macro(voxforge-hrecord,'vf5-04')
318exten => 50,5,Macro(voxforge-hrecord,'vf5-05')
319
320[custom-voxforge-vf5-2]
321include => custom-voxforge-phoneme-explain
322exten => 50,1,Macro(voxforge-hrecord,'vf5-06')
323exten => 50,2,Macro(voxforge-hrecord,'vf5-07')
324exten => 50,3,Macro(voxforge-hrecord,'vf5-08')
325exten => 50,4,Macro(voxforge-hrecord,'vf5-09')
326exten => 50,5,Macro(voxforge-hrecord,'vf5-10')
327
328[custom-voxforge-vf5-3]
329include => custom-voxforge-phoneme-explain
330exten => 50,1,Macro(voxforge-hrecord,'vf5-11')
331exten => 50,2,Macro(voxforge-hrecord,'vf5-12')
332exten => 50,3,Macro(voxforge-hrecord,'vf5-13')
333exten => 50,4,Macro(voxforge-hrecord,'vf5-14')
334exten => 50,5,Macro(voxforge-hrecord,'vf5-15')
335
336[custom-voxforge-vf5-4]
337include => custom-voxforge-phoneme-explain
338exten => 50,1,Macro(voxforge-hrecord,'vf5-16')
339exten => 50,2,Macro(voxforge-hrecord,'vf5-17')
340exten => 50,3,Macro(voxforge-hrecord,'vf5-18')
341exten => 50,4,Macro(voxforge-hrecord,'vf5-19')
342exten => 50,5,Macro(voxforge-hrecord,'vf5-20')
343
344[custom-voxforge-vf5-5]
345include => custom-voxforge-phoneme-explain
346exten => 50,1,Macro(voxforge-hrecord,'vf5-21')
347exten => 50,2,Macro(voxforge-hrecord,'vf5-22')
348exten => 50,3,Macro(voxforge-hrecord,'vf5-23')
349exten => 50,4,Macro(voxforge-hrecord,'vf5-24')
350exten => 50,5,Macro(voxforge-hrecord,'vf5-25')
351
352[custom-voxforge-vf5-6]
353include => custom-voxforge-phoneme-explain
354exten => 50,1,Macro(voxforge-hrecord,'vf5-26')
355exten => 50,2,Macro(voxforge-hrecord,'vf5-27')
356exten => 50,3,Macro(voxforge-hrecord,'vf5-28')
357exten => 50,4,Macro(voxforge-hrecord,'vf5-29')
358exten => 50,5,Macro(voxforge-hrecord,'vf5-30')
359
360[custom-voxforge-vf5-7]
361include => custom-voxforge-phoneme-explain
362exten => 50,1,Macro(voxforge-hrecord,'vf5-31')
363exten => 50,2,Macro(voxforge-hrecord,'vf5-32')
364exten => 50,3,Macro(voxforge-hrecord,'vf5-33')
365exten => 50,4,Macro(voxforge-hrecord,'vf5-34')
366exten => 50,5,Macro(voxforge-hrecord,'vf5-35')
367
368[custom-voxforge-vf5-8]
369include => custom-voxforge-phoneme-explain
370exten => 50,1,Macro(voxforge-hrecord,'vf5-36')
371exten => 50,2,Macro(voxforge-hrecord,'vf5-37')
372exten => 50,3,Macro(voxforge-hrecord,'vf5-38')
373exten => 50,4,Macro(voxforge-hrecord,'vf5-39')
374exten => 50,5,Macro(voxforge-hrecord,'vf5-40')
375
376
377[custom-voxforge-vf6-1]
378include => custom-voxforge-phoneme-explain
379exten => 50,1,Macro(voxforge-hrecord,'vf6-01')
380exten => 50,2,Macro(voxforge-hrecord,'vf6-02')
381exten => 50,3,Macro(voxforge-hrecord,'vf6-03')
382exten => 50,4,Macro(voxforge-hrecord,'vf6-04')
383exten => 50,5,Macro(voxforge-hrecord,'vf6-05')
384
385[custom-voxforge-vf6-2]
386include => custom-voxforge-phoneme-explain
387exten => 50,1,Macro(voxforge-hrecord,'vf6-06')
388exten => 50,2,Macro(voxforge-hrecord,'vf6-07')
389exten => 50,3,Macro(voxforge-hrecord,'vf6-08')
390exten => 50,4,Macro(voxforge-hrecord,'vf6-09')
391exten => 50,5,Macro(voxforge-hrecord,'vf6-10')
392
393[custom-voxforge-vf6-3]
394include => custom-voxforge-phoneme-explain
395exten => 50,1,Macro(voxforge-hrecord,'vf6-11')
396exten => 50,2,Macro(voxforge-hrecord,'vf6-12')
397exten => 50,3,Macro(voxforge-hrecord,'vf6-13')
398exten => 50,4,Macro(voxforge-hrecord,'vf6-14')
399exten => 50,5,Macro(voxforge-hrecord,'vf6-15')
400
401[custom-voxforge-vf6-4]
402include => custom-voxforge-phoneme-explain
403exten => 50,1,Macro(voxforge-hrecord,'vf6-16')
404exten => 50,2,Macro(voxforge-hrecord,'vf6-17')
405exten => 50,3,Macro(voxforge-hrecord,'vf6-18')
406exten => 50,4,Macro(voxforge-hrecord,'vf6-19')
407exten => 50,5,Macro(voxforge-hrecord,'vf6-20')
408
409[custom-voxforge-vf6-5]
410include => custom-voxforge-phoneme-explain
411exten => 50,1,Macro(voxforge-hrecord,'vf6-21')
412exten => 50,2,Macro(voxforge-hrecord,'vf6-22')
413exten => 50,3,Macro(voxforge-hrecord,'vf6-23')
414exten => 50,4,Macro(voxforge-hrecord,'vf6-24')
415exten => 50,5,Macro(voxforge-hrecord,'vf6-25')
416
417[custom-voxforge-vf6-6]
418include => custom-voxforge-phoneme-explain
419exten => 50,1,Macro(voxforge-hrecord,'vf6-26')
420exten => 50,2,Macro(voxforge-hrecord,'vf6-27')
421exten => 50,3,Macro(voxforge-hrecord,'vf6-28')
422exten => 50,4,Macro(voxforge-hrecord,'vf6-29')
423exten => 50,5,Macro(voxforge-hrecord,'vf6-30')
424
425[custom-voxforge-vf6-7]
426include => custom-voxforge-phoneme-explain
427exten => 50,1,Macro(voxforge-hrecord,'vf6-31')
428exten => 50,2,Macro(voxforge-hrecord,'vf6-32')
429exten => 50,3,Macro(voxforge-hrecord,'vf6-33')
430exten => 50,4,Macro(voxforge-hrecord,'vf6-34')
431exten => 50,5,Macro(voxforge-hrecord,'vf6-35')
432
433[custom-voxforge-vf6-8]
434include => custom-voxforge-phoneme-explain
435exten => 50,1,Macro(voxforge-hrecord,'vf6-36')
436exten => 50,2,Macro(voxforge-hrecord,'vf6-37')
437exten => 50,3,Macro(voxforge-hrecord,'vf6-38')
438exten => 50,4,Macro(voxforge-hrecord,'vf6-39')
439exten => 50,5,Macro(voxforge-hrecord,'vf6-40')
440
441
442[custom-voxforge-vf7-1]
443include => custom-voxforge-phoneme-explain
444exten => 50,1,Macro(voxforge-hrecord,'vf7-01')
445exten => 50,2,Macro(voxforge-hrecord,'vf7-02')
446exten => 50,3,Macro(voxforge-hrecord,'vf7-03')
447exten => 50,4,Macro(voxforge-hrecord,'vf7-04')
448exten => 50,5,Macro(voxforge-hrecord,'vf7-05')
449
450[custom-voxforge-vf7-2]
451include => custom-voxforge-phoneme-explain
452exten => 50,1,Macro(voxforge-hrecord,'vf7-06')
453exten => 50,2,Macro(voxforge-hrecord,'vf7-07')
454exten => 50,3,Macro(voxforge-hrecord,'vf7-08')
455exten => 50,4,Macro(voxforge-hrecord,'vf7-09')
456exten => 50,5,Macro(voxforge-hrecord,'vf7-10')
457
458[custom-voxforge-vf7-3]
459include => custom-voxforge-phoneme-explain
460exten => 50,1,Macro(voxforge-hrecord,'vf7-11')
461exten => 50,2,Macro(voxforge-hrecord,'vf7-12')
462exten => 50,3,Macro(voxforge-hrecord,'vf7-13')
463exten => 50,4,Macro(voxforge-hrecord,'vf7-14')
464exten => 50,5,Macro(voxforge-hrecord,'vf7-15')
465
466[custom-voxforge-vf7-4]
467include => custom-voxforge-phoneme-explain
468exten => 50,1,Macro(voxforge-hrecord,'vf7-16')
469exten => 50,2,Macro(voxforge-hrecord,'vf7-17')
470exten => 50,3,Macro(voxforge-hrecord,'vf7-18')
471exten => 50,4,Macro(voxforge-hrecord,'vf7-19')
472exten => 50,5,Macro(voxforge-hrecord,'vf7-20')
473
474[custom-voxforge-vf7-5]
475include => custom-voxforge-phoneme-explain
476exten => 50,1,Macro(voxforge-hrecord,'vf7-21')
477exten => 50,2,Macro(voxforge-hrecord,'vf7-22')
478exten => 50,3,Macro(voxforge-hrecord,'vf7-23')
479exten => 50,4,Macro(voxforge-hrecord,'vf7-24')
480exten => 50,5,Macro(voxforge-hrecord,'vf7-25')
481
482[custom-voxforge-vf7-6]
483include => custom-voxforge-phoneme-explain
484exten => 50,1,Macro(voxforge-hrecord,'vf7-26')
485exten => 50,2,Macro(voxforge-hrecord,'vf7-27')
486exten => 50,3,Macro(voxforge-hrecord,'vf7-28')
487exten => 50,4,Macro(voxforge-hrecord,'vf7-29')
488exten => 50,5,Macro(voxforge-hrecord,'vf7-30')
489
490[custom-voxforge-vf7-7]
491include => custom-voxforge-phoneme-explain
492exten => 50,1,Macro(voxforge-hrecord,'vf7-31')
493exten => 50,2,Macro(voxforge-hrecord,'vf7-32')
494exten => 50,3,Macro(voxforge-hrecord,'vf7-33')
495exten => 50,4,Macro(voxforge-hrecord,'vf7-34')
496exten => 50,5,Macro(voxforge-hrecord,'vf7-35')
497
498[custom-voxforge-vf7-8]
499include => custom-voxforge-phoneme-explain
500exten => 50,1,Macro(voxforge-hrecord,'vf7-36')
501exten => 50,2,Macro(voxforge-hrecord,'vf7-37')
502exten => 50,3,Macro(voxforge-hrecord,'vf7-38')
503exten => 50,4,Macro(voxforge-hrecord,'vf7-39')
504exten => 50,5,Macro(voxforge-hrecord,'vf7-40')
505
506
507[custom-voxforge-vf8-1]
508include => custom-voxforge-phoneme-explain
509exten => 50,1,Macro(voxforge-hrecord,'vf8-01')
510exten => 50,2,Macro(voxforge-hrecord,'vf8-02')
511exten => 50,3,Macro(voxforge-hrecord,'vf8-03')
512exten => 50,4,Macro(voxforge-hrecord,'vf8-04')
513exten => 50,5,Macro(voxforge-hrecord,'vf8-05')
514
515[custom-voxforge-vf8-2]
516include => custom-voxforge-phoneme-explain
517exten => 50,1,Macro(voxforge-hrecord,'vf8-06')
518exten => 50,2,Macro(voxforge-hrecord,'vf8-07')
519exten => 50,3,Macro(voxforge-hrecord,'vf8-08')
520exten => 50,4,Macro(voxforge-hrecord,'vf8-09')
521exten => 50,5,Macro(voxforge-hrecord,'vf8-10')
522
523[custom-voxforge-vf8-3]
524include => custom-voxforge-phoneme-explain
525exten => 50,1,Macro(voxforge-hrecord,'vf8-11')
526exten => 50,2,Macro(voxforge-hrecord,'vf8-12')
527exten => 50,3,Macro(voxforge-hrecord,'vf8-13')
528exten => 50,4,Macro(voxforge-hrecord,'vf8-14')
529exten => 50,5,Macro(voxforge-hrecord,'vf8-15')
530
531[custom-voxforge-vf8-4]
532include => custom-voxforge-phoneme-explain
533exten => 50,1,Macro(voxforge-hrecord,'vf8-16')
534exten => 50,2,Macro(voxforge-hrecord,'vf8-17')
535exten => 50,3,Macro(voxforge-hrecord,'vf8-18')
536exten => 50,4,Macro(voxforge-hrecord,'vf8-19')
537exten => 50,5,Macro(voxforge-hrecord,'vf8-20')
538
539[custom-voxforge-vf8-5]
540include => custom-voxforge-phoneme-explain
541exten => 50,1,Macro(voxforge-hrecord,'vf8-21')
542exten => 50,2,Macro(voxforge-hrecord,'vf8-22')
543exten => 50,3,Macro(voxforge-hrecord,'vf8-23')
544exten => 50,4,Macro(voxforge-hrecord,'vf8-24')
545exten => 50,5,Macro(voxforge-hrecord,'vf8-25')
546
547[custom-voxforge-vf8-6]
548include => custom-voxforge-phoneme-explain
549exten => 50,1,Macro(voxforge-hrecord,'vf8-26')
550exten => 50,2,Macro(voxforge-hrecord,'vf8-27')
551exten => 50,3,Macro(voxforge-hrecord,'vf8-28')
552exten => 50,4,Macro(voxforge-hrecord,'vf8-29')
553exten => 50,5,Macro(voxforge-hrecord,'vf8-30')
554
555[custom-voxforge-vf8-7]
556include => custom-voxforge-phoneme-explain
557exten => 50,1,Macro(voxforge-hrecord,'vf8-31')
558exten => 50,2,Macro(voxforge-hrecord,'vf8-32')
559exten => 50,3,Macro(voxforge-hrecord,'vf8-33')
560exten => 50,4,Macro(voxforge-hrecord,'vf8-34')
561exten => 50,5,Macro(voxforge-hrecord,'vf8-35')
562
563[custom-voxforge-vf8-8]
564include => custom-voxforge-phoneme-explain
565exten => 50,1,Macro(voxforge-hrecord,'vf8-36')
566exten => 50,2,Macro(voxforge-hrecord,'vf8-37')
567exten => 50,3,Macro(voxforge-hrecord,'vf8-38')
568exten => 50,4,Macro(voxforge-hrecord,'vf8-39')
569exten => 50,5,Macro(voxforge-hrecord,'vf8-40')
570
571
572[custom-voxforge-phoneme-explain]
573; note: I misspelled 'read' as 'reed' on purpose because flite was mispronouncing it.
574exten => s,1,Setvar(last-prompt-priority=nan)
575exten => s,2,GotoIf($[${num-complete} > 0]?1,1)
576exten => s,3,Gosub(sub-voxforge-init|s|1)
577exten => s,4,Gosub(sub-voxforge-instructions|s|1)
578;exten => s,5,Flite('Now, press 1 if you are ready to hear a phrase. Or press 2 to hear these instructions again.'|12)
579exten => s,5,Background(${menu-dir}/1-hear-phrase-2-instructions-again)
580exten => s,6,WaitExten(10)
581exten => 1,1,GotoIf($["${last-prompt-priority}" = "nan"]?20)
582exten => 1,2,System(rm ${RECORDED_FILE}.wav)
583exten => 1,3,Goto(50|${last-prompt-priority})
584exten => 1,20,Set(ran-instructions=1)
585exten => 1,21,Goto(50|1)
586exten => 2,1,GotoIf($["${last-prompt-priority}" = "nan"]?20)
587exten => 2,2,Gosub(sub-voxforge-get-next|s|1)
588exten => 2,20,Goto(s|1)
589exten => 3,1,GotoIf($["${last-prompt-priority}" = "nan"]?20)
590exten => 3,2,Gosub(sub-voxforge-hrecord-compare|s|1)
591exten => 3,20,Goto(2|1)
592;exten => 4,1,Flite('OK, skipping this prompt and try ing the next one...')
593exten => 4,1,Background(${menu-dir}/skip)
594exten => 4,2,System(rm ${RECORDED_FILE}.wav)
595exten => 4,3,Gosub(sub-voxforge-do-next|s|1)
596;exten => 10,1,Flite('Do they sound the same? Is your reecording free of laugh ing.... Cough ing.... Stutter ing.... Mispronunciations.... And background noise? Press 1 to try again. Press 2 to continue. Press 3 to hear your reecording again. Press 4 if the prompt is unclear and you would like to try a different reecording.'|1234)
597exten => 10,1,Background(${menu-dir}/post-record)
598exten => 10,2,WaitExten(10)
599;exten => i,1,Flite('Sorry. that is not a valid choice.'|1234567890)
600exten => i,1,Background(${menu-dir}/not-a-valid-choice)
601exten => i,2,GotoIf($["${last-prompt-priority}" = "nan"]?20)
602exten => i,3,Goto(10|1)
603exten => i,20,Goto(s|1)
604exten => h,1,Gosub(sub-voxforge-unexpected-hangup-cleanup|s|1)
605
606[macro-voxforge-hrecord]
607exten => s,1,Setvar(last-prompt-context=${MACRO_CONTEXT})
608exten => s,2,Setvar(last-prompt-priority=${MACRO_PRIORITY})
609exten => s,3,Setvar(last-prompt-name=${ARG1})
610;exten => s,4,Flite('Here is sentence number $[${num-complete-this-round} + 1] out of 5:")
611exten => s,4,Playback(${menu-dir}/sentence-number)
612exten => s,5,SayNumber($[${num-complete-this-round} + 1],m)
613exten => s,6,Playback(${menu-dir}/out-of)
614exten => s,7,SayNumber(5,m)
615exten => s,8,Playback(${prompts-dir}/audio/${last-prompt-name})
616exten => s,9,Record(/tmp/voxforge-%d:wav|0|20|)
617;exten => s,7,Flite('OK, I will play the original phrase. Then the phrase you just recorded:'|1)
618exten => s,10,Playback(${menu-dir}/compare)
619exten => s,11,Gosub(sub-voxforge-hrecord-compare|s|1)
620exten => h,1,Gosub(sub-voxforge-unexpected-hangup-cleanup|s|1)
621
622[sub-voxforge-hrecord-compare]
623exten => s,1,Playback(${prompts-dir}/audio/${last-prompt-name})
624exten => s,2,Playback(${RECORDED_FILE})
625exten => s,3,Goto(${last-prompt-context},10,1)
626exten => h,1,Gosub(sub-voxforge-unexpected-hangup-cleanup|s|1)
627
628[sub-voxforge-channel-limit]
629exten => s,1,GotoIf(${DB_EXISTS(voxforge/channel-limit)}?3)
630exten => s,2,Return()
631exten => s,3,GotoIf(${DB_EXISTS(voxforge/num-active-channels)}?5)
632exten => s,4,Set(DB(voxforge/num-active-channels)=0)
633exten => s,5,GotoIf($[${DB(voxforge/num-active-channels)} + 1 > ${DB(voxforge/channel-limit)}]?8)
634exten => s,6,Set(DB(voxforge/num-active-channels)=$[${DB(voxforge/num-active-channels)} + 1])
635exten => s,7,Return()
636;exten => s,8,Flite("All lines are currently busy... Please try again later...")
637exten => s,8,Playback(${menu-dir}/all-lines-currently-busy)
638exten => s,9,Playback(vm-goodbye)
639exten => s,10,Hangup()
640
641[sub-voxforge-decrement-num-active-channels]
642exten => s,1,GotoIf($[${DB(voxforge/num-active-channels)} - 1 < 0]?4)
643exten => s,2,Set(DB(voxforge/num-active-channels)=$[${DB(voxforge/num-active-channels)} - 1])
644exten => s,3,Return()
645exten => s,4,Noop(----- Had to zero voxforge/num-active-channels! Must be a bug! -----)
646exten => s,5,Set(DB(voxforge/num-active-channels)=0)
647exten => s,6,Return()
648
649[sub-voxforge-get-script-num]
650exten => s,1,GotoIf(${DB_EXISTS(voxforge/script-num)}?4)
651exten => s,2,Set(script-num=9)
652exten => s,3,Return()
653exten => s,4,Set(script-num=${DB(voxforge/script-num)})
654exten => s,5,Return()
655
656[sub-voxforge-increment-script-num]
657exten => s,1,GotoIf($[${script-num} + 1 > ${max-script-num}]?4)
658exten => s,2,Set(DB(voxforge/script-num)=$[${script-num} + 1])
659exten => s,3,Return()
660exten => s,4,Set(DB(voxforge/script-num)=1)
661exten => s,5,Return()
662
663[sub-voxforge-phoneme-finished]
664exten => s,1,Set(num-complete-this-round=0)
665;exten => s,2,Flite('Congratulations! You have completed ${num-complete} phrases.')
666exten => s,2,Playback(${menu-dir}/congratulations-have-completed)
667exten => s,3,SayNumber(${num-complete},m)
668exten => s,4,Playback(${menu-dir}/phrases)
669;exten => s,3,Flite('We appreciate your contribution. Please. Take a moment to complete 5 more.')
670;exten => s,4,Flite('Press 1 to complete 5 more. Or Press 9 to hang up.'|12)
671exten => s,5,Background(${menu-dir}/continue-hangup)
672exten => s,6,WaitExten(10)
673exten => 1,1,Gosub(sub-voxforge-do-next|s|1)
674;exten => 9,1,Flite('Thank You for your contribution. Please call again soon.')
675exten => 9,1,Playback(${menu-dir}/thank-you-call-again)
676exten => 9,2,Playback(vm-goodbye)
677exten => 9,3,Hangup()
678exten => 9,4,Gosub(sub-voxforge-autosubmit|s|1)
679;exten => i,1,Flite('Sorry. that is not a valid choice.'|1234567890)
680exten => i,1,Background(${menu-dir}/not-a-valid-choice)
681exten => i,2,Goto(s|1)
682exten => h,1,Gosub(sub-voxforge-autosubmit|s|1)
683
684[sub-voxforge-get-next]
685exten => s,1,System(mv ${RECORDED_FILE}.wav ${session-dir}/${last-prompt-name}.wav)
686exten => s,2,System(grep -R --no-filename ${last-prompt-name} ${prompts-dir}/vf* >> ${session-dir}/prompts)
687exten => s,3,Set(num-complete=$[${num-complete} + 1])
688exten => s,4,Set(num-complete-this-round=$[${num-complete-this-round} + 1])
689exten => s,5,GotoIf($[${num-complete-this-round} < 5]?20)
690exten => s,6,Gosub(sub-voxforge-phoneme-finished|s|1)
691exten => s,20,Gosub(sub-voxforge-do-next|s|1)
692
693[sub-voxforge-do-next]
694exten => s,1,GotoIf($[${last-prompt-priority} < 5]?2:3)
695exten => s,2,Goto(${last-prompt-context}|50|$[${last-prompt-priority} + 1])
696exten => s,3,Goto(custom-voxforge-selectscript|s|1)
697
698
699[sub-voxforge-init]
700exten => s, 1,GotoIf($[${ran-init} = 1]?2:3)
701exten => s, 2,Return()
702exten => s, 3,Set(session-ident=${STRFTIME(${EPOCH},GMT,%Y%m%d-%H%M%S)}-${UNIQUEID})
703exten => s, 4,Set(session-dir=/voxforge-audio/work/${session-ident})
704exten => s, 5,System(mkdir ${session-dir})
705exten => s, 6,Set(year=${STRFTIME(${EPOCH},GMT,%Y)})
706exten => s, 7,System(echo \'Copyright \(C\) ${year} Free Software Foundation\' > ${session-dir}/LICENSE)
707exten => s, 8,System(cat /voxforge-code/LICENSE.append >> ${session-dir}/LICENSE)
708exten => s, 9,System(cat /voxforge-code/README.prepend > ${session-dir}/README)
709exten => s,10,System(echo \'Gender: ${gender}\;\' >> ${session-dir}/README)
710exten => s,11,System(echo \'Age range: ${agerange}\;\' >> ${session-dir}/README)
711exten => s,12,System(cat /voxforge-code/README.append >> ${session-dir}/README)
712exten => s,13,Set(ran-init=1)
713exten => s,14,Return()
714
715[sub-voxforge-instructions]
716exten => s, 1,GotoIf($[${ran-instructions} = 1]?2:3)
717exten => s, 2,Return()
718;exten => s, 3,Flite('OK, this is how it works: I will reed a phrase to you. Then you will hear a beep.')
719;exten => s, 4,Flite('After the beep, please wait for 1 second.')
720;exten => s, 5,Flite('Then you say out loud the phrase you just herd.')
721;exten => s, 6,Flite('Wait another second and then press the pound key.')
722;exten => s, 7,Flite('Some phrases sound silly. Or strange.')
723;exten => s, 8,Flite('Please avoid Laugh ing... Cough ing... Stutter ing.... Mispronunciations....  And background noise.')
724;exten => s, 9,Flite('If any of these things happen. Please go back and reecord the phrase again.')
725exten => s, 3,Playback(${menu-dir}/instructions)
726exten => s, 4,Return()
727exten => h,1,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
728
729[sub-voxforge-unexpected-hangup-cleanup]
730exten => s,1,System(rm ${RECORDED_FILE}.wav)
731exten => s,2,GotoIf($[${num-complete} < 5]?5)
732exten => s,3,Gosub(sub-voxforge-autosubmit|s|1)
733exten => s,4,Return()
734exten => s,5,Noop(----- Only completed ${num-complete} so will not submit -----)
735exten => s,6,System(mv ${session-dir} /voxforge-audio/partial/)
736exten => s,7,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
737
738[sub-voxforge-autosubmit]
739exten => s,1,System(echo \'${num-complete}\' > ${session-dir}/num-complete)
740exten => s,2,System(mv ${session-dir} /voxforge-audio/complete/)
741exten => s,3,System(echo \'-------------------- START ${session-ident} --------------------\' >> /voxforge-audio/submit.log)
742exten => s,4,System(/voxforge-code/submit_audio.sh /voxforge-audio/complete/${session-ident})
743exten => s,5,System(echo \'-------------------- STOP ${session-ident} --------------------\' >> /voxforge-audio/submit.log)
744exten => s,6,Noop(----- Auto Submit of ${num-complete} phrases - Status:${SYSTEMSTATUS} APPERROR:${APPERROR} FAILURE:${FAILURE} SUCCESS:${SUCCESS} -----)
745exten => s,7,Gosub(sub-voxforge-decrement-num-active-channels|s|1)
746
747; vim: set ts=8 sw=2 filetype=asterisk:
Note: See TracBrowser for help on using the browser.