前の記事 ≪:ブラウザで遊べるリズムアクションゲーム「Devil May Fry」
次の記事 ≫:JavaScript用モックオブジェクトライブラリ「JSMock」

PHPでオーディオ読み上げCAPTCHAを実現する方法

2006年12月01日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法
Joining .WAVs with PHP [splitbrain.org]
I’m currently working on a CAPTCHA plugin for DokuWiki and thought about providing audio output for users not able to see the image.

PHPでオーディオ読み上げCAPTCHAを実現する方法。
次のような、複数のWAVオーディオファイルを結合する関数が公開されてました。

<?php

function joinwavs($wavs){
    
$fields join('/',array( 'H8ChunkID''VChunkSize''H8Format',
                              
'H8Subchunk1ID''VSubchunk1Size',
                              
'vAudioFormat''vNumChannels''VSampleRate',
                              
'VByteRate''vBlockAlign''vBitsPerSample' ));
    
$data '';
    foreach(
$wavs as $wav){
        
$fp     fopen($wav,'rb');
        
$header fread($fp,36);
        
$info   unpack($fields,$header);
        
// read optional extra stuff
        
if($info['Subchunk1Size'] > 16){
            
$header .= fread($fp,($info['Subchunk1Size']-16));
        }
        
// read SubChunk2ID
        
$header .= fread($fp,4);
        
// read Subchunk2Size
        
$size  unpack('vsize',fread($fp4));
        
$size  $size['size'];
        
// read data
        
$data .= fread($fp,$size);
    }
    return 
$header.pack('V',strlen($data)).$data;
}

?>

joinwavs( array("a.wav", "b.wav", "c.wav") ); のようにして、WAVファイルのリストを渡すことで1個に結合できるっぽいです。
関数によってかえった結果を audio/x-wav  ヘッダーによって出力すれば読み上げできますね。

使えそうなWAVファイルはここで配っているようで、これと組み合わせれば強固な読み上げCAPTCHAが作れそうですね。
もちろん、オーディオは自分で用意すれば独自の音声CAPTCHAが作れそう。

関連エントリ

関連の記事検索:captcha, PHP, セキュリティ, ライブラリ
スポンサード リンク

By.KJ : 2006年12月01日 07:02 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)