音声合成サーバ作成

EgoChat用音声合成サーバを作成.Pentium4 1.7GHzなのでGalateaの推奨?環境に足りていない.このままでは100文字の合成に2,3秒かかってしまうので,先読み合成とキャッシュをつけて遅延を小さくした.これでようやく完成,EgoChatをどこにでも公開できるようになった.

英単語カタカナ変換フォーム

英単語を入力すると,カタカナ読みを出力します.

SKK-JISYO.Lをgrepしてるのとあまり変わんないですが,おもしろかったので.
“yumin”とか,”zabadak”とか,
SKK-JISYOは相変わらずおかしい.
しかし,専用の辞書というわけではないので含まれてない語が多い.
ATOKにそういう辞書があるらしいが使うわけにはいかない.
ほかにもっといい辞書があったら教えてください.

英単語カタカナ変換

英単語->カタカナ変換サーバ,という微妙なものが必要になった.
たとえば,”broadcast”を入力すれば,出力として”ブロードキャスト”が返ってくるようなものである.
SKKの辞書に英単語からカタカナへの変換ルールが含まれることが判ったため,以下のようにした.
1. skkservとして dbskkdをインストール.辞書はSKK-JISYO.Lを使用.
*** 辞書を編集する度にmakeskkcdb.shをやり直す必要があることに注意 .***
2. skkservを引くcgiスクリプトを作成

#!/usr/bin/perl
use CGI qw/-debug :standard/;
use IO::Socket;
my $CGI = new CGI;
my $e_text = $CGI->param(“e_text”);
if($e_text !~ /\w+/){
print $CGI->header(-charset => ‘UTF-8’);
print “‘$e_text’ includes non-alphabet character.\n”;
exit();
}
my $host = ‘localhost’;
my $port = getservbyname(‘skkserv’, ‘tcp’);
my $socket = IO::Socket::INET->new(PeerAddr => $host,
PeerPort => $port,
Proto => ‘tcp’,
);
if (!$socket){
die “socket error$!\n”;
}
print $socket “1$e_text \n”;
$socket->flush();
$j_yomi = ;
if($j_yomi =~ /4.+/){
print $CGI->header(-charset => ‘UTF-8’);
print “SKK-JISYO.L doesn’t include ‘$e_text’.\n”;
exit();
}
$j_yomi =~ s/1\/([^\/]+)\/.+/$1/;
$j_yomi =~ s/1\/([^\/]+)\//$1/;
# SKK-JISYO.Lの英単語に対する変換語は,読み以外にも訳の場合があるため,全角カタカナ以外が含まれる場合は終了.
if ($j_yomi !~ /^(?:\xA5[\xA1-\xF6]|\xA1[\xA6\xBC\xB3\xB4])+$/){
print $CGI->header(-charset => ‘EUC-JP’);
print “‘$j_yomi’ is not KATAKANA.\n”;
exit();
}
print $CGI->header(-charset => ‘EUC-JP’);
print “$j_yomi”;
$socket->close();