Diphone
Generation Schema File
This is the file “BD_Schema.scm” that produces the non-sense
words for diphone using the Phoneset of Bangla.This
generates all the combination of diphone possible in
Bangla, though it contains some combination which are
never used.Those are excluded manually later from the
generated list.However this file can be edited to produce
more efficient diphone list for Bangla.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
;;; American Internation University Bangladesh ;;;
;;; ;;;
;;; 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. ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;
;;; Scheme for a generating diphones for Bangla ;;
;;; Inspired by Steve Isard's diphone schemas from CSTR,
University of ;;
;;; Edinburgh ;;
;;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; for generating diphone
list for Bangla
(set! vowels '(a A i
u ri e oi o ow I I: U RI e: oi: o: ow: RA ae))
(set! consonants '(k kh g gh n: ca ch j jh ny t th d
dh n to tho do dho p ph b bh m ja r l sh s h ro ro:
: ay Z))
;(set! onset-only '(h y w))
(set! nocvcs '())
(set! coda-only '(n: ny ro ro: : ay Z))
;(set! syllabics '(i o))
(set! silence '#)
(set! cvc-carrier '((#
t aa ) (aa #)))
(set! vc-carrier '((# t aa t) (aa #)))
(set! cv-carrier '((# t aa ) (t aa #)))
(set! cc-carrier '((# t aa ) (aa t aa #)))
(set! vv-carrier '((# t aa t) (t aa #)))
(set! silv-carrier '(() (t aa #)))
(set! silc-carrier '(() (aa t aa #)))
(set! vsil-carrier '((# t aa t ) ()))
(set! csil-carrier '((# t aa t aa) ()))
;;; Open and vowels
to (syllable end after vowel)
(set! vcopen-carrier '((# t aa t) (aa #)))
;;; Syllabics
;(set! syllabics-carrier1 '((pau t aa ) ( aa pau)))
;; c-syl
;(set! syllabics-carrier2 '((pau t aa t) (aa pau)))
;; syl-c
;(set! syllabics-carrier3 '((pau t aa t) (t aa pau)))
;; syl-v
;(set! syllabics-carrier4 '((pau t aa t) (t aa pau)))
;; syl-syl
;;; These functions
simply fill out the nonsense words
;;; from the carriers and vowel consonant definitions
(define (list-cvcs)
(apply
append
(mapcar
(lambda (v)
(mapcar
(lambda (c)
(list
(list (string-append c "-" v) (string-append
v "-" c))
(append (car cvc-carrier) (list c v c) (car (cdr cvc-carrier)))))
(remove-list consonants nocvcs)))
vowels)))
(define (list-vcs)
(apply
append
(mapcar
(lambda (v)
(mapcar
(lambda (c)
(list
(list (string-append v "-" c))
(append (car vc-carrier) (list v c) (car (cdr vc-carrier)))))
nocvcs))
vowels)))
(define (list-cvs)
(apply
append
(mapcar
(lambda (c)
(mapcar
(lambda (v)
(list
(list (string-append c "-" v))
(append (car cv-carrier) (list c v) (car (cdr cv-carrier)))))
vowels))
nocvcs)))
(define (list-vvs)
(apply
append
(mapcar
(lambda (v1)
(mapcar
(lambda (v2)
(list
(list (string-append v1 "-" v2))
(append (car vv-carrier) (list v1 v2) (car (cdr vv-carrier)))))
vowels))
vowels)))
(define (list-ccs)
(apply
append
(mapcar
(lambda (c1)
(mapcar
(lambda (c2)
(list
(list (string-append c1 "-" c2))
(append (car cc-carrier) (list c1 '- c2) (car (cdr cc-carrier)))))
(remove-list consonants coda-only)))
(remove-list consonants onset-only))))
(define (list-silv)
(mapcar
(lambda (v)
(list
(list (string-append silence "-" v))
(append (car silv-carrier) (list silence v) (car (cdr
silv-carrier)))))
vowels))
(define (list-silc)
(mapcar
(lambda (c)
(list
(list (string-append silence "-" c))
(append (car silc-carrier) (list silence c) (car (cdr
silc-carrier)))))
(remove-list consonants coda-only)))
(define (list-vsil)
(mapcar
(lambda (v)
(list
(list (string-append v "-" silence))
(append (car vsil-carrier) (list v silence) (car (cdr
vsil-carrier)))))
vowels))
(define (list-csil)
(mapcar
(lambda (c)
(list
(list (string-append c "-" silence))
(append (car csil-carrier) (list c silence) (car (cdr
csil-carrier)))))
(remove-list consonants onset-only)))
(define (list-vcopen)
(apply
append
(mapcar
(lambda (v)
(mapcar
(lambda (c)
(list
(list (string-append v "$-" c))
(append (car vc-carrier) (list v '- c) (car (cdr vc-carrier)))))
consonants))
vowels)))
(define (list-syllabics)
(append
(apply
append
(mapcar
(lambda (s)
(mapcar
(lambda (c)
(list
(list (string-append c "-" s))
(append (car syllabics-carrier1) (list c s) (car (cdr
syllabics-carrier1)))))
(remove-list consonants onset-only)))
syllabics))
(apply
append
(mapcar
(lambda (s)
(mapcar
(lambda (c)
(list
(list (string-append s "-" c))
(append (car syllabics-carrier2) (list s '- c) (car
(cdr syllabics-carrier2)))))
(remove-list consonants coda-only)))
syllabics))
(apply
append
(mapcar
(lambda (s)
(mapcar
(lambda (v)
(list
(list (string-append s "-" v))
(append (car syllabics-carrier3) (list s '- v) (car
(cdr syllabics-carrier3)))))
vowels))
syllabics))))
;;; End of individual
generation functions
(define (diphone-gen-list)
"(diphone-gen-list)
Returns a list of nonsense words as phone strings."
(append
(list-cvcs) ;; consonant-vowel and vowel-consonant
(list-vcs) ;; one which don't go in cvc
(list-cvs) ;;
(list-vvs) ;; vowel-vowel
(list-ccs) ;; consonant-consonant
; (list-syllabics)
(list-silv)
(list-silc)
(list-csil)
(list-vsil)
(list
'(("#-#") (# t aa t aa # #)))
; (list-vcopen) ;; open vowels
))
(set! bangla2eng_map
'((a a)
(A aa)
(i i)
(u u)
(e e)
(ri ri)
(oi oi)
(o o)
(ow ow)
(k k)
(kh kha)
(g g)
(gh gh)
(n: n)
(ca cha)
(ch cha)
(j j)
(jh jh)
(ny nya)
(t t)
(th tha)
(d da)
(dh dha)
(n na)
(to th)
(tho tho)
(do do)
(dho dho)
(p po)
(ph pho)
(b bo)
(bh bho)
(m mo)
(ja ja)
(ay ay)
(r ro)
(l lo)
(sh sho)
(s sa)
(h ha)
(ro rho)
(ro: rhoo)
(I i)
(I: i)
(U u)
(RI ri)
(e: e)
(oi: oi)
(o: o)
(ow: ow)
(RA ra)
(Z z)
(ae ae)
))
(define (Diphone_Prompt_Word utt)
"(Diphone_Prompt_Word utt)
Specify specific modifications of the utterance before
synthesis
specific to this particular phone set."
(mapcar
(lambda (s)
(let ((n (item.name s))
(newn (cdr (assoc_string (item.name s) bangla2eng_map))))
(cond
((cdr newn) ;; its a dual one
(let ((newi (item.insert s (list (car (cdr newn))) 'after)))
(item.set_feat newi "end" (item.feat s "end"))
(item.set_feat s "end"
(/ (+ (item.feat s "segment_start")
(item.feat s "end"))
2))
(item.set_name s (car newn))))
(newn
(item.set_name s (car newn)))
(t
;; as is
))))
(utt.relation.items utt 'Segment))
utt)
(define (Diphone_Prompt_Setup)
"(Diphone_Prompt_Setup)
Called before synthesizing the prompt waveforms. Cross
language prompts from UK male (for Bangla Male)."
(voice_rab_diphone) ;; UK male voice
(set! FP_F0 90)
)
(provide 'bd_schema)
|