どうも。けいです。
ブログに書いたいくつかの批判的な記事を削除しています。
別にどこかから圧力があったわけではないのですが、自分のブログの影響力は相当大きいらしく、
以前記事にした会社名などを検索すると小さな会社のトップページやプレスリリースよりも上位に
私のブログが表示されたりするようなのです。
で、それが褒めている記事ならば問題ないのですが、批判的な記事の場合
最悪、その記事が小さな会社にとって致命傷となりかねません。
私が叩いているサービスだったり、会社だったりに対する記事に嘘は無いのですが、
やはりGoogleで検索してその会社のトップページよりも上位に来てしまうようだと、
社会的な責任を感じてしまいます。
なので、小さな会社に対する批判的な記事は今後は控えるようにします。
Galatea Talkで音声合成してみる。
今回はGalatea Projectの成果物の一つであるGalatea Talkをインストールしてみました。
この作業が予想よりもずいぶん重い作業で、依存するライブラリやソフトウェアの数が10個程度。
おまけに2003年以降あまりメンテナンスがされていないようで、予想よりもはるかに時間がかかってしまいました。
目的:Galatea Talkを用いて音声合成を行うこと
その為に必要なアプリ
ChaSen - 形態素解析ツール 最小単位の単語を見つけ出すツール
+ Darts:Double-Array [Aoe 1989]を構築するための シンプルな C++ Template Library.
+ 辞書、IPA辞書などの何らかの辞書が必要です。
IPADic - IPA辞書 ChaSenで使用する辞書
ChaOne - 音韻交替処理プログラム アクセントを作り出す
+ libxslt - ChaOne 本体の変換ロジックはすべて XSLT で書かれている。このため、
ChaOne in C のコンパイル及び実行には、Gnome プロジェクトで開発された
XSLT Cライブラリである libxsltが必要となる
speakers - 話者モデル
で、これらをAPTを使って楽してインストールしようとしていたのですが、
うまくいかんのですよ。
ディストリビューションに付属の辞書なんかも使えるかと思いきや、
文字コードがUTF8だったりして(Galatea TalkはEUC-JPまたはShiftJISしか動かない)、
いちいちどこに展開されたのかわからない
パッケージを追いかけるくらいならば
ソースからインストールしたほうが楽なことに気がついたのは
5,6時間が経過してからでした。
ということで、一つづつメイクしていくことにしました。
まずはChaSenから
Dartsのダウンロード
Dartsのインストール
% ./configure
% make
% make check
% sudo make install
Chasenのダウンロード
Chasenのインストール
% ./configure
% make
% sudo make install
IPA辞書のインストール
% ./configure
% make
% make check
% sudo make install
chaoneのダウンロード
chaoneのインストール(これはchaoneのファイルパスが変わるたびに以下の作業が必要になる。)
$ ./configure
$ ./make
speakersのダウンロード
これは展開するだけでOK
gtalkのダウンロード
gtalkのインストール
main.cの227行目のSetRun を小文字のsetRunに変更する。
227 void SetRun( char *rel, char *val);
変更後
227 void setRun( char *rel, char *val);
その後、以下のコマンドを実行する。
$ ./configure
$ make
ssm.confを以下のように設定する。
$ cat ./ssm.conf
# configuratiuon file for gtalk (GalateaTalk)
# path name of 'chasen'
CHASEN: /usr/local/bin/chasen
# configuration file for 'chasen'
CHASEN-RC: ./chasenrc
#CHASEN-RC: /usr/local/etc/chasenrc
# command of running 'chaone'
CHAONE: ../chaone-1.3.0b2/chaone
# path name of 'chaone.xsl' (only for library-based version)
#CHAONE-XSL-FILE: ../chaone-1.2.0/chaone_t_EUC-JP.xsl
# default for numbers and alphabets
NUMBER: DECIMAL
ALPHABET: WORD
DATE: YMD
TIME: hms
# dictionary
#DICTIONARY: ./gtalk-eucjp.dic
# automatic play of synthesized speech
AUTO-PLAY: NO
# time delay [msec] for autuomatic play
AUTO-PLAY-DELAY: 250
# file of phoneme list
PHONEME-LIST: mono.lst
# parameter files for each speaker
#SPEAKER-ID: male01
#GENDER: male
#DUR-TREE-FILE: ../speakers/male01/tree-dur.inf
#PIT-TREE-FILE: ../speakers/male01/tree-lf0.inf
#MCEP-TREE-FILE: ../speakers/male01/tree-mcep.inf
#DUR-MODEL-FILE: ../speakers/male01/duration.pdf
#PIT-MODEL-FILE: ../speakers/male01/lf0.pdf
#MCEP-MODEL-FILE: ../speakers/male01/mcep.pdf
# parameter files for each speaker
SPEAKER-ID: female01
GENDER: female
DUR-TREE-FILE: ../speakers/female01/tree-dur.inf
PIT-TREE-FILE: ../speakers/female01/tree-lf0.inf
MCEP-TREE-FILE: ../speakers/female01/tree-mcep.inf
DUR-MODEL-FILE: ../speakers/female01/duration.pdf
PIT-MODEL-FILE: ../speakers/female01/lf0.pdf
MCEP-MODEL-FILE: ../speakers/female01/mcep.pdf
gtalkのソースディレクトリは以下のchasenrcを以下のように設定する。
chasenrcはEUCで保存することに注意してください。
$ cat chasenrc
;;
;; chasenrc for unidic-1.3.0
;; chaOne用
;;
;(GRAMMAR /usr/local/lib/chasen/dic/ipadic)
(GRAMMAR /usr/local/lib/chasen/dic/ipadic)
;(GRAMMAR /usr/local/lib/chasen/dic/unidic)
(DADIC chadic)
(UNKNOWN_POS (名詞))
;(UNKNOWN_POS (名詞))
(OUTPUT_FORMAT " %m\n")
(OUTPUT_COMPOUND "SEG")
(BOS_STRING "\n")
(EOS_STRING "\n")
(DEF_CONN_COST 10000)
(POS_COST
((*) 1)
((UNKNOWN) 30000)
)
(CONN_WEIGHT 1)
(MORPH_WEIGHT 1)
(COST_WIDTH 0)
(ANNOTATION
(("<" ">") "%m\n")
(("\"") " %m\n")
)
テストしてみる。
読ませる文章は以下。
$ cat test.txt
set Text = 武術の神と言われる亀仙人より強い天津飯でも歯が立たないドラムを瞬殺 した悟空 が8年修行して、同じ位の強さのピッコロと二人 がかりでやっと倒したラディッツと匹敵する戦闘力を持つ栽培マンをあっさり倒した天津飯・ピッコロ等が束になっても敵 ないナッパを悠々倒した悟空 の2倍以上強いベジータがかなりパワーアップしても全く相手にならない強さのリクームを一撃で倒した悟空 が更にパワーアップしても、それを半分の力で殺せるフリーザをあっという間にバラバラにして消した未来のトランクスでさえ仲間と束になっても敵 ない人造人間17・18号に匹敵する強さを持った神コロ様 でも敵 ない程に生体エネルギーを吸って強くなったセルと互角の16号を大きく越える17号吸収態セルを子供扱い出来る精神と時 の部屋パワーアップ後のベジータと随分差がある悟空 でも勝てない完全体 セルを一方的に痛めつけることが出来るブチ切れ悟飯 をも越えたベジータが命を賭けても倒せなかった魔人ブウが更に凶悪になったブウと互角以上の戦いをしたゴテンクスよりも強くなった悟飯 でも全く歯が立たないゴテンクス&ピッコロ吸収ブウが更に悟飯 を吸収して強化しても全く歯が立たないベジット。
set Save = ../hoge.raw
set Run = EXIT
$ ./gtalk -C ./ssm.conf < ../test.txt
rep Run = LIVE
set Text = 武術の世噺世錣譴覽祇膺佑茲蟠・づ慶堵咾任盪??・・燭覆ぅ疋薀爐鮗PRON SYM="シュンサツ">瞬殺した悟空靴董・韻鍵未龍・気離團奪灰蹐伴PRON SYM="フタリ">二人 がかりでやっと倒したラディッツと匹敵する戦闘力を持つ栽培マンをあっさり倒 PRON SYM="カナワ">敵ないナッパを悠々倒した悟空 の2倍以上強いベジータがかなりパワアップしても全く相 魄豬發播櫃靴深PRON SYM="ゴクウ">悟空が更にパワーアップしても、それを半分の力で殺せるフリザをあっという間にバラバラにして消したRON SYM="カナワ">敵ない人造人間17・18号に匹敵する強さを持った神コロ様 でも敵 ネルギーを吸っ洞・・覆辰織札襪噺潦僂留6号を大きく越える17号吸収態セルを子供扱い出来る精神と時 の部屋パワーアッ RON SYM="ゴクウ">悟空でも勝てない完全体 セルを一方的に痛めつけることが出来るブチ切れ悟飯 を吸収して強化しても全く歯が立たないベジット。
rep Speak.stat = PROCESSING
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
* yomi is NOT katakana ... ・ (a1,a6)
* yomi is NOT katakana ... ・ (a1,a6)
rep Text.text = 武術の神と言われる亀仙人より強い天津飯でも歯が立たないドラムを瞬殺 した悟空 が8年修行して、同じ位の強さのピッコロと二人 がかりでやっと倒したラディッツと匹敵する戦闘力 を持つ栽培マンをあっさり倒した天津飯・ピッコロ等が束になっても敵 ないナッパを悠々倒した 悟空 の2倍以上強いベジータがかなりパワーアップしても全く相手にならない強さのリクームを一撃で倒した悟空 が更にパワーアップしても、それを半分の力で殺せるフリーザをあっという間にバラバラにして消した未来のトランクスでさえ仲間と束になっ ても敵 ない人造人間17・18号に匹敵する強さを持った神コロ様 でも敵 ない程に生体エネルギーを吸って強くなったセルと互角の16号を大きく越える17号吸収態セルを子供扱い出来る精神と時 の部屋パワーアップ後のベジータと随分差がある悟空 でも勝てない完全体 セルを一方的に痛めつけることが出来るブチ切れ悟飯 をも越えたベジータが命を賭けても倒せなかった魔人ブウが更に凶悪になったブウと互角以上の戦いをしたゴテンクスよりも強くなった悟飯 でも全く歯が立たないゴテンクス&ピッコロ吸収ブウが更に悟飯 を吸収して強化しても全く歯が立たないベジット。
rep Speak.text = 武術の神と言われる亀仙人より強い天津飯でも歯が立たないドラムを瞬殺した悟空が8年修行して、同じ位の強さのピッコロと 二人がかりでやっと倒したラディッツと匹敵する戦闘力を持つ栽培マンをあっさり倒した天津飯ピッコロ等が束になっても敵ないナッパを悠々倒した悟空の2倍以上強いベジータがかなりパワーアップしても全く相手にならない強さのリクームを一撃で倒した悟空が更にパワーアップしても、それを半分の力で殺せるフリーザをあっという間にバラバラにして消した未来のトランクスでさえ仲間と束になっても敵ない人造人間十七十八号に匹敵する強さを持った神コロ様でも敵ない程に生体エネルギーを吸って強くなったセルと互角の十六号を大きく越える十七号吸収態セルを子供扱い出来る精神と時の部屋パワーアップ後のベジータと随分差がある悟空でも勝てない完全体セルを一方的に痛めつけることが出来るブチ切れ悟飯をも越えたベジータが命を賭けても倒せなかった魔人ブウが更に凶悪になったブウと互角以上の戦いをしたゴテンクスよりも強くなった悟飯でも全く歯が立たないゴテンクス&ピッコロ吸収ブウが更に悟飯を吸収して強化しても全く歯が立たないベジット。
rep Text.pho = sil[10] b[45] u[65] j[80] u[60] ts[120] u[40] n[50] o[80] k[110] a[55] m[60] i[65] t[90] o[50] i[80] w[55] a[70] r[35] e[70] r[45] u[75] k[110] a[55] m[55] e[75] s[105] e[100] N[60] n[40] i[95] N[90] y[55] o[70] r[45] i[75] ts[120] u[45] y[70] o[85] i[60] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[90] d[30] e[60] m[65] o[85] h[105] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] d[60] o[70] r[35] a[90] m[60] u[65] o[120] sh[120] u[85] N[45] s[95] a[60] ts[120] u[60] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[85] h[105] a[60] ch[115] i[40] n[50] e[105] N[50] sh[120] u[50] gy[85] o[55] o[70] sh[60] I[35] t[75] e[85] pau[70] o[55] n[55] a[85] j[80] i[75] k[110] u[40] r[35] a[90] i[65] n[50] o[90] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[80] p[110] i[65] cl[75] k[100] o[50] r[35] o[75] t[90] o[90] f[60] U[40] t[75] a[50] r[40] i[65] g[55] a[70] k[85] a[50] r[40] i[65] d[50] e[60] y[80] a[80] cl[75] t[100] o[55] t[85] a[65] o[105] sh[60] I[35] t[75] a[50] r[50] a[75] d[50] i[65] cl[75] ts[90] U[40] t[75] o[90] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] s[105] e[100] N[55] t[90] o[60] o[70] ry[70] o[70] k[85] u[45] o[120] m[65] o[75] ts[90] U[40] s[95] a[65] i[60] b[50] a[85] i[65] m[55] a[105] N[75] o[110] a[95] cl[30] s[145] a[50] r[40] i[65] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[60] pau[120] p[175] i[65] cl[75] k[100] o[50] r[35] o[75] t[85] o[60] o[70] g[55] a[80] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[95] i[65] n[50] a[80] cl[75] p[100] a[65] o[120] y[95] u[50] u[70] y[95] u[50] u[60] t[85] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] n[50] o[90] n[60] i[65] b[50] a[85] i[100] i[70] j[80] o[80] o[70] ts[120] u[40] y[70] o[55] i[60] b[50] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] k[110] a[55] n[55] a[70] r[40] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[85] u[65] a[95] i[60] t[90] e[55] n[60] i[60] n[50] a[70] r[35] a[70] n[55] a[85] i[100] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[70] r[50] i[65] k[90] u[65] u[60] m[60] u[65] o[120] i[80] ch[115] i[50] g[65] e[70] k[105] i[40] d[50] e[90] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[90] pau[30] s[95] o[50] r[35] e[55] o[120] h[105] a[100] N[85] b[50] u[100] N[55] n[50] o[80] ch[90] I[45] k[75] a[50] r[35] a[75] d[50] e[70] k[110] o[50] r[35] o[75] s[105] e[50] r[40] u[60] f[95] u[40] r[40] i[80] i[70] z[75] a[110] o[100] a[95] cl[75] t[100] o[65] y[95] u[50] u[60] m[55] a[70] n[60] i[65] b[50] a[70] r[35] a[90] b[50] a[70] r[35] a[70] n[60] i[75] sh[60] I[35] t[75] e[75] k[110] e[65] sh[60] I[35] t[75] a[75] m[60] i[65] r[35] a[90] i[65] n[50] o[90] t[90] o[50] r[35] a[105] N[60] k[75] U[40] s[95] u[40] d[50] e[90] s[105] a[65] e[70] n[55] a[70] k[85] a[55] m[55] a[75] t[90] o[75] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] j[105] i[90] N[85] z[70] o[70] o[70] n[60] i[95] N[80] g[50] e[105] N[80] j[60] u[80] u[60] n[50] a[70] n[55] a[80] pau[80] j[75] u[80] u[70] h[80] a[60] ch[115] i[50] g[60] o[90] o[70] n[60] i[65] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] ts[120] u[45] y[70] o[90] s[105] a[70] o[120] m[65] o[80] cl[75] t[100] a[75] k[110] a[55] m[60] i[65] k[90] o[50] r[35] o[75] s[105] a[55] m[55] a[75] d[50] e[60] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] h[95] o[60] d[50] o[70] n[60] i[75] s[105] e[65] i[60] t[90] a[90] i[100] e[70] n[55] e[70] r[40] u[65] g[65] i[80] i[70] o[105] s[115] u[50] cl[75] t[100] e[85] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] s[105] e[50] r[40] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[40] n[50] o[80] j[105] u[80] u[70] r[35] o[70] k[85] u[50] g[60] o[90] o[100] o[100] o[70] o[95] k[105] i[50] k[75] U[40] k[75] o[60] e[80] r[45] u[75] j[105] u[80] u[60] n[50] a[70] n[55] a[80] g[60] o[90] o[65] ky[120] u[50] u[70] sh[120] u[65] u[60] t[85] a[90] i[60] s[105] e[50] r[40] u[65] o[120] k[110] o[50] d[50] o[80] m[65] o[85] a[85] ts[90] U[40] k[75] a[90] i[60] d[50] e[70] k[105] i[35] r[45] u[75] s[105] e[65] i[60] sh[120] i[85] N[55] t[90] o[75] t[90] o[50] k[105] i[40] n[50] o[80] h[90] e[65] y[80] a[80] p[85] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[50] g[60] o[75] n[55] o[80] b[70] e[85] j[80] i[80] i[60] t[90] a[55] t[90] o[75] z[75] u[65] i[60] b[50] u[100] N[45] s[95] a[60] g[55] a[75] a[90] r[40] u[65] g[60] o[75] k[85] u[65] u[60] d[50] e[60] m[65] o[85] k[110] a[50] t[85] e[55] n[55] a[85] i[60] k[110] a[100] N[90] z[70] e[105] N[55] t[90] a[90] i[60] s[105] e[50] r[40] u[65] o[120] i[90] cl[75] p[100] o[60] o[70] t[85] e[55] k[105] i[40] n[50] i[90] i[60] t[90] a[55] m[55] e[75] ts[90] U[40] k[75] e[50] r[45] u[75] k[110] o[50] t[85] o[65] g[55] a[80] d[60] e[70] k[105] i[40] r[40] u[65] b[50] u[60] ch[115] i[50] g[65] i[65] r[35] e[80] g[60] o[80] h[80] a[95] N[90] o[125] m[65] o[85] k[110] o[90] e[70] t[90] a[75] b[70] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] i[65] n[50] o[70] ch[115] i[45] o[120] k[110] a[50] k[85] e[55] t[90] e[55] m[65] o[90] t[90] a[65] o[70] s[105] e[55] n[55] a[70] k[85] a[65] cl[75] t[100] a[75] m[55] a[85] j[80] i[90] N[85] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] ky[120] o[55] o[95] a[95] k[85] u[40] n[50] i[60] n[50] a[80] cl[75] t[100] a[75] b[70] u[50] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[65] i[70] j[80] o[80] o[70] n[55] o[90] t[90] a[50] t[85] a[55] k[85] a[90] i[80] o[120] sh[60] I[35] t[75] a[75] g[95] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[40] y[70] o[70] r[40] i[60] m[65] o[90] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] g[80] o[80] h[80] a[95] N[90] d[30] e[70] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] g[80] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[65] a[110] N[90] d[30] o[80] p[105] i[65] cl[75] k[100] o[50] r[35] o[70] ky[120] u[50] u[70] sh[120] u[65] u[60] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] g[60] o[80] h[80] a[95] N[75] o[125] ky[145] u[50] u[70] sh[120] u[65] u[70] sh[60] I[35] t[75] e[75] ky[145] o[60] o[70] k[85] a[65] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] b[70] e[85] j[80] i[55] cl[75] t[100] o[65] pau[95] sil[10]
rep Speak.pho = sil[10] b[45] u[65] j[80] u[60] ts[120] u[40] n[50] o[80] k[110] a[55] m[60] i[65] t[90] o[50] i[80] w[55] a[70] r[35] e[70] r[45] u[75] k[110] a[55] m[55] e[75] s[105] e[100] N[60] n[40] i[95] N[90] y[55] o[70] r[45] i[75] ts[120] u[45] y[70] o[85] i[60] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[90] d[30] e[60] m[65] o[85] h[105] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] d[60] o[70] r[35] a[90] m[60] u[65] o[120] sh[120] u[85] N[45] s[95] a[60] ts[120] u[60] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[85] h[105] a[60] ch[115] i[40] n[50] e[105] N[50] sh[120] u[50] gy[85] o[55] o[70] sh[60] I[35] t[75] e[85] pau[70] o[55] n[55] a[85] j[80] i[75] k[110] u[40] r[35] a[90] i[65] n[50] o[90] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[80] p[110] i[65] cl[75] k[100] o[50] r[35] o[75] t[90] o[90] f[60] U[40] t[75] a[50] r[40] i[65] g[55] a[70] k[85] a[50] r[40] i[65] d[50] e[60] y[80] a[80] cl[75] t[100] o[55] t[85] a[65] o[105] sh[60] I[35] t[75] a[50] r[50] a[75] d[50] i[65] cl[75] ts[90] U[40] t[75] o[90] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] s[105] e[100] N[55] t[90] o[60] o[70] ry[70] o[70] k[85] u[45] o[120] m[65] o[75] ts[90] U[40] s[95] a[65] i[60] b[50] a[85] i[65] m[55] a[105] N[75] o[110] a[95] cl[30] s[145] a[50] r[40] i[65] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[60] pau[120] p[175] i[65] cl[75] k[100] o[50] r[35] o[75] t[85] o[60] o[70] g[55] a[80] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[95] i[65] n[50] a[80] cl[75] p[100] a[65] o[120] y[95] u[50] u[70] y[95] u[50] u[60] t[85] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] n[50] o[90] n[60] i[65] b[50] a[85] i[100] i[70] j[80] o[80] o[70] ts[120] u[40] y[70] o[55] i[60] b[50] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] k[110] a[55] n[55] a[70] r[40] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[85] u[65] a[95] i[60] t[90] e[55] n[60] i[60] n[50] a[70] r[35] a[70] n[55] a[85] i[100] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[70] r[50] i[65] k[90] u[65] u[60] m[60] u[65] o[120] i[80] ch[115] i[50] g[65] e[70] k[105] i[40] d[50] e[90] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[90] pau[30] s[95] o[50] r[35] e[55] o[120] h[105] a[100] N[85] b[50] u[100] N[55] n[50] o[80] ch[90] I[45] k[75] a[50] r[35] a[75] d[50] e[70] k[110] o[50] r[35] o[75] s[105] e[50] r[40] u[60] f[95] u[40] r[40] i[80] i[70] z[75] a[110] o[100] a[95] cl[75] t[100] o[65] y[95] u[50] u[60] m[55] a[70] n[60] i[65] b[50] a[70] r[35] a[90] b[50] a[70] r[35] a[70] n[60] i[75] sh[60] I[35] t[75] e[75] k[110] e[65] sh[60] I[35] t[75] a[75] m[60] i[65] r[35] a[90] i[65] n[50] o[90] t[90] o[50] r[35] a[105] N[60] k[75] U[40] s[95] u[40] d[50] e[90] s[105] a[65] e[70] n[55] a[70] k[85] a[55] m[55] a[75] t[90] o[75] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] j[105] i[90] N[85] z[70] o[70] o[70] n[60] i[95] N[80] g[50] e[105] N[80] j[60] u[80] u[60] n[50] a[70] n[55] a[80] pau[80] j[75] u[80] u[70] h[80] a[60] ch[115] i[50] g[60] o[90] o[70] n[60] i[65] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] ts[120] u[45] y[70] o[90] s[105] a[70] o[120] m[65] o[80] cl[75] t[100] a[75] k[110] a[55] m[60] i[65] k[90] o[50] r[35] o[75] s[105] a[55] m[55] a[75] d[50] e[60] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] h[95] o[60] d[50] o[70] n[60] i[75] s[105] e[65] i[60] t[90] a[90] i[100] e[70] n[55] e[70] r[40] u[65] g[65] i[80] i[70] o[105] s[115] u[50] cl[75] t[100] e[85] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] s[105] e[50] r[40] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[40] n[50] o[80] j[105] u[80] u[70] r[35] o[70] k[85] u[50] g[60] o[90] o[100] o[100] o[70] o[95] k[105] i[50] k[75] U[40] k[75] o[60] e[80] r[45] u[75] j[105] u[80] u[60] n[50] a[70] n[55] a[80] g[60] o[90] o[65] ky[120] u[50] u[70] sh[120] u[65] u[60] t[85] a[90] i[60] s[105] e[50] r[40] u[65] o[120] k[110] o[50] d[50] o[80] m[65] o[85] a[85] ts[90] U[40] k[75] a[90] i[60] d[50] e[70] k[105] i[35] r[45] u[75] s[105] e[65] i[60] sh[120] i[85] N[55] t[90] o[75] t[90] o[50] k[105] i[40] n[50] o[80] h[90] e[65] y[80] a[80] p[85] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[50] g[60] o[75] n[55] o[80] b[70] e[85] j[80] i[80] i[60] t[90] a[55] t[90] o[75] z[75] u[65] i[60] b[50] u[100] N[45] s[95] a[60] g[55] a[75] a[90] r[40] u[65] g[60] o[75] k[85] u[65] u[60] d[50] e[60] m[65] o[85] k[110] a[50] t[85] e[55] n[55] a[85] i[60] k[110] a[100] N[90] z[70] e[105] N[55] t[90] a[90] i[60] s[105] e[50] r[40] u[65] o[120] i[90] cl[75] p[100] o[60] o[70] t[85] e[55] k[105] i[40] n[50] i[90] i[60] t[90] a[55] m[55] e[75] ts[90] U[40] k[75] e[50] r[45] u[75] k[110] o[50] t[85] o[65] g[55] a[80] d[60] e[70] k[105] i[40] r[40] u[65] b[50] u[60] ch[115] i[50] g[65] i[65] r[35] e[80] g[60] o[80] h[80] a[95] N[90] o[125] m[65] o[85] k[110] o[90] e[70] t[90] a[75] b[70] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] i[65] n[50] o[70] ch[115] i[45] o[120] k[110] a[50] k[85] e[55] t[90] e[55] m[65] o[90] t[90] a[65] o[70] s[105] e[55] n[55] a[70] k[85] a[65] cl[75] t[100] a[75] m[55] a[85] j[80] i[90] N[85] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] ky[120] o[55] o[95] a[95] k[85] u[40] n[50] i[60] n[50] a[80] cl[75] t[100] a[75] b[70] u[50] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[65] i[70] j[80] o[80] o[70] n[55] o[90] t[90] a[50] t[85] a[55] k[85] a[90] i[80] o[120] sh[60] I[35] t[75] a[75] g[95] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[40] y[70] o[70] r[40] i[60] m[65] o[90] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] g[80] o[80] h[80] a[95] N[90] d[30] e[70] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] g[80] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[65] a[110] N[90] d[30] o[80] p[105] i[65] cl[75] k[100] o[50] r[35] o[70] ky[120] u[50] u[70] sh[120] u[65] u[60] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] g[60] o[80] h[80] a[95] N[75] o[125] ky[145] u[50] u[70] sh[120] u[65] u[70] sh[60] I[35] t[75] e[75] ky[145] o[60] o[70] k[85] a[65] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] b[70] e[85] j[80] i[55] cl[75] t[100] o[65] pau[95] sil[10]
rep Text.dur = 79670
rep Speak.dur = 79670
rep Speak.stat = READY
set Save = ../hoge.raw
set Run = EXIT
rep Run = EXIT
成功。作成した音声ファイルはこちら
Galatea Talkによる音声合成はこれにて終了。
コメント(0)
2007.11.23
[
Myカテゴリ:試してみた
]
この作業が予想よりもずいぶん重い作業で、依存するライブラリやソフトウェアの数が10個程度。
おまけに2003年以降あまりメンテナンスがされていないようで、予想よりもはるかに時間がかかってしまいました。
目的:Galatea Talkを用いて音声合成を行うこと
その為に必要なアプリ
ChaSen - 形態素解析ツール 最小単位の単語を見つけ出すツール
+ Darts:Double-Array [Aoe 1989]を構築するための シンプルな C++ Template Library.
+ 辞書、IPA辞書などの何らかの辞書が必要です。
IPADic - IPA辞書 ChaSenで使用する辞書
ChaOne - 音韻交替処理プログラム アクセントを作り出す
+ libxslt - ChaOne 本体の変換ロジックはすべて XSLT で書かれている。このため、
ChaOne in C のコンパイル及び実行には、Gnome プロジェクトで開発された
XSLT Cライブラリである libxsltが必要となる
speakers - 話者モデル
で、これらをAPTを使って楽してインストールしようとしていたのですが、
うまくいかんのですよ。
ディストリビューションに付属の辞書なんかも使えるかと思いきや、
文字コードがUTF8だったりして(Galatea TalkはEUC-JPまたはShiftJISしか動かない)、
いちいちどこに展開されたのかわからない
パッケージを追いかけるくらいならば
ソースからインストールしたほうが楽なことに気がついたのは
5,6時間が経過してからでした。
ということで、一つづつメイクしていくことにしました。
まずはChaSenから
Dartsのダウンロード
Dartsのインストール
% ./configure
% make
% make check
% sudo make install
Chasenのダウンロード
Chasenのインストール
% ./configure
% make
% sudo make install
IPA辞書のインストール
% ./configure
% make
% make check
% sudo make install
chaoneのダウンロード
chaoneのインストール(これはchaoneのファイルパスが変わるたびに以下の作業が必要になる。)
$ ./configure
$ ./make
speakersのダウンロード
これは展開するだけでOK
gtalkのダウンロード
gtalkのインストール
main.cの227行目のSetRun を小文字のsetRunに変更する。
227 void SetRun( char *rel, char *val);
変更後
227 void setRun( char *rel, char *val);
その後、以下のコマンドを実行する。
$ ./configure
$ make
ssm.confを以下のように設定する。
$ cat ./ssm.conf
# configuratiuon file for gtalk (GalateaTalk)
# path name of 'chasen'
CHASEN: /usr/local/bin/chasen
# configuration file for 'chasen'
CHASEN-RC: ./chasenrc
#CHASEN-RC: /usr/local/etc/chasenrc
# command of running 'chaone'
CHAONE: ../chaone-1.3.0b2/chaone
# path name of 'chaone.xsl' (only for library-based version)
#CHAONE-XSL-FILE: ../chaone-1.2.0/chaone_t_EUC-JP.xsl
# default for numbers and alphabets
NUMBER: DECIMAL
ALPHABET: WORD
DATE: YMD
TIME: hms
# dictionary
#DICTIONARY: ./gtalk-eucjp.dic
# automatic play of synthesized speech
AUTO-PLAY: NO
# time delay [msec] for autuomatic play
AUTO-PLAY-DELAY: 250
# file of phoneme list
PHONEME-LIST: mono.lst
# parameter files for each speaker
#SPEAKER-ID: male01
#GENDER: male
#DUR-TREE-FILE: ../speakers/male01/tree-dur.inf
#PIT-TREE-FILE: ../speakers/male01/tree-lf0.inf
#MCEP-TREE-FILE: ../speakers/male01/tree-mcep.inf
#DUR-MODEL-FILE: ../speakers/male01/duration.pdf
#PIT-MODEL-FILE: ../speakers/male01/lf0.pdf
#MCEP-MODEL-FILE: ../speakers/male01/mcep.pdf
# parameter files for each speaker
SPEAKER-ID: female01
GENDER: female
DUR-TREE-FILE: ../speakers/female01/tree-dur.inf
PIT-TREE-FILE: ../speakers/female01/tree-lf0.inf
MCEP-TREE-FILE: ../speakers/female01/tree-mcep.inf
DUR-MODEL-FILE: ../speakers/female01/duration.pdf
PIT-MODEL-FILE: ../speakers/female01/lf0.pdf
MCEP-MODEL-FILE: ../speakers/female01/mcep.pdf
gtalkのソースディレクトリは以下のchasenrcを以下のように設定する。
chasenrcはEUCで保存することに注意してください。
$ cat chasenrc
;;
;; chasenrc for unidic-1.3.0
;; chaOne用
;;
;(GRAMMAR /usr/local/lib/chasen/dic/ipadic)
(GRAMMAR /usr/local/lib/chasen/dic/ipadic)
;(GRAMMAR /usr/local/lib/chasen/dic/unidic)
(DADIC chadic)
(UNKNOWN_POS (名詞))
;(UNKNOWN_POS (名詞))
(OUTPUT_FORMAT "
(OUTPUT_COMPOUND "SEG")
(BOS_STRING "
(EOS_STRING "
(DEF_CONN_COST 10000)
(POS_COST
((*) 1)
((UNKNOWN) 30000)
)
(CONN_WEIGHT 1)
(MORPH_WEIGHT 1)
(COST_WIDTH 0)
(ANNOTATION
(("<" ">") "%m\n")
(("\"") "
)
テストしてみる。
読ませる文章は以下。
$ cat test.txt
set Text = 武術の神と言われる亀仙人より強い天津飯でも歯が立たないドラムを
set Save = ../hoge.raw
set Run = EXIT
$ ./gtalk -C ./ssm.conf < ../test.txt
rep Run = LIVE
set Text = 武術の世噺世錣譴覽祇膺佑茲蟠・づ慶堵咾任盪??・・燭覆ぅ疋薀爐鮗PRON SYM="シュンサツ">瞬殺した
rep Speak.stat = PROCESSING
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
* yomi is NOT katakana ... ・ (a1,a6)
* yomi is NOT katakana ... ・ (a1,a6)
rep Text.text = 武術の神と言われる亀仙人より強い天津飯でも歯が立たないドラムを
rep Speak.text = 武術の神と言われる亀仙人より強い天津飯でも歯が立たないドラムを瞬殺した悟空が8年修行して、同じ位の強さのピッコロと 二人がかりでやっと倒したラディッツと匹敵する戦闘力を持つ栽培マンをあっさり倒した天津飯ピッコロ等が束になっても敵ないナッパを悠々倒した悟空の2倍以上強いベジータがかなりパワーアップしても全く相手にならない強さのリクームを一撃で倒した悟空が更にパワーアップしても、それを半分の力で殺せるフリーザをあっという間にバラバラにして消した未来のトランクスでさえ仲間と束になっても敵ない人造人間十七十八号に匹敵する強さを持った神コロ様でも敵ない程に生体エネルギーを吸って強くなったセルと互角の十六号を大きく越える十七号吸収態セルを子供扱い出来る精神と時の部屋パワーアップ後のベジータと随分差がある悟空でも勝てない完全体セルを一方的に痛めつけることが出来るブチ切れ悟飯をも越えたベジータが命を賭けても倒せなかった魔人ブウが更に凶悪になったブウと互角以上の戦いをしたゴテンクスよりも強くなった悟飯でも全く歯が立たないゴテンクス&ピッコロ吸収ブウが更に悟飯を吸収して強化しても全く歯が立たないベジット。
rep Text.pho = sil[10] b[45] u[65] j[80] u[60] ts[120] u[40] n[50] o[80] k[110] a[55] m[60] i[65] t[90] o[50] i[80] w[55] a[70] r[35] e[70] r[45] u[75] k[110] a[55] m[55] e[75] s[105] e[100] N[60] n[40] i[95] N[90] y[55] o[70] r[45] i[75] ts[120] u[45] y[70] o[85] i[60] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[90] d[30] e[60] m[65] o[85] h[105] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] d[60] o[70] r[35] a[90] m[60] u[65] o[120] sh[120] u[85] N[45] s[95] a[60] ts[120] u[60] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[85] h[105] a[60] ch[115] i[40] n[50] e[105] N[50] sh[120] u[50] gy[85] o[55] o[70] sh[60] I[35] t[75] e[85] pau[70] o[55] n[55] a[85] j[80] i[75] k[110] u[40] r[35] a[90] i[65] n[50] o[90] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[80] p[110] i[65] cl[75] k[100] o[50] r[35] o[75] t[90] o[90] f[60] U[40] t[75] a[50] r[40] i[65] g[55] a[70] k[85] a[50] r[40] i[65] d[50] e[60] y[80] a[80] cl[75] t[100] o[55] t[85] a[65] o[105] sh[60] I[35] t[75] a[50] r[50] a[75] d[50] i[65] cl[75] ts[90] U[40] t[75] o[90] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] s[105] e[100] N[55] t[90] o[60] o[70] ry[70] o[70] k[85] u[45] o[120] m[65] o[75] ts[90] U[40] s[95] a[65] i[60] b[50] a[85] i[65] m[55] a[105] N[75] o[110] a[95] cl[30] s[145] a[50] r[40] i[65] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[60] pau[120] p[175] i[65] cl[75] k[100] o[50] r[35] o[75] t[85] o[60] o[70] g[55] a[80] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[95] i[65] n[50] a[80] cl[75] p[100] a[65] o[120] y[95] u[50] u[70] y[95] u[50] u[60] t[85] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] n[50] o[90] n[60] i[65] b[50] a[85] i[100] i[70] j[80] o[80] o[70] ts[120] u[40] y[70] o[55] i[60] b[50] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] k[110] a[55] n[55] a[70] r[40] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[85] u[65] a[95] i[60] t[90] e[55] n[60] i[60] n[50] a[70] r[35] a[70] n[55] a[85] i[100] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[70] r[50] i[65] k[90] u[65] u[60] m[60] u[65] o[120] i[80] ch[115] i[50] g[65] e[70] k[105] i[40] d[50] e[90] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[90] pau[30] s[95] o[50] r[35] e[55] o[120] h[105] a[100] N[85] b[50] u[100] N[55] n[50] o[80] ch[90] I[45] k[75] a[50] r[35] a[75] d[50] e[70] k[110] o[50] r[35] o[75] s[105] e[50] r[40] u[60] f[95] u[40] r[40] i[80] i[70] z[75] a[110] o[100] a[95] cl[75] t[100] o[65] y[95] u[50] u[60] m[55] a[70] n[60] i[65] b[50] a[70] r[35] a[90] b[50] a[70] r[35] a[70] n[60] i[75] sh[60] I[35] t[75] e[75] k[110] e[65] sh[60] I[35] t[75] a[75] m[60] i[65] r[35] a[90] i[65] n[50] o[90] t[90] o[50] r[35] a[105] N[60] k[75] U[40] s[95] u[40] d[50] e[90] s[105] a[65] e[70] n[55] a[70] k[85] a[55] m[55] a[75] t[90] o[75] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] j[105] i[90] N[85] z[70] o[70] o[70] n[60] i[95] N[80] g[50] e[105] N[80] j[60] u[80] u[60] n[50] a[70] n[55] a[80] pau[80] j[75] u[80] u[70] h[80] a[60] ch[115] i[50] g[60] o[90] o[70] n[60] i[65] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] ts[120] u[45] y[70] o[90] s[105] a[70] o[120] m[65] o[80] cl[75] t[100] a[75] k[110] a[55] m[60] i[65] k[90] o[50] r[35] o[75] s[105] a[55] m[55] a[75] d[50] e[60] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] h[95] o[60] d[50] o[70] n[60] i[75] s[105] e[65] i[60] t[90] a[90] i[100] e[70] n[55] e[70] r[40] u[65] g[65] i[80] i[70] o[105] s[115] u[50] cl[75] t[100] e[85] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] s[105] e[50] r[40] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[40] n[50] o[80] j[105] u[80] u[70] r[35] o[70] k[85] u[50] g[60] o[90] o[100] o[100] o[70] o[95] k[105] i[50] k[75] U[40] k[75] o[60] e[80] r[45] u[75] j[105] u[80] u[60] n[50] a[70] n[55] a[80] g[60] o[90] o[65] ky[120] u[50] u[70] sh[120] u[65] u[60] t[85] a[90] i[60] s[105] e[50] r[40] u[65] o[120] k[110] o[50] d[50] o[80] m[65] o[85] a[85] ts[90] U[40] k[75] a[90] i[60] d[50] e[70] k[105] i[35] r[45] u[75] s[105] e[65] i[60] sh[120] i[85] N[55] t[90] o[75] t[90] o[50] k[105] i[40] n[50] o[80] h[90] e[65] y[80] a[80] p[85] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[50] g[60] o[75] n[55] o[80] b[70] e[85] j[80] i[80] i[60] t[90] a[55] t[90] o[75] z[75] u[65] i[60] b[50] u[100] N[45] s[95] a[60] g[55] a[75] a[90] r[40] u[65] g[60] o[75] k[85] u[65] u[60] d[50] e[60] m[65] o[85] k[110] a[50] t[85] e[55] n[55] a[85] i[60] k[110] a[100] N[90] z[70] e[105] N[55] t[90] a[90] i[60] s[105] e[50] r[40] u[65] o[120] i[90] cl[75] p[100] o[60] o[70] t[85] e[55] k[105] i[40] n[50] i[90] i[60] t[90] a[55] m[55] e[75] ts[90] U[40] k[75] e[50] r[45] u[75] k[110] o[50] t[85] o[65] g[55] a[80] d[60] e[70] k[105] i[40] r[40] u[65] b[50] u[60] ch[115] i[50] g[65] i[65] r[35] e[80] g[60] o[80] h[80] a[95] N[90] o[125] m[65] o[85] k[110] o[90] e[70] t[90] a[75] b[70] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] i[65] n[50] o[70] ch[115] i[45] o[120] k[110] a[50] k[85] e[55] t[90] e[55] m[65] o[90] t[90] a[65] o[70] s[105] e[55] n[55] a[70] k[85] a[65] cl[75] t[100] a[75] m[55] a[85] j[80] i[90] N[85] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] ky[120] o[55] o[95] a[95] k[85] u[40] n[50] i[60] n[50] a[80] cl[75] t[100] a[75] b[70] u[50] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[65] i[70] j[80] o[80] o[70] n[55] o[90] t[90] a[50] t[85] a[55] k[85] a[90] i[80] o[120] sh[60] I[35] t[75] a[75] g[95] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[40] y[70] o[70] r[40] i[60] m[65] o[90] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] g[80] o[80] h[80] a[95] N[90] d[30] e[70] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] g[80] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[65] a[110] N[90] d[30] o[80] p[105] i[65] cl[75] k[100] o[50] r[35] o[70] ky[120] u[50] u[70] sh[120] u[65] u[60] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] g[60] o[80] h[80] a[95] N[75] o[125] ky[145] u[50] u[70] sh[120] u[65] u[70] sh[60] I[35] t[75] e[75] ky[145] o[60] o[70] k[85] a[65] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] b[70] e[85] j[80] i[55] cl[75] t[100] o[65] pau[95] sil[10]
rep Speak.pho = sil[10] b[45] u[65] j[80] u[60] ts[120] u[40] n[50] o[80] k[110] a[55] m[60] i[65] t[90] o[50] i[80] w[55] a[70] r[35] e[70] r[45] u[75] k[110] a[55] m[55] e[75] s[105] e[100] N[60] n[40] i[95] N[90] y[55] o[70] r[45] i[75] ts[120] u[45] y[70] o[85] i[60] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[90] d[30] e[60] m[65] o[85] h[105] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] d[60] o[70] r[35] a[90] m[60] u[65] o[120] sh[120] u[85] N[45] s[95] a[60] ts[120] u[60] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[85] h[105] a[60] ch[115] i[40] n[50] e[105] N[50] sh[120] u[50] gy[85] o[55] o[70] sh[60] I[35] t[75] e[85] pau[70] o[55] n[55] a[85] j[80] i[75] k[110] u[40] r[35] a[90] i[65] n[50] o[90] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[80] p[110] i[65] cl[75] k[100] o[50] r[35] o[75] t[90] o[90] f[60] U[40] t[75] a[50] r[40] i[65] g[55] a[70] k[85] a[50] r[40] i[65] d[50] e[60] y[80] a[80] cl[75] t[100] o[55] t[85] a[65] o[105] sh[60] I[35] t[75] a[50] r[50] a[75] d[50] i[65] cl[75] ts[90] U[40] t[75] o[90] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] s[105] e[100] N[55] t[90] o[60] o[70] ry[70] o[70] k[85] u[45] o[120] m[65] o[75] ts[90] U[40] s[95] a[65] i[60] b[50] a[85] i[65] m[55] a[105] N[75] o[110] a[95] cl[30] s[145] a[50] r[40] i[65] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[60] pau[120] p[175] i[65] cl[75] k[100] o[50] r[35] o[75] t[85] o[60] o[70] g[55] a[80] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[95] i[65] n[50] a[80] cl[75] p[100] a[65] o[120] y[95] u[50] u[70] y[95] u[50] u[60] t[85] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] n[50] o[90] n[60] i[65] b[50] a[85] i[100] i[70] j[80] o[80] o[70] ts[120] u[40] y[70] o[55] i[60] b[50] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] k[110] a[55] n[55] a[70] r[40] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[85] u[65] a[95] i[60] t[90] e[55] n[60] i[60] n[50] a[70] r[35] a[70] n[55] a[85] i[100] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[70] r[50] i[65] k[90] u[65] u[60] m[60] u[65] o[120] i[80] ch[115] i[50] g[65] e[70] k[105] i[40] d[50] e[90] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[90] pau[30] s[95] o[50] r[35] e[55] o[120] h[105] a[100] N[85] b[50] u[100] N[55] n[50] o[80] ch[90] I[45] k[75] a[50] r[35] a[75] d[50] e[70] k[110] o[50] r[35] o[75] s[105] e[50] r[40] u[60] f[95] u[40] r[40] i[80] i[70] z[75] a[110] o[100] a[95] cl[75] t[100] o[65] y[95] u[50] u[60] m[55] a[70] n[60] i[65] b[50] a[70] r[35] a[90] b[50] a[70] r[35] a[70] n[60] i[75] sh[60] I[35] t[75] e[75] k[110] e[65] sh[60] I[35] t[75] a[75] m[60] i[65] r[35] a[90] i[65] n[50] o[90] t[90] o[50] r[35] a[105] N[60] k[75] U[40] s[95] u[40] d[50] e[90] s[105] a[65] e[70] n[55] a[70] k[85] a[55] m[55] a[75] t[90] o[75] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] j[105] i[90] N[85] z[70] o[70] o[70] n[60] i[95] N[80] g[50] e[105] N[80] j[60] u[80] u[60] n[50] a[70] n[55] a[80] pau[80] j[75] u[80] u[70] h[80] a[60] ch[115] i[50] g[60] o[90] o[70] n[60] i[65] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] ts[120] u[45] y[70] o[90] s[105] a[70] o[120] m[65] o[80] cl[75] t[100] a[75] k[110] a[55] m[60] i[65] k[90] o[50] r[35] o[75] s[105] a[55] m[55] a[75] d[50] e[60] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] h[95] o[60] d[50] o[70] n[60] i[75] s[105] e[65] i[60] t[90] a[90] i[100] e[70] n[55] e[70] r[40] u[65] g[65] i[80] i[70] o[105] s[115] u[50] cl[75] t[100] e[85] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] s[105] e[50] r[40] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[40] n[50] o[80] j[105] u[80] u[70] r[35] o[70] k[85] u[50] g[60] o[90] o[100] o[100] o[70] o[95] k[105] i[50] k[75] U[40] k[75] o[60] e[80] r[45] u[75] j[105] u[80] u[60] n[50] a[70] n[55] a[80] g[60] o[90] o[65] ky[120] u[50] u[70] sh[120] u[65] u[60] t[85] a[90] i[60] s[105] e[50] r[40] u[65] o[120] k[110] o[50] d[50] o[80] m[65] o[85] a[85] ts[90] U[40] k[75] a[90] i[60] d[50] e[70] k[105] i[35] r[45] u[75] s[105] e[65] i[60] sh[120] i[85] N[55] t[90] o[75] t[90] o[50] k[105] i[40] n[50] o[80] h[90] e[65] y[80] a[80] p[85] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[50] g[60] o[75] n[55] o[80] b[70] e[85] j[80] i[80] i[60] t[90] a[55] t[90] o[75] z[75] u[65] i[60] b[50] u[100] N[45] s[95] a[60] g[55] a[75] a[90] r[40] u[65] g[60] o[75] k[85] u[65] u[60] d[50] e[60] m[65] o[85] k[110] a[50] t[85] e[55] n[55] a[85] i[60] k[110] a[100] N[90] z[70] e[105] N[55] t[90] a[90] i[60] s[105] e[50] r[40] u[65] o[120] i[90] cl[75] p[100] o[60] o[70] t[85] e[55] k[105] i[40] n[50] i[90] i[60] t[90] a[55] m[55] e[75] ts[90] U[40] k[75] e[50] r[45] u[75] k[110] o[50] t[85] o[65] g[55] a[80] d[60] e[70] k[105] i[40] r[40] u[65] b[50] u[60] ch[115] i[50] g[65] i[65] r[35] e[80] g[60] o[80] h[80] a[95] N[90] o[125] m[65] o[85] k[110] o[90] e[70] t[90] a[75] b[70] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] i[65] n[50] o[70] ch[115] i[45] o[120] k[110] a[50] k[85] e[55] t[90] e[55] m[65] o[90] t[90] a[65] o[70] s[105] e[55] n[55] a[70] k[85] a[65] cl[75] t[100] a[75] m[55] a[85] j[80] i[90] N[85] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] ky[120] o[55] o[95] a[95] k[85] u[40] n[50] i[60] n[50] a[80] cl[75] t[100] a[75] b[70] u[50] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[65] i[70] j[80] o[80] o[70] n[55] o[90] t[90] a[50] t[85] a[55] k[85] a[90] i[80] o[120] sh[60] I[35] t[75] a[75] g[95] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[40] y[70] o[70] r[40] i[60] m[65] o[90] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] g[80] o[80] h[80] a[95] N[90] d[30] e[70] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] g[80] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[65] a[110] N[90] d[30] o[80] p[105] i[65] cl[75] k[100] o[50] r[35] o[70] ky[120] u[50] u[70] sh[120] u[65] u[60] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] g[60] o[80] h[80] a[95] N[75] o[125] ky[145] u[50] u[70] sh[120] u[65] u[70] sh[60] I[35] t[75] e[75] ky[145] o[60] o[70] k[85] a[65] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] b[70] e[85] j[80] i[55] cl[75] t[100] o[65] pau[95] sil[10]
rep Text.dur = 79670
rep Speak.dur = 79670
rep Speak.stat = READY
set Save = ../hoge.raw
set Run = EXIT
rep Run = EXIT
成功。作成した音声ファイルはこちら
Galatea Talkによる音声合成はこれにて終了。
ソフトウェアRAIDはRAIDレベルを複合させるべきである。
先日作成した自作PCはDevice Mapperを用いてRAID0 * 4台でアクセスしており、
アクセス速度が平均270MB/sec くらいです。
この結果には非常に満足していたのですが、RAIDについて考えていくうちに、
Device Mapperを用いるよりも、mdを用いたRAIDレベル複合型の方が効率がいいことに気がつきました。
というのも、各RAIDレベルの欠点をほぼ完璧に補うような使い方が
MDを用いたソフトウェアの複合RAIDならば可能だからです。
(DeviceMapperはHDD単位でRAIDレベルを決めなければならないので
欠点を補うことができない)
RAID0の利点と欠点
利点:読み書き共に最も高速
欠点:信頼性無し
向いている用途:読み書きが頻繁に発生する、どうでもいいデータ。
例:コンパイル、エンコード、デコード、変換などの重い作業やスワップ。
RAID10
利点:読み書き共にそこそこ高速で、信頼性がある
欠点:使用可能な容量は 一台のHDDの容量 * HDDの台数 / 2
速度は一台のHDDの速度 * HDDの台数 / 2
つまりHDDの性能の半分しか使えない。
向いている用途:読み書きが発生する重要なデータ
例:CVS、FTP、samba, SQLサーバやログファイルなど
RAID5
利点:読み込みがかなり高速で、信頼性がある
欠点:書き込みが遅すぎる。どのくらい遅いのかと言うと、
パリティチェックがあるため、HDD一台で使用しているときよりも書き込みは遅い。
向いている用途:読みこみのみが発生するデータ
例:Webサーバー
実際にシステムを使用状況を調べてみると、
9割方のIOアクセスが読み取りであることがわかった。
ということはほとんどのディレクトリをRAID5にすることができ、
残りの1割をRAID10にすればいいのだ。
そして、作業用スペースはRAID0にする。(オリジナルデータはRAID10のCVSに保存)
実際に試してみた。
リソースはHDDは250GB * 5台。内訳:ATA1台、SATA4台。
全てのディスクのパーティションは以下のように分割した。
1 1513MB -- RAID0用
2 8743MB -- RAID10用
3 239799MB -- RAID5用
RAID10は2で割り切れる台数でしかRAIDを組めないので、
SATA 4台でRAID10を組み、ATAの2はルートパーティションとした。
ファイルシステムの作成
※mdを使用する場合にはファイルシステムの作成後にmd Arrayを作らないと、
容量がおかしくなるので必ずファイルシステム作成後にArrayを作ること!
sudo mkfs.reiserfs /dev/hda1
sudo mkfs.reiserfs /dev/sda1
sudo mkfs.reiserfs /dev/sdb1
sudo mkfs.reiserfs /dev/sdc1
sudo mkfs.reiserfs /dev/sdd1
sudo mkfs.reiserfs /dev/sda2
sudo mkfs.reiserfs /dev/sdb2
sudo mkfs.reiserfs /dev/sdc2
sudo mkfs.reiserfs /dev/sdd2
sudo mkfs.reiserfs /dev/hda3
sudo mkfs.reiserfs /dev/sda3
sudo mkfs.reiserfs /dev/sdb3
sudo mkfs.reiserfs /dev/sdc3
sudo mkfs.reiserfs /dev/sdd3
Arrayの作成
RAID0の作成
$ sudo mdadm --create --verbose /dev/md1 --level=0 --raid-devices=5 /dev/hda1 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: chunk size defaults to 64K
mdadm: /dev/hda1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/hda1 appears to be part of a raid array:
level=raid0 devices=5 ctime=Wed Oct 31 22:05:42 2007
mdadm: /dev/sda1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdb1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdc1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdd1 appears to contain a reiserfs file system
size = 1477888K
Continue creating array? y
mdadm: array /dev/md1 started.
RAID10の作成
$ sudo mdadm --create --verbose /dev/md2 --level=10 --raid-devices=4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
mdadm: layout defaults to n1
mdadm: chunk size defaults to 64K
mdadm: /dev/sda2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdb2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdc2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdd2 appears to contain a reiserfs file system
size = 8538496K
mdadm: size set to 8538432K
Continue creating array? y
mdadm: array /dev/md2 started.
RAID5の作成
$ sudo mdadm --create --verbose /dev/md3 --level=5 --raid-devices=5 /dev/hda3 /dev/sda3 /dev/sdb3 /dev/sdc3 /dev/sdd3
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: /dev/hda3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/hda3 appears to be part of a raid array:
level=raid5 devices=5 ctime=Thu Nov 1 22:36:39 2007
mdadm: /dev/sda3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdb3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdc3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdd3 appears to contain a reiserfs file system
size = 234179456K
mdadm: size set to 234179392K
Continue creating array? y
mdadm: array /dev/md3 started.
RAID5はパリティの作成があるので、ここで20分くらい待つ。
作成状況は以下のコマンドで確認できる。
$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md3 : active raid5 sdd3[5] sdc3[3] sdb3[2] sda3[1] hda3[0]
936717568 blocks level 5, 64k chunk, algorithm 2 [5/4] [UUUU_]
[=====>...............] recovery = 28.6% (67002024/234179392) finish=40.8min speed=68165K/sec
md2 : active raid10 sdd2[3] sdc2[2] sdb2[1] sda2[0]
17076864 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md1 : active raid0 sdd1[4] sdc1[3] sdb1[2] sda1[1] hda1[0]
7389120 blocks 64k chunks
unused devices:
/dev/mdX のパーティションの作成
この時点では/dev/md0 のファイルシステムタイプは決まっていないので、
cfdisk /dev/md0 などでファイルシステムのタイプを決める。
sudo cfdisk /dev/md1
sudo cfdisk /dev/md2
sudo cfdisk /dev/md3
/dev/mdXへのファイルシステムの作成
sudo mkfs.reiserfs /dev/md1
sudo mkfs.reiserfs /dev/md2
sudo mkfs.reiserfs /dev/md3
これで作成完了!
そして、気になるベンチは・・・
RAID0 5台 /dev/md1
$ sudo hdparm -ft /dev/md1
/dev/md1:
Timing buffered disk reads: 1024 MB in 3.00 seconds = 341.32 MB/sec
RAID10 4台 /dev/md2
$ sudo hdparm -ft /dev/md2
/dev/md2:
Timing buffered disk reads: 542 MB in 3.00 seconds = 180.57 MB/sec
RAID5 5台 /dev/md3
$ sudo hdparm -ft /dev/md3
/dev/md3:
Timing buffered disk reads: 810 MB in 3.01 seconds = 269.48 MB/sec
うん。ほぼ予想道理の結果となった。
システム起動時に自動的にマウントされるように/etc/fstabの編集を行う。
$ cat /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/hda2 / reiserfs notail 0 1
/dev/md1 /mnt/raid0 reiserfs defaults 0 0
/dev/md2 /mnt/raid10 reiserfs defaults 0 0
/dev/md3 /mnt/raid5 reiserfs defaults 0 0
これで何の作業を行うにしても、ディスクに関しては
通常の2倍(raid10)~5倍(RAID0)程度高速に作業ができる環境の出来上がりです。
2007/12/09 追記
いつからかわからないが、いつも間にか
/dev/hda3 がRAID5から外れてしまっていた。
チャンスとばかりにベンチマークを取ると、108MB/s のアクセス速度であった。
へ~。RAID5は障害が起きると、アクセス速度が激遅になるので
すぐにわかると言っていた人もおりましたが、この速度だと微妙かも。
(実際私も気がつきませんでしたし)
以下のコマンドを実行し復旧した。
% sudo mdadm /dev/md3 -a /dev/hda3
復旧度は以下のコマンドで確認する。
% cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md3 : active raid5 hda3[5] sda3[1] sdd3[4] sdc3[3] sdb3[2]
936717568 blocks level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]
[>....................] recovery = 4.1% (9733504/234179392) finish=54.1min speed=69056K/sec
md2 : active raid10 sda2[0] sdd2[3] sdc2[2] sdb2[1]
17076864 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md1 : active raid0 hda1[0] sdd1[4] sdc1[3] sdb1[2] sda1[1]
7389120 blocks 64k chunks
unused devices:
2008/08/25 追記
10ヶ月ほど使用してみても、壊れることは無く安定して動作している。
ただ、使用していて、うっかりやってしまったミスがあるので、
注意点として報告しておこうと思う。
・カーネルを再構築して再起動した際、再構築のオプションなどにミスがあると、
ルートパーティションにあるRAIDアレイが全てぶっ飛ぶ。
・aptitude install でうっかりカーネルをインストールしてしまった場合、
ルートパーティションにあるRAIDアレイが全てぶっ飛ぶ。
私の場合、xen-hypervisor-3.0.3-1-i386-pae がカーネルだと気がつかなかったのですよ。
そのおかげで、再起動したらエラーが大量に発生し、
ルートパーティションにあるRAIDアレイが通常のファイルシステムとしてマウントされ、
データが吹っ飛びました。
RAID5 と RAID10は復旧可能だったのですが、RAID0は完全にお亡くなりになりました・・・
2010/11/28 追記
とうとう、HDD自体が完全にお亡くなりになりました。
めったに起きる現象ではないので、記録として残しておきます。
lfll@debian:~/src$ cat /proc/mdstat
Personalities : [raid10] [raid6] [raid5] [raid4]
md1 : active raid5 sda2[0] hda2[5](F) sdd2[3] sdc2[2] sdb2[1]
965056256 blocks level 5, 64k chunk, algorithm 2 [5/4] [UUUU_]
md2 : active raid10 hda1[5](F) sdd1[4] sdc1[3] sdb1[2] sda1[1]
7329280 blocks 64K chunks 2 near-copies [5/4] [_UUUU]
unused devices:
hdaが壊れたのですが、ディスクが壊れた場合には(F)のマークがついており、
アレイから外れていることがすぐに分かります。
アレイから外れただけならばアレイに追加すれば良いのですが、
今回は不良ブロックが大量にあり、完全に壊れておりました。
lfll@debian:~/src$ sudo badblocks -sv /dev/hda| more
Checking blocks 0 to 244198583
Checking for bad blocks (read-only test): 0 0.00% done, 0:00 elapsed
1
2
3
4
・
・
・
コメント(1)
2007.11.03
[
Myカテゴリ:試してみた
]
アクセス速度が平均270MB/sec くらいです。
この結果には非常に満足していたのですが、RAIDについて考えていくうちに、
Device Mapperを用いるよりも、mdを用いたRAIDレベル複合型の方が効率がいいことに気がつきました。
というのも、各RAIDレベルの欠点をほぼ完璧に補うような使い方が
MDを用いたソフトウェアの複合RAIDならば可能だからです。
(DeviceMapperはHDD単位でRAIDレベルを決めなければならないので
欠点を補うことができない)
RAID0の利点と欠点
利点:読み書き共に最も高速
欠点:信頼性無し
向いている用途:読み書きが頻繁に発生する、どうでもいいデータ。
例:コンパイル、エンコード、デコード、変換などの重い作業やスワップ。
RAID10
利点:読み書き共にそこそこ高速で、信頼性がある
欠点:使用可能な容量は 一台のHDDの容量 * HDDの台数 / 2
速度は一台のHDDの速度 * HDDの台数 / 2
つまりHDDの性能の半分しか使えない。
向いている用途:読み書きが発生する重要なデータ
例:CVS、FTP、samba, SQLサーバやログファイルなど
RAID5
利点:読み込みがかなり高速で、信頼性がある
欠点:書き込みが遅すぎる。どのくらい遅いのかと言うと、
パリティチェックがあるため、HDD一台で使用しているときよりも書き込みは遅い。
向いている用途:読みこみのみが発生するデータ
例:Webサーバー
実際にシステムを使用状況を調べてみると、
9割方のIOアクセスが読み取りであることがわかった。
ということはほとんどのディレクトリをRAID5にすることができ、
残りの1割をRAID10にすればいいのだ。
そして、作業用スペースはRAID0にする。(オリジナルデータはRAID10のCVSに保存)
実際に試してみた。
リソースはHDDは250GB * 5台。内訳:ATA1台、SATA4台。
全てのディスクのパーティションは以下のように分割した。
1 1513MB -- RAID0用
2 8743MB -- RAID10用
3 239799MB -- RAID5用
RAID10は2で割り切れる台数でしかRAIDを組めないので、
SATA 4台でRAID10を組み、ATAの2はルートパーティションとした。
ファイルシステムの作成
※mdを使用する場合にはファイルシステムの作成後にmd Arrayを作らないと、
容量がおかしくなるので必ずファイルシステム作成後にArrayを作ること!
sudo mkfs.reiserfs /dev/hda1
sudo mkfs.reiserfs /dev/sda1
sudo mkfs.reiserfs /dev/sdb1
sudo mkfs.reiserfs /dev/sdc1
sudo mkfs.reiserfs /dev/sdd1
sudo mkfs.reiserfs /dev/sda2
sudo mkfs.reiserfs /dev/sdb2
sudo mkfs.reiserfs /dev/sdc2
sudo mkfs.reiserfs /dev/sdd2
sudo mkfs.reiserfs /dev/hda3
sudo mkfs.reiserfs /dev/sda3
sudo mkfs.reiserfs /dev/sdb3
sudo mkfs.reiserfs /dev/sdc3
sudo mkfs.reiserfs /dev/sdd3
Arrayの作成
RAID0の作成
$ sudo mdadm --create --verbose /dev/md1 --level=0 --raid-devices=5 /dev/hda1 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: chunk size defaults to 64K
mdadm: /dev/hda1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/hda1 appears to be part of a raid array:
level=raid0 devices=5 ctime=Wed Oct 31 22:05:42 2007
mdadm: /dev/sda1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdb1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdc1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdd1 appears to contain a reiserfs file system
size = 1477888K
Continue creating array? y
mdadm: array /dev/md1 started.
RAID10の作成
$ sudo mdadm --create --verbose /dev/md2 --level=10 --raid-devices=4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
mdadm: layout defaults to n1
mdadm: chunk size defaults to 64K
mdadm: /dev/sda2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdb2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdc2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdd2 appears to contain a reiserfs file system
size = 8538496K
mdadm: size set to 8538432K
Continue creating array? y
mdadm: array /dev/md2 started.
RAID5の作成
$ sudo mdadm --create --verbose /dev/md3 --level=5 --raid-devices=5 /dev/hda3 /dev/sda3 /dev/sdb3 /dev/sdc3 /dev/sdd3
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: /dev/hda3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/hda3 appears to be part of a raid array:
level=raid5 devices=5 ctime=Thu Nov 1 22:36:39 2007
mdadm: /dev/sda3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdb3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdc3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdd3 appears to contain a reiserfs file system
size = 234179456K
mdadm: size set to 234179392K
Continue creating array? y
mdadm: array /dev/md3 started.
RAID5はパリティの作成があるので、ここで20分くらい待つ。
作成状況は以下のコマンドで確認できる。
$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md3 : active raid5 sdd3[5] sdc3[3] sdb3[2] sda3[1] hda3[0]
936717568 blocks level 5, 64k chunk, algorithm 2 [5/4] [UUUU_]
[=====>...............] recovery = 28.6% (67002024/234179392) finish=40.8min speed=68165K/sec
md2 : active raid10 sdd2[3] sdc2[2] sdb2[1] sda2[0]
17076864 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md1 : active raid0 sdd1[4] sdc1[3] sdb1[2] sda1[1] hda1[0]
7389120 blocks 64k chunks
unused devices:
/dev/mdX のパーティションの作成
この時点では/dev/md0 のファイルシステムタイプは決まっていないので、
cfdisk /dev/md0 などでファイルシステムのタイプを決める。
sudo cfdisk /dev/md1
sudo cfdisk /dev/md2
sudo cfdisk /dev/md3
/dev/mdXへのファイルシステムの作成
sudo mkfs.reiserfs /dev/md1
sudo mkfs.reiserfs /dev/md2
sudo mkfs.reiserfs /dev/md3
これで作成完了!
そして、気になるベンチは・・・
RAID0 5台 /dev/md1
$ sudo hdparm -ft /dev/md1
/dev/md1:
Timing buffered disk reads: 1024 MB in 3.00 seconds = 341.32 MB/sec
RAID10 4台 /dev/md2
$ sudo hdparm -ft /dev/md2
/dev/md2:
Timing buffered disk reads: 542 MB in 3.00 seconds = 180.57 MB/sec
RAID5 5台 /dev/md3
$ sudo hdparm -ft /dev/md3
/dev/md3:
Timing buffered disk reads: 810 MB in 3.01 seconds = 269.48 MB/sec
うん。ほぼ予想道理の結果となった。
システム起動時に自動的にマウントされるように/etc/fstabの編集を行う。
$ cat /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/hda2 / reiserfs notail 0 1
/dev/md1 /mnt/raid0 reiserfs defaults 0 0
/dev/md2 /mnt/raid10 reiserfs defaults 0 0
/dev/md3 /mnt/raid5 reiserfs defaults 0 0
これで何の作業を行うにしても、ディスクに関しては
通常の2倍(raid10)~5倍(RAID0)程度高速に作業ができる環境の出来上がりです。
2007/12/09 追記
いつからかわからないが、いつも間にか
/dev/hda3 がRAID5から外れてしまっていた。
チャンスとばかりにベンチマークを取ると、108MB/s のアクセス速度であった。
へ~。RAID5は障害が起きると、アクセス速度が激遅になるので
すぐにわかると言っていた人もおりましたが、この速度だと微妙かも。
(実際私も気がつきませんでしたし)
以下のコマンドを実行し復旧した。
% sudo mdadm /dev/md3 -a /dev/hda3
復旧度は以下のコマンドで確認する。
% cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md3 : active raid5 hda3[5] sda3[1] sdd3[4] sdc3[3] sdb3[2]
936717568 blocks level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]
[>....................] recovery = 4.1% (9733504/234179392) finish=54.1min speed=69056K/sec
md2 : active raid10 sda2[0] sdd2[3] sdc2[2] sdb2[1]
17076864 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md1 : active raid0 hda1[0] sdd1[4] sdc1[3] sdb1[2] sda1[1]
7389120 blocks 64k chunks
unused devices:
2008/08/25 追記
10ヶ月ほど使用してみても、壊れることは無く安定して動作している。
ただ、使用していて、うっかりやってしまったミスがあるので、
注意点として報告しておこうと思う。
・カーネルを再構築して再起動した際、再構築のオプションなどにミスがあると、
ルートパーティションにあるRAIDアレイが全てぶっ飛ぶ。
・aptitude install でうっかりカーネルをインストールしてしまった場合、
ルートパーティションにあるRAIDアレイが全てぶっ飛ぶ。
私の場合、xen-hypervisor-3.0.3-1-i386-pae がカーネルだと気がつかなかったのですよ。
そのおかげで、再起動したらエラーが大量に発生し、
ルートパーティションにあるRAIDアレイが通常のファイルシステムとしてマウントされ、
データが吹っ飛びました。
RAID5 と RAID10は復旧可能だったのですが、RAID0は完全にお亡くなりになりました・・・
2010/11/28 追記
とうとう、HDD自体が完全にお亡くなりになりました。
めったに起きる現象ではないので、記録として残しておきます。
lfll@debian:~/src$ cat /proc/mdstat
Personalities : [raid10] [raid6] [raid5] [raid4]
md1 : active raid5 sda2[0] hda2[5](F) sdd2[3] sdc2[2] sdb2[1]
965056256 blocks level 5, 64k chunk, algorithm 2 [5/4] [UUUU_]
md2 : active raid10 hda1[5](F) sdd1[4] sdc1[3] sdb1[2] sda1[1]
7329280 blocks 64K chunks 2 near-copies [5/4] [_UUUU]
unused devices:
hdaが壊れたのですが、ディスクが壊れた場合には(F)のマークがついており、
アレイから外れていることがすぐに分かります。
アレイから外れただけならばアレイに追加すれば良いのですが、
今回は不良ブロックが大量にあり、完全に壊れておりました。
lfll@debian:~/src$ sudo badblocks -sv /dev/hda| more
Checking blocks 0 to 244198583
Checking for bad blocks (read-only test): 0 0.00% done, 0:00 elapsed
1
2
3
4
・
・
・
Template Designed By
ぐらいんだぁ
ぐらいんだぁ