rhubarb-lip-sync/rhubarb/lib/flite-1.4/tools/play_sync.scm

85 lines
4.2 KiB
Scheme
Raw Normal View History

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
;;; Language Technologies Institute ;;;
;;; Carnegie Mellon University ;;;
;;; Copyright (c) 2000 ;;;
;;; All Rights Reserved. ;;;
;;; ;;;
;;; Permission is hereby granted, free of charge, to use and distribute ;;;
;;; this software and its documentation without restriction, including ;;;
;;; without limitation the rights to use, copy, modify, merge, publish, ;;;
;;; distribute, sublicense, and/or sell copies of this work, and to ;;;
;;; permit persons to whom this work is furnished to do so, subject to ;;;
;;; the following conditions: ;;;
;;; 1. The code must retain the above copyright notice, this list of ;;;
;;; conditions and the following disclaimer. ;;;
;;; 2. Any modifications must be clearly marked as such. ;;;
;;; 3. Original authors' names are not deleted. ;;;
;;; 4. The authors' names are not used to endorse or promote products ;;;
;;; derived from this software without specific prior written ;;;
;;; permission. ;;;
;;; ;;;
;;; CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK ;;;
;;; DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ;;;
;;; ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT ;;;
;;; SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE ;;;
;;; FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ;;;
;;; WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ;;;
;;; AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ;;;
;;; ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ;;;
;;; THIS SOFTWARE. ;;;
;;; ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Author: Alan W Black (awb@cs.cmu.edu) ;;;
;;; Date: September 2000 ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
;;; Display as we go synthesis ;;;
;;; ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defvar play_sync_program "/home/awb/projects/flite/testsuite/play_sync")
(define (display_as_we_go file filemode)
"(display_as_we_go file filemode)
Display the words as we synthesize them."
(set! tts_hooks
(list utt.synth utt.play_display))
(tts_file file filemode)
(format t "\n\n"))
(define (utt.play_display utt)
"(utt.play_display utt)
Play and display."
(let ((tmpwave (make_tmp_filename))
(tmpword (make_tmp_filename)))
(utt.save.wave utt tmpwave 'riff)
(utt.save.play_words utt tmpword)
; (utt.save.segs utt tmpword)
(system (format nil "%s %s %s" play_sync_program tmpwave tmpword))
(delete-file tmpwave)
(delete-file tmpword)
utt))
(define (utt.save.play_words utt filename)
"(utt.save.play_words UTT FILE)
Save words of UTT in a FILE in xlabel format, wityh added __silence__."
(let ((fd (fopen filename "w")))
(format fd "#\n")
(mapcar
(lambda (w)
(if (string-equal
(item.feat w "R:SylStructure.daughter1.daughter1.R:Segment.p.name")
(car (cadr (car (PhoneSet.description '(silences))))))
(format fd "%2.4f 100 %s\n"
(item.feat w "R:SylStructure.daughter1.daughter1.R:Segment.p.end")
"__silence__"))
(format fd "%2.4f 100 %s\n" (item.feat w "word_end")
(item.name w)))
(utt.relation.items utt 'Word))
(fclose fd)
utt))
(provide 'play_sync)