diff --git a/contrib/festival-1.4.2.diff b/contrib/festival-1.4.2.diff
new file mode 100755
index 0000000000000000000000000000000000000000..8f7b34707e962f6ff180af72134a2664c99e60a2
--- /dev/null
+++ b/contrib/festival-1.4.2.diff
@@ -0,0 +1,75 @@
+diff -u -r festival-1.4.2/lib/tts.scm festival-1.4.2-asterisk/lib/tts.scm
+--- festival-1.4.2/lib/tts.scm	Wed Jan  8 09:54:14 2003
++++ festival-1.4.2-asterisk/lib/tts.scm	Tue Jan  7 08:51:44 2003
+@@ -236,6 +236,15 @@
+        (utt.synth
+ 	(eval (list 'Utterance 'Text string))))))
+ 
++(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)))))
++
+ (define (tts_return_to_client)
+   "(tts_return_to_client)
+ This function is called by clients who wish to return waveforms of
+diff -u -r festival-1.4.2/src/arch/festival/wave.cc festival-1.4.2-asterisk/src/arch/festival/wave.cc
+--- festival-1.4.2/src/arch/festival/wave.cc	Mon Jun  4 07:40:10 2001
++++ festival-1.4.2-asterisk/src/arch/festival/wave.cc	Tue Jan  7 08:53:09 2003
+@@ -377,6 +377,38 @@
+ 	type = "nist";
+     else
+ 	type = get_c_string(ltype);
++
++    w->save(tmpfile,type);
++    write(ft_server_socket,"WV\n",3);
++    socket_send_file(ft_server_socket,tmpfile);
++    unlink(tmpfile);
++
++    return utt;
++}
++
++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_client: 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);
+     write(ft_server_socket,"WV\n",3);
+     socket_send_file(ft_server_socket,tmpfile);
+@@ -454,6 +486,13 @@
+  "(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.");
++
++    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
++  is rescaled and resampled according to what asterisk needs");
++
+     init_subr_1("send_sexpr_to_client", send_sexpr_to_client,
+  "(send_sexpr_to_client SEXPR)\n\
+ Sends given sexpression to currently connected client.");
diff --git a/festival-1.4.2.diff b/festival-1.4.2.diff
new file mode 100755
index 0000000000000000000000000000000000000000..8f7b34707e962f6ff180af72134a2664c99e60a2
--- /dev/null
+++ b/festival-1.4.2.diff
@@ -0,0 +1,75 @@
+diff -u -r festival-1.4.2/lib/tts.scm festival-1.4.2-asterisk/lib/tts.scm
+--- festival-1.4.2/lib/tts.scm	Wed Jan  8 09:54:14 2003
++++ festival-1.4.2-asterisk/lib/tts.scm	Tue Jan  7 08:51:44 2003
+@@ -236,6 +236,15 @@
+        (utt.synth
+ 	(eval (list 'Utterance 'Text string))))))
+ 
++(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)))))
++
+ (define (tts_return_to_client)
+   "(tts_return_to_client)
+ This function is called by clients who wish to return waveforms of
+diff -u -r festival-1.4.2/src/arch/festival/wave.cc festival-1.4.2-asterisk/src/arch/festival/wave.cc
+--- festival-1.4.2/src/arch/festival/wave.cc	Mon Jun  4 07:40:10 2001
++++ festival-1.4.2-asterisk/src/arch/festival/wave.cc	Tue Jan  7 08:53:09 2003
+@@ -377,6 +377,38 @@
+ 	type = "nist";
+     else
+ 	type = get_c_string(ltype);
++
++    w->save(tmpfile,type);
++    write(ft_server_socket,"WV\n",3);
++    socket_send_file(ft_server_socket,tmpfile);
++    unlink(tmpfile);
++
++    return utt;
++}
++
++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_client: 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);
+     write(ft_server_socket,"WV\n",3);
+     socket_send_file(ft_server_socket,tmpfile);
+@@ -454,6 +486,13 @@
+  "(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.");
++
++    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
++  is rescaled and resampled according to what asterisk needs");
++
+     init_subr_1("send_sexpr_to_client", send_sexpr_to_client,
+  "(send_sexpr_to_client SEXPR)\n\
+ Sends given sexpression to currently connected client.");