音声合成のWEBサービスを作ろうと検討しております。


たとえば wavファイルAとwavファイルBがあって、
それを連続させたwavファイルCを自動的に生成してくれて、
それらを携帯にDLできるというイメージです。

音声合成用のミドルウェア(できればオープンソース)で
phpベースで動くものなどご存じの方いますか?

よかったら教えてくださると幸いです。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/03/01 16:56:50
  • 終了:2010/03/08 17:00:03

回答(1件)

id:Watson No.1

Watson回答回数5ベストアンサー獲得回数32010/03/03 22:48:55

ポイント60pt

wavファイルを連結させるのでしたら、下のようなコードで良いかと思います。

元のコードは、

に書かれています。

"read optional extra stuff"の箇所でエラーが出たのでコメントアウトしました。

<?php
function joinwavs($wavs){
    $fields = join('/',array( 'H8ChunkID', 'VChunkSize', 'H8Format',
                              'H8Subchunk1ID', 'VSubchunk1Size',
                              'vAudioFormat', 'vNumChannels', 'VSampleRate',
                              'VByteRate', 'vBlockAlign', 'vBitsPerSample' ));
    $data = '';
    $header = '';
    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($fp, 4));
        $size  = $size['size'];
        // read data
        $data .= fread($fp,$size);
    }
    return $header.pack('V',strlen($data)).$data;
}

$wav = joinwavs( array("a.wav", "b.wav") );
$fp  = fopen("c.wav", "wb");
fwrite($fp, $wav);
fclose($fp);

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません