
GalateaTalk: Speech synthesis module for Galatea (Win32)
                                                               2003.8.22
------------------------------------------------------------------------

GalateaTalk  Galetea VXẻW[ (SSM) Ƃē삵܂B

=============
1. RpC
=============

Visual StudioŃvWFNgt@Cgtalk.dswJA
gtalk.exerhB

===================
2. sɕKvȂ
===================

2.1 gtalk.exe
  1. ō쐬vO

2.2 chasen-2.3.2 [CHASEN-DLL]
  vOŌĂяoA`ԑf͂sB
  Windowspmakeꂽlibchasen.dllpB
  Ɏf[^Ƃ unidic-1.1.0 KvłB
  [ ] ́Aݒt@Cł̕ϐŁAȉlB

2.3 chasenrc [CHASEN-RC]
  chasen ̐ݒt@C

2.4 chaone [CHAONE-XSL-FILE]
  AC֏vO 
2.4.1 ̓ǂݕ [NUMBER]
  ArAAʎ肵ēǂ(DECIMAL)(NO)
2.4.2 p̓ǂݕ [ALPHABET]
  pApPƂēǂ(WORD)(NO)
2.4.3 t̓ǂݕ [DATE]
  ISO 8601ɊÂt\Lǂ(YMD)(NO)
2.4.4 ̓ǂݕ [TIME]
  ISO 8601ɊÂ\Lǂ(hms)(NO)

2.5 ff̃Xg [PHONEME-LIST]
  ŎgfZbg̃Xg
  mono.lst pӂĂB

2.6 ff
  s߂̉ff́APb҂
	b҂IDR[h [SPEAKER-ID]
	b҂̐     [GENDER]
	Ԓ̌ [DUR-TREE-FILE]
	sb`̌ [PIT-TREE-FILE]
	PvXǧ [MCEP-TREE-FILE]
	Ԓ̕zt@C [DUR-MODEL-FILE]
	sb`̕zt@C [PIT-MODEL-FILE]
	PvXg̕zt@C [MCEP-MODEL-FILE]
̂W̏w肵āA^B
2.7 ŏqׂݒt@Cł̎wʂɁAff
pӂĂKvB

2.7 ݒt@C
  ̃f[^t@ĆAgtalk ̐ݒt@CŋLqA
	gtalk -C ݒt@C
̂悤ɃvONB
  ݒt@C̗ƂāAssm.conf ^ĂA

	----------
	# configuratiuon file for gtalk (GalateaTalk for Win32)
	
	# path name of 'chasen' (only for Linux)
	#CHASEN: ..\chasen\chasen.exe
	
	# path name of 'libchasen.dll' (only for Windows)
	CHASEN-DLL:  ..\chasen\libchasen.dll
	
	# configuration file for 'chasen'
	#CHASEN-RC: ..\chasen\etc\chasenrc
	
	# path name of 'chaone.xsl' (only for Windows)
	CHAONE-XSL-FILE: ..\chasen\chaone\chaone_t_ms.xsl
	
	# default for numbers and alphabets
	NUMBER: DECIMAL
	ALPHABET: WORD
	DATE: YMD
	TIME: hms
	
	# file of phoneme list
	PHONEME-LIST: ..\gtalk\mono.lst
	
	# parameter files for each speaker
	SPEAKER-ID: male01
	GENDER: male
	DUR-TREE-FILE:   ..\gtalk\speakers\male01\tree-dur.inf
	PIT-TREE-FILE:   ..\gtalk\speakers\male01\tree-lf0.inf
	MCEP-TREE-FILE:  ..\gtalk\speakers\male01\tree-mcep.inf
	DUR-MODEL-FILE:  ..\gtalk\speakers\male01\duration.pdf
	PIT-MODEL-FILE:  ..\gtalk\speakers\male01\lf0.pdf
	MCEP-MODEL-FILE: ..\gtalk\speakers\male01\mcep.pdf
	
	(ȉAȗ)
	----------

̂悤ɁA
	ϐ: l
̌`ŋLq : ̑ÕXy[X͓ǂݔ΂B
܂As # ̍sыs̓RgsƂĈB

  ̘b҃f[^𗘗pꍇɂ́ASPEAKER-ID ̋Lq
āA̘b҂̃f[^񋓂BGENDERA*-TREE-FILEA
*.MODEL-FILE ̋Lq́AO SPEAKER-ID ̘b҂ɑ΂
LqłƉ߂B
܂ASPEAKER-ID ɑ΂ẮACӂ̕񂪗płB
GENDER ɑ΂ẮAmale 邢 female w肷B

gtalk ̎sɐݒt@Cw肳Ȃꍇɂ́A
ftH[gƂāA
	----------
	CHASEN-DLL: ..\chasen\libchasen.dll
	CHASEN-RC: ..\chasen\etc\chasenrc
	CHAONE-XSL-FILE: ..\chasen\chaone\chaone_t_ms.xsl
	NUMBER: DECIMAL
	ALPHABET: WORD
	DATE: YMD
	TIME: hms
	PHONEME-LIST: ..\gtalk\mono.lst
	----------
ݒ肳B

chaone gpȂꍇɂ́Aݒt@C
	CHAONE-XSL-FILE: 
LqB

===========
3. bLq
===========

béA
	set Text = ̌҂́Al炢܂B
̂悤ɁA蕶ŗ^B
JEIDA-62-2000ɊÂ^OLq邱ƂɂAC̕ύXȂǂłB

3.1 SILENCE ^O
  |[Y}B

MSEC 
  msecPʂŒw肵ă|[Y}B
  )
	set Text = <SILENCE MSEC="400"/>ȂċsłB
  Ƃ邱ƂɂAuv̌400ms̃|[Y}B
  ܂A
	set Text = <SILENCE/>ȂċsłB
  ̂悤Ƀ|[Yw肵Ȃꍇɂ́AVXeKȒ̃|[Y
  }B

͖̑̑B

3.2 EMPH ^O
  CIȋsB
  w肷ׂ͂ȂB

  )
	set Text = ~̂́Ał͂Ȃ<EMPH></EMPH>łB
  Ƃ邱ƂɂAuԁvĔbB

3.3 SPELL ^O
  pȂǂ̒Ԃǂ݂w肷B
  w肷ׂ͂ȂB

  )
	set Text = rl`qŝÂ<SPELL>rl`qs</SPELL>łB
  Ƃ邱ƂɂA
	uX}[ĝÂ̓GXGG[A[eB[łv
  ƓǂݏグB

	set Text = <SPELL>1234</SPELL>łB
  Ƃ邱ƂɂA
	u͈Olłv
  ƓǂݏグB

3.4 PRON ^O

SYM 
  Ji\LɂāAǂ݂ƃANZg^w肷B
  )
	set Text = Ŋw<PRON SYM="~i~NfTc">쑐</PRON>łB
  Ƃ邱ƂɂAu쑐ÁvuNvɃANZgjAu~i~NTcv
  Ɠǂ܂B

͖̑̑B

3.5 SPEECH ^O
  ^ÕXR[vw肷B
  w肷ׂ͂ȂB

3.6 VOICE ^O

OPTIONAL 
  b҂w肵ĔbB
  )
	set Text = ޏ́A<VOICE OPTIONAL="female01">͂B</VOICE>ƌB
  Ƃ邱ƂɂAu͂Bv female01 ̐ŔbAȊO
  uޏ́AvuƌBv́A̎ Speaker XbgŎw肳Ă
  b҂̐ŔbB

͖̑̑B

3.7 RATE ^O
  bxw肷B

SPEED 
  ʏ̔ɑ΂鑊ΓIԒw肷B
  )
	set Text = <RATE SPEED="2.0"></RATE>֍s܂B
  Ƃ邱ƂɂAuv2.0{̎Ԓ()bB

͖̑̑B

3.8 VOLUME ^O
  ʂw肷B

LEVEL 
  ʏ̔ɑ΂鉹ʂ𑊑ΓIɎw肷B
  )
	set Text = <VOLUME LEVEL="2"></VOLUME>֍s܂B
  Ƃ邱ƂɂAuv1.5{̉ʂ(傫)bB

͖̑̑B

3.9 PITCH ^O
  {gw肷B

LEVEL 
  ʏ̔ɑ΂sb`𑊑ΓIɎw肷B
  )
	set Text = <PITCH LEVEL="1.5"></PITCH>֍s܂B
  Ƃ邱ƂɂAuv1.5{̃sb`()bB

RANGE  (JEIDA-62-2000 ̊g)
  ʏ̔ɑ΂sb`̐Uꕝ𑊑ΓIɎw肷B
  )
	set Text = <PITCH RANGE="1.5"></PITCH>֍s܂B
  Ƃ邱ƂɂAuv̕σsb`ێ܂ܐUꕝ1.5{ɂ
  bB

͖̑̑B

3.10 CONTEXT ^O  (JEIDAKïꕔAꕔg)
  f[^eɊւw肷B
  шꕔ̋LΏۂƂāAǂݏグ^ TYPE Ŏw肷B
  TYPE̎w肪Ȃꍇ́A^O͖B

TYPE 
  lƂāANUMBER, DIGITS, DATE, TIME, PHONE ̂ꂩw肷B
  (NUMBER, DIGITS  JEIDA-62-2000 ̊głB)
  ȊO̒l TYPE Ɏw肵ꍇɂ̓^OŜB

  )
	set Text = l<CONTEXT TYPE="NUMBER">1234</CONTEXT>łB
  Ƃ邱ƂɂA
	ul͐SO\lłv
  ƓǂݏグB
  ftHgł͏_'.'Aʎ؂L','pB
  
	<CONTEXT TYPE="NUMBER">1,234.5</CONTEXT>
  ͐SO\l_܂Ɠǂ܂BFORMATISOw肷邱Ƃ
	<CONTEXT TYPE="NUMBER" FORMAT="ISO">1 234,5</CONTEXT>
  ̂悤ɁA_','Aʎ؂L' 'p邱ƂłB

	set Text = <CONTEXT TYPE="DIGITS">1234</CONTEXT>łB
  Ƃ邱ƂɂA
	u͈Olłv
  ƓǂݏグB

	set Text = <CONTEXT TYPE="DATE">2003-8-3</CONTEXT>łB
  Ƃ邱ƂɂA
	u͓ONOłv
  ƓǂݏグB
  ftHg̓̕\L@ɂISO 8601̗pĂB
  FORMAT"MDY"ADELIM"/"ƏƂɂ
	<CONTEXT TYPE="DATE" FORMAT="MDY" DELIM="/">8/3/2003</CONTEXT>
  ONOƓǂݏグ邱ƂłB

	set Text = <CONTEXT TYPE="TIME">12:34</CONTEXT>łB
  Ƃ邱ƂɂA
	u͏\񎞎O\lłv
  ƓǂݏグB
	set Text = <CONTEXT TYPE="TIME">12:34:56</CONTEXT>łB
  Ƃ邱ƂɂA
	u͏\񎞎O\l܏\Zbłv
  ƓǂݏグB
  
	set Text = dbԍ<CONTEXT TYPE="PHONE">0120-123-4567</CONTEXT>łB
  Ƃ邱ƂɂA
	udbԍ́ZZAOAlܘZłv
  ƓǂݏグB

(Ql)
  CONTEXT^OpȂꍇ̐Ap̃ftHg̓ǂݏグ͈ȉ
  ƂłB

  NUMBER (ʎ肵ēǂݏグ)Ap͎ɂ΂̓ǂ݂ŁA
  ȂALPHABETƂēǂݏグB
  Aݒt@C̊qɂ肱邱ƂłB

=========
4. s
=========

b҂̑I
	set Speaker = male01
̂悤ɘb ID ݒ肵čsȂB
w肵Ȃ΁AftH[g̘b҂Ƃ "male01" gB
be̋Lqł́A
	set Text = ̌҂́Al炢܂
ɂA𐶐A
	set Speak = NOW
Ƃƍo͂B
	set Save = Filename
ŁAŌɍg` Filenameɏo͂邱ƂłB
t@C` 16kHz, 16bit, signed linear raw file łB

	set ParsedText = data/sentence1.data
	set ParsedText = data/sentence2.data
ȂǁAō쐬⣂̉͌ʂǂݍŉ邱Ƃ
łB

̏o͂ł́A
	set Speak = 12:34:56.000
ŔbJnw肵Ă̏óA܂A
	set Speak = +1000
ŔbJn msec PʂŒx点Ă̏o͂łB

o͒
	set Speak = STOP
^ƁAo͂rŒ~Ar~܂łɉo͂ꂽ
f񂪏o͂B

===========
5. Xbg
===========

  GalateaTalk ͓ɂ̃XbgAɊOlZbg
ȀŒl肵肵ďi߂B`Ă
XbǵAȉ̒ʂłB

    Run :  ( N LIVE ɐݒ肳AEXIT ZbgΏI)
    ProtocolVersion : ʐMvgR̃o[W
    ModuleVersion : vÕo[W
    SpeakerSet : p\ȘbID
    Speaker : ݂̘bID
    Text.text : be ( 4. ŏqׂ set Text = ... ŃZbg)
    Text.pho : fnƉfԒ
    Text.dur : b
    Speak.text : be (Text.text Ɠ)
    Speak.pho : fnƉfԒ (Text.pho Ɠ)
    Speak.dur : b (Text.dur Ɠ)
    Speak.utt : ɔfn
    Speak.len : ɔԒ
    Speak.stat : vȌ ( IDLE, READY, PROCESSING, SPEAKING )

̃Xbg̒lmɂ́A
    inq Text.text
̂悤 inq R}hpB

  ɁAXbg̒lVɃZbgꂽꍇɁAZbgꂽlI
o͂邩ǂXbg̃vpeBɂĐłB
eXbǵAvpeBƂ AutoOutput  NoAutoOutput ̂ǂ炩
lƂAꂼꎩo͂Ao͂Ȃ\B
vpeB̒lύXɂ́A
    prop Text.text = NoAutoOutput
    prop Text.text = AutoOutput
̂悤 prop R}hɂčsȂB
lƂẮAS AutoOutput ݒ肳ĂB

===================
6. f[^̏o
===================

	set Log = t@C
̂悤ɁALog XbgɃt@C^邱ƂɂA
IĂf[^ (`ԑfANZgȂ) 
t@CɏoƂłBw肵t@Cł
݂ꍇɂ́At@C̖ɒǉB
	set Log = CONSOLE
Ƃɂ́AWG[ (stderr) ɏo͂A
    set Log = NO
Ƃ΁Ao͂𒆎~B
Log Xbg̏l NO ƂȂĂAf[^̏o͍͂sȂȂB
of[^́A
	Log.conf (ssm.conf ɂݒ)
	Log.text (̓eLXg)
	Log.arrangedText (`ꂽ̓eLXg)
	Log.chasen (⣂̉͌)
	Log.tag (^Öꗗ(SAYAS^OȊO))
	Log.phoneme (f)
	Log.mora ([)
	Log.morph (`ԑf)
	Log.aphrase (ANZg)
	Log.breath (ċCi)
	Log.sentence ()
̊eXbgɑ΂A
	set Log.chasen = YES
̂悤 YES ̒lZbg邱ƂɂAIB
( ) o͂ĂB
lł͑SĂ Log.* ̃Xbg NO ƂȂĂB

===============
7. G[̏o
===============

    set Err = t@C
̂悤ɁAErr XbgɃt@C^邱ƂɂA
s̃G[o͂t@C֏o͂邱ƂłB
    set Err = CONSOLE
Ƃɂ́AWG[o (stderr) ɏo͂B
Err Xbg̏l CONSOLE ƂȂĂB

=========
8. \[X
=========

    --------------- vO
    gtalk.dsw:           vWFNgt@C
    main.cpp:            CvO
    read_conf.cpp        ݒt@C̓ǂݍ
    ---eLXg͕
    text.cpp:            eLXg͌ʂ̓ǂݍ
    tag.cpp:             beLq^Ỏ
    accent.cpp:          ANZg
    chasen.cpp:          ⣃vZX
    chaone.cpp:          ChaOnevZX
    make_sentence.cpp:   SENTENCE \̍쐬
    make_breath.cpp:     BREATH \̍쐬
    make_aphrase.cpp:    APHRASE \̍쐬
    make_phoneme.cpp:    PHONEME \̍쐬
    morph.cpp:           MORPH \̍쐬
    make_mora.cpp:       MORA \̍쐬
    send.cpp:            ւ̏̓]
    sleep.cpp:           x
    util.cpp:            ̑
    ---
    make_duration.cpp:   fp̌
    make_parameter.cpp:  p[^
    modify_parameter.cpp:^O̎wɊÂC̏C
    do_synthesis.cpp:    g`
    do_output.cpp:       o
    hmmsynth.cpp:        refresh(),init(),ReLXgx
    mlpg.cpp:            HMM̃p[^
    model.cpp:           fHMM̍\
    tree.cpp:            ؒT
    vocoder.cpp:         PvXg{R[_
    misc.cpp:            ̑
    Sock.cpp:            \PbgʐM

    synthesis.h:         \̒`AO[oϐ
    confpara.h:          f[^t@C̃pXAbҏȂ
    command.h:           R}h`
    tag.h:               beLq̃^O
    slot.h:              Xbg`
    pronunciation.h:     
    accent.h:            iAANZgό`̒`

    hmmsynth.h:          header for hmmsynth.cpp O[oϐ  
    vocoder.h:           header for vocoder.cpp  ֐vg^Cv錾Ȃ
    tree.h:              header for tree.cpp     ؍\ Tree
    model.h:             header for model.cpp    f\ Model
    mlpg.h:              header for mlpg.cpp     p[^\ PStream
    misc.h:              header for misc.cpp    ֐vg^Cv錾Ȃ
    da.h:                header for do_output.cpp:o͂̒`
    defaults.h:          HMM̃ftHgp[^̐ݒ
    main.h:              header for main.cpp
    chaone.h:            header for chaone.cpp
    Sock.h:              header for Sock.cpp
    ---ChaOneĂяo
    msxml2.h:            header for msxml
    msxml2.lib:          msxmlCu

    StdAfx.h

    --------------- ft@C
    ssm.conf:            ݒt@C
    mono.lst:            fXg
    chasenrc:            ⣏o̓tH[}bg`
    data/sentence1.data: Tv⣌1
    data/sentence2.data: Tv⣌2
    data/sentence3.data: Tv⣌3
    data/sentence4.data: Tv⣌4
    --------------- ̑
    README.txt:          ̃t@C
    Changelog.txt:       J

=============
9. ff
=============

    duration.pdf:        p̕z
    mcep.pdf:            PvXg̕z
    lf0.pdf:             {g̕z
    tree-mcep.inf:       PvXgɑ΂錈
    tree-dur.inf:        pɑ΂錈
    tree-lf0.inf:        {gɑ΂錈

