Yahoo JapanのAPI、まめな病人
Apache, PHP, Web Services May 22nd, 2008
ブスコバンのアレルギーらしく、健康診断が終わってからずっとひどい頭痛だ。今日はちょっと家で休んでいる。
Yahoo JapanのAPI用に既存のPEARパッケージを拡張したServices_Yahoo_JPがある(作者サイト)。面白そうなのでさっそく使ってみた。
テキスト解析はこんな風に使える。例えばテキストの読みがなを取得する。
<?php
require_once 'Services/Yahoo/JP/MA.php';
$keyword = 'これは日本語です。';
$app_id = 'Your APP ID';
try{
$yahoo = Services_Yahoo_JP_MA::factory('parse');
$yahoo->withAppID($app_id);
$yahoo->setSentence($keyword);
$result = $yahoo->submit();
} catch(Services_Yahoo_Exception $e){
$error = 'すいません、YahooJapanに接続できませんでした。';
}
if($result){
$xml =& $result->xml->ma_result->word_list->word;
foreach($xml as $key => $val){
print($val->reading . "\n");
}
}
?>
なるほど。で、何か面白いことでもできないかと考えたが、Yahooから戻ってくる読みがなをさらにローマ字に変換して、Mac OS Xに付属のsayコマンドで読み上げてみるのはどうだろう。
$ say -o 出力ファイル "読み上げるテキスト"
上の書式で変換できるので、フロントエンドのPHPと連携してみれば簡単だ。
そこでふと思いついた。sayコマンドは声の指定も可能なのだが、プリセットされたデータには歌いながらしゃべるパターンもあったはずだ。それを指定すれば、入力したテキストを歌うこともできるじゃないか。
$ say -o 出力ファイル -v "声のパターン名" "読み上げるテキスト"
そうと決まれば話は早い。というわけでデモを作成した。(Proof of conceptということで無茶なことはしないでくださいね)
テキストが入力されると、バックエンドのMacBookにHTTPで通信してプロシージャを呼び出し、MacBook側はテキストを元に音声ファイルを作成してMP3に変換、最終的に作られたファイルをDocmentRoot以下に設置してファイルのパスを返す。フロントエンドのウェブサーバにリバースプロキシでMacBookのローカルファイルにアクセス可能にしてあげていっちょあがり。文字で書くとややこしいが、図にするといたって単純。

追記:Yahoo JapanのAPI側で数字の読み方は返してくれないみたいだ。
May 28th, 2008 at 11:14 pm
[...] というわけで、先日遊んだ形態素解析に引き続き、今度は校正支援を使ったデモを作って遊んでみた。 [...]