~singpolyma/asterisk

ref: upstream/16.2.1_dfsg asterisk/contrib/festival-1.95.diff -rw-r--r-- 3.8 KiB
fe6d69c0Stephen Paul Weber import-tar 7 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
diff -ur festival-195orig/festival/lib/multisyn/multisyn_pauses.scm festival-195/festival/lib/multisyn/multisyn_pauses.scm
--- festival-195orig/festival/lib/multisyn/multisyn_pauses.scm	2004-06-21 08:19:30.000000000 -0600
+++ festival-195/festival/lib/multisyn/multisyn_pauses.scm	2005-01-12 18:53:27.000000000 -0700
@@ -85,8 +85,8 @@
 (let ((silence (car (cadr (car (PhoneSet.description '(silences))))))
       (seg (item.relation (find_last_seg word) 'Segment))
       pause_item)
-  (format t "  inserting pause after: %s.\n" (item.name seg))
-  (format t "  Inserting pause\n")
+;  (format t "  inserting pause after: %s.\n" (item.name seg))
+;  (format t "  Inserting pause\n")
 ; if next seg is not silence insert one.
   (if (or (not (item.next seg))
 	  (not (string-equal (item.name (item.next seg)) silence)))
diff -ur festival-195orig/festival/lib/tts.scm festival-195/festival/lib/tts.scm
--- festival-195orig/festival/lib/tts.scm	2003-04-20 10:42:28.000000000 -0600
+++ festival-195/festival/lib/tts.scm	2005-01-04 09:21:31.000000000 -0700
@@ -235,6 +235,17 @@
        (utt.synth
 	(eval (list 'Utterance 'Text string))))))
 
+;; begin tts_textasterisk
+(define (tts_textasterisk string mode)
+  "(tts_textasterisk STRING MODE)
+Apply tts to STRING.  This function is specifically designed for
+use in server mode so a single function call may synthesize the string.
+This function name may be added to the server safe functions."
+  (utt.send.wave.asterisk
+   (utt.synth
+    (eval (list 'Utterance 'Text string)))))
+;; end tts_textasterisk
+
 (define (tts_return_to_client)
   "(tts_return_to_client)
 This function is called by clients who wish to return waveforms of
diff -ur festival-195orig/festival/src/arch/festival/wave.cc festival-195/festival/src/arch/festival/wave.cc
--- festival-195orig/festival/src/arch/festival/wave.cc	2004-06-21 14:52:42.000000000 -0600
+++ festival-195/festival/src/arch/festival/wave.cc	2005-01-04 09:26:24.000000000 -0700
@@ -482,6 +482,7 @@
 	type = "nist";
     else
 	type = get_c_string(ltype);
+
     w->save(tmpfile,type);
 #ifdef WIN32
     send(ft_server_socket,"WV\n",3,0);
@@ -494,6 +495,44 @@
     return utt;
 }
 
+// begin utt_send_wave_asterisk()
+static LISP utt_send_wave_asterisk(LISP utt)
+{
+    // Send the waveform to a client (must be acting as server)
+    EST_Utterance *u = utterance(utt);
+    EST_Wave *w;
+    EST_String tmpfile = make_tmp_filename();
+    LISP ltype;
+    EST_String type;
+
+    w = get_utt_wave(u);
+    if (ft_server_socket == -1)
+    {
+       cerr << "utt_send_wave_asterisk: not in server mode" << endl;
+       festival_error();
+    }
+       
+    ltype = ft_get_param("Wavefiletype");
+    if (ltype == NIL)
+       type = "nist";
+    else
+       type = get_c_string(ltype);
+    w->resample(8000);
+    w->rescale(5);
+
+    w->save(tmpfile,type);
+#ifdef WIN32
+    send(ft_server_socket,"WV\n",3,0);
+#else
+    write(ft_server_socket,"WV\n",3);
+#endif
+    socket_send_file(ft_server_socket,tmpfile);
+    unlink(tmpfile);
+
+    return utt;
+}
+// end utt_send_wave_asterisk()
+
 static LISP send_sexpr_to_client(LISP l)
 {
     EST_String tmpfile = make_tmp_filename();
@@ -595,6 +634,15 @@
  "(utt.send.wave.client UTT)\n\
   Sends wave in UTT to client.  If not in server mode gives an error\n\
   Note the client must be expecting to receive the waveform.");
+
+// begin asterisk mod
+    init_subr_1("utt.send.wave.asterisk",utt_send_wave_asterisk,
+ "(utt.send.wave.asterisk UTT)\n\
+  Sends wave in UTT to client.  If not in server mode gives an error\n\
+  Note the client must be expecting to receive the waveform. The waveform\n\
+  is rescaled and resampled according to what asterisk needs");
+// end asterisk mod
+
     init_subr_1("send_sexpr_to_client", send_sexpr_to_client,
  "(send_sexpr_to_client SEXPR)\n\
 Sends given sexpression to currently connected client.");