Yahoo JapanのAPI、まめな病人
ブスコバンのアレルギーらしく、健康診断が終わってからずっとひどい頭痛だ。今日はちょっと家で休んでいる。
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側で数字の読み方は返してくれないみたいだ。
Comments
[…] というわけで、先日遊んだ形態素解析に引き続き、今度は校正支援を使ったデモを作って遊んでみた。 […]