chaoneの実体はXSLらしい。。。ということで
http://www.gingerall.com/charlie/ga/xml/l_lib.xml?s=org
とかが使えるsuikyoさんとかぼしゅ~(ぉぃ
いやC++でXSL使えればいいんだけどね。
たぶん、choneライブラリにさっくりなげて、品詞分解された結果をXML風にだして、
それをXSLにかませて、ちゃっちゃとアクセント情報とかを付与して、
できあがったら、それをDOMでよんで、
- 品詞ID,
- 活用形ID,
- 音素,
- 所属アクセント句が疑問系か?,
- アクセント型,
- 文章中で何番目のmoraか,
- 呼気段落で何番目のmoraか,
- アクセント句で何番目のmoraか,
- mora中何番目の音素か
- 各パラメータ(VOICE,PITCHタグの影響を時系列に展開)
に展開するプログラムを書ければ、gtalk_TNGの山はこえるね。
そこまで、展開されたら、あとは音響パラメータをYes/Noクイズにこたえてひろってきて
よーわからんけど、HMM合成のルーチンに投げるだけで音になりそう。
本家gtalkは音を全部生成するまでしゃべらんから、以下のようにパイプライン化するのが理想かな?
パイプライン化を簡単にするために、言語処理オブジェクトのインターフェイス
としては
setInputData();
fetchData();
の二つのメッソッドを持ち、以下のように動くと素敵だとおもいます。
言語.setInputData(text);//発話すべきテキストをすべて入れる
while(1){
extPhonome=言語.fetchData();//n番目の音素に関する全データを取得(上の箇条書きしてるの)
音声.setData(extPhnome);
sound=音声.fetchData()//ここでデータ数がゼロの場合を許容する
//(最初の2回はトライグラム分のデータが溜まってないので作りようがない)
//サウンドバッファに書き込む
}
ここまでくると、ソースをぱちってロ技研オリジナルのをつくってるようなもんだな。orz
ということでgtalk改良計画が始動した気分。
個人的な目標は、HMM音声合成の自由に表現を後付けできるというメリットをいかして、
掛け合い漫才をデスクトップででやらせる!
話者適応で、いろんな発話モデルをさくさくつくって、キャラの量産に耐える。
無論、掛け合い漫才だから、複数人の音声をかぶらせて発話するなんて事も必要だし
立体音響も必要になるかもしれない。
でもそこがおもしろいんじゃないかな。
吹き出しテキストの音声じゃタイミングとか、感情を表現するにはすこしだけ弱い、
そのテキストを補完するための音声。そんな使い方がいいかなと思う今日この頃。
#ちなみに、テキストだけより冗長でも音声もあったがいいとおもったのは
#IRCの音声読み上げを見てから、文章を読む負荷が音声があることで軽減されたきがする
#無論バックグラウンドnoticeって側面もあるけど
0 件のコメント:
コメントを投稿