;; ----------------------------------------------------------------- ;; | |
;; The HMM-Based Speech Synthesis System (HTS) ;; | |
;; developed by HTS Working Group ;; | |
;; http://hts.sp.nitech.ac.jp/ ;; | |
;; ----------------------------------------------------------------- ;; | |
;; ;; | |
;; Copyright (c) 2001-2011 Nagoya Institute of Technology ;; | |
;; Department of Computer Science ;; | |
;; ;; | |
;; 2001-2008 Tokyo Institute of Technology ;; | |
;; Interdisciplinary Graduate School of ;; | |
;; Science and Engineering ;; | |
;; ;; | |
;; All rights reserved. ;; | |
;; ;; | |
;; Redistribution and use in source and binary forms, with or ;; | |
;; without modification, are permitted provided that the following ;; | |
;; conditions are met: ;; | |
;; ;; | |
;; - Redistributions of source code must retain the above copyright ;; | |
;; notice, this list of conditions and the following disclaimer. ;; | |
;; - Redistributions in binary form must reproduce the above ;; | |
;; copyright notice, this list of conditions and the following ;; | |
;; disclaimer in the documentation and/or other materials provided ;; | |
;; with the distribution. ;; | |
;; - Neither the name of the HTS working group nor the names of its ;; | |
;; contributors may be used to endorse or promote products derived ;; | |
;; from this software without specific prior written permission. ;; | |
;; ;; | |
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND ;; | |
;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, ;; | |
;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ;; | |
;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ;; | |
;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS ;; | |
;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ;; | |
;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED ;; | |
;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ;; | |
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ;; | |
;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ;; | |
;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ;; | |
;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ;; | |
;; POSSIBILITY OF SUCH DAMAGE. ;; | |
;; ----------------------------------------------------------------- ;; | |
;; | |
;; Extra features | |
;; From Segment items refer by | |
;; | |
;; R:SylStructure.parent.parent.R:Phrase.parent.lisp_num_syls_in_phrase | |
;; R:SylStructure.parent.parent.R:Phrase.parent.lisp_num_words_in_phrase | |
;; lisp_total_words | |
;; lisp_total_syls | |
;; lisp_total_phrases | |
;; | |
;; The last three will act on any item | |
(define (distance_to_p_content i) | |
(let ((c 0) (rc 0 ) (w (item.relation.prev i "Phrase"))) | |
(while w | |
(set! c (+ 1 c)) | |
(if (string-equal "1" (item.feat w "contentp")) | |
(begin | |
(set! rc c) | |
(set! w nil)) | |
(set! w (item.prev w))) | |
) | |
rc)) | |
(define (distance_to_n_content i) | |
(let ((c 0) (rc 0) (w (item.relation.next i "Phrase"))) | |
(while w | |
(set! c (+ 1 c)) | |
(if (string-equal "1" (item.feat w "contentp")) | |
(begin | |
(set! rc c) | |
(set! w nil)) | |
(set! w (item.next w))) | |
) | |
rc)) | |
(define (distance_to_p_accent i) | |
(let ((c 0) (rc 0 ) (w (item.relation.prev i "Syllable"))) | |
(while (and w (member_string (item.feat w "syl_break") '("0" "1"))) | |
(set! c (+ 1 c)) | |
(if (string-equal "1" (item.feat w "accented")) | |
(begin | |
(set! rc c) | |
(set! w nil)) | |
(set! w (item.prev w))) | |
) | |
rc)) | |
(define (distance_to_n_accent i) | |
(let ((c 0) (rc 0 ) (w (item.relation.next i "Syllable"))) | |
(while (and w (member_string (item.feat w "p.syl_break") '("0" "1"))) | |
(set! c (+ 1 c)) | |
(if (string-equal "1" (item.feat w "accented")) | |
(begin | |
(set! rc c) | |
(set! w nil)) | |
(set! w (item.next w))) | |
) | |
rc)) | |
(define (distance_to_p_stress i) | |
(let ((c 0) (rc 0 ) (w (item.relation.prev i "Syllable"))) | |
(while (and w (member_string (item.feat w "syl_break") '("0" "1"))) | |
(set! c (+ 1 c)) | |
(if (string-equal "1" (item.feat w "stress")) | |
(begin | |
(set! rc c) | |
(set! w nil)) | |
(set! w (item.prev w))) | |
) | |
rc)) | |
(define (distance_to_n_stress i) | |
(let ((c 0) (rc 0 ) (w (item.relation.next i "Syllable"))) | |
(while (and w (member_string (item.feat w "p.syl_break") '("0" "1"))) | |
(set! c (+ 1 c)) | |
(if (string-equal "1" (item.feat w "stress")) | |
(begin | |
(set! rc c) | |
(set! w nil)) | |
(set! w (item.next w))) | |
) | |
rc)) | |
(define (num_syls_in_phrase i) | |
(apply | |
+ | |
(mapcar | |
(lambda (w) | |
(length (item.relation.daughters w 'SylStructure))) | |
(item.relation.daughters i 'Phrase)))) | |
(define (num_words_in_phrase i) | |
(length (item.relation.daughters i 'Phrase))) | |
(define (total_words w) | |
(length | |
(utt.relation.items (item.get_utt w) 'Word))) | |
(define (total_syls s) | |
(length | |
(utt.relation.items (item.get_utt s) 'Syllable))) | |
(define (total_phrases s) | |
(length | |
(utt.relation_tree (item.get_utt s) 'Phrase))) | |