T

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のローカルファイルにアクセス可能にしてあげていっちょあがり。文字で書くとややこしいが、図にするといたって単純。

Sing System-1
追記:Yahoo JapanのAPI側で数字の読み方は返してくれないみたいだ。

Posted by on 5月 22, 2008 in Apache, PHP, Web Services

Comments

  • […] というわけで、先日遊んだ形態素解析に引き続き、今度は校正支援を使ったデモを作って遊んでみた。 […]

  • コメントを残す