Skip to content
Snippets Groups Projects
festival-1.4.2.diff 2.58 KiB
Newer Older
  • Learn to ignore specific revisions
  • Mark Spencer's avatar
    Mark Spencer committed
    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\n\
    
    Mark Spencer's avatar
    Mark Spencer committed
    +  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.");