<?php mb_language("ja"); mb_internal_encoding("SJIS"); //音声ワードの取得 $word = $_POST['WORD']; //音声ワードのエンコード変換 $word = mb_convert_encoding($word,"SJIS","UTF-8"); print '<img src="blank.gif" height="3"><input type="text" name="WORD" size="'.$fsize.'" value="'.$word.'"><br>'; print '<img src="blank.gif" height="3"><input type="submit" value="声を出す"><br>'; print '<img src="blank.gif" height="3"><small>※全角ひらがなで入力。</small><br>'; print '<img src="blank.gif" height="10"><br>'; $yomi = $word; //ひらがな読み $yomi = mb_convert_kana($yomi,H); //半角カタカナを全角ひらがなに変換 $yomi = mb_convert_kana($yomi,V); //濁点付きの文字を一文字に変換 $yomi = mb_convert_kana($yomi,c); //全角カタカナを全角ひらがなに変換 $wave2 = ''; $yomi_len = mb_strlen($yomi); //読みの文字長さ取得 if ($yomi_len > 100) { //100文字以上は100文字だけ処理 $yomi_len = 100; } for ($i = 0; $i < $yomi_len; $i++){ $wave = ''; $moji = mb_substr($yomi, $i, 1); //一文字分取得 $moji2 = mb_substr($yomi,$i, 2); //つぎの一文字分取得 //文字→音声変換 if ($moji == 'あ') { $wave = file_get_contents("a.wav"); } if ($moji == 'い') { $wave = file_get_contents("i.wav"); } if (($moji == 'う')&&($moji2 != 'うぃ')&&($moji2 != 'うぇ')&&($moji2 != 'うぉ')) { $wave = file_get_contents("u.wav"); } if ($moji2 == 'うぃ') { $wave = file_get_contents("wi.wav"); } if ($moji2 == 'うぇ') { $wave = file_get_contents("we.wav"); } if ($moji2 == 'うぉ') { $wave = file_get_contents("wo.wav"); } if ($moji2 == 'ヴぁ') { $wave = file_get_contents("va.wav"); } if ($moji2 == 'ヴぃ') { $wave = file_get_contents("vi.wav"); } if ($moji2 == 'ヴぇ') { $wave = file_get_contents("ve.wav"); } if ($moji2 == 'ヴぉ') { $wave = file_get_contents("vo.wav"); } if ($moji == 'え') { $wave = file_get_contents("e.wav"); } if ($moji == 'お') { $wave = file_get_contents("o.wav"); } if ($moji == 'か') { $wave = file_get_contents("ka.wav"); } if (($moji == 'き')&&($moji2 != 'きゃ')&&($moji2 != 'きゅ')&&($moji2 != 'きょ')) { $wave = file_get_contents("ki.wav"); } if ($moji2 == 'きゃ') { $wave = file_get_contents("kya.wav"); } if ($moji2 == 'きゅ') { $wave = file_get_contents("kyu.wav"); } if ($moji2 == 'きょ') { $wave = file_get_contents("kyo.wav"); } if ($moji == 'く') { $wave = file_get_contents("ku.wav"); } if ($moji == 'け') { $wave = file_get_contents("ke.wav"); } if ($moji == 'こ') { $wave = file_get_contents("ko.wav"); } if ($moji == 'さ') { $wave = file_get_contents("sa.wav"); } if (($moji == 'し')&&($moji2 != 'しゃ')&&($moji2 != 'しゅ')&&($moji2 != 'しょ')&&($moji2 != 'しぇ')) { $wave = file_get_contents("shi.wav"); } if ($moji2 == 'しゃ') { $wave = file_get_contents("sya.wav"); } if ($moji2 == 'しゅ') { $wave = file_get_contents("syu.wav"); } if ($moji2 == 'しょ') { $wave = file_get_contents("syo.wav"); } if ($moji2 == 'しぇ') { $wave = file_get_contents("she.wav"); } if ($moji == 'す') { $wave = file_get_contents("su.wav"); } if ($moji == 'せ') { $wave = file_get_contents("se.wav"); } if ($moji == 'そ') { $wave = file_get_contents("so.wav"); } if ($moji == 'た') { $wave = file_get_contents("ta.wav"); } if (($moji == 'ち')&&($moji2 != 'ちゃ')&&($moji2 != 'ちゅ')&&($moji2 != 'ちょ')&&($moji2 != 'ちぇ')) { $wave = file_get_contents("chi.wav"); } if ($moji2 == 'ちゃ') { $wave = file_get_contents("cha.wav"); } if ($moji2 == 'ちゅ') { $wave = file_get_contents("chu.wav"); } if ($moji2 == 'ちょ') { $wave = file_get_contents("cho.wav"); } if ($moji2 == 'ちぇ') { $wave = file_get_contents("che.wav"); } if ($moji == 'つ') { $wave = file_get_contents("tsu.wav"); } if (($moji == 'て')&&($moji2 != 'てぃ')) { $wave = file_get_contents("te.wav"); } if ($moji2 == 'てぃ') { $wave = file_get_contents("ti.wav"); } if ($moji == 'と') { $wave = file_get_contents("to.wav"); } if ($moji == 'な') { $wave = file_get_contents("na.wav"); } if (($moji == 'に')&&($moji2 != 'にゃ')&&($moji2 != 'にゅ')&&($moji2 != 'にょ')) { $wave = file_get_contents("ni.wav"); } if ($moji2 == 'にゃ') { $wave = file_get_contents("nya.wav"); } if ($moji2 == 'にゅ') { $wave = file_get_contents("nyu.wav"); } if ($moji2 == 'にょ') { $wave = file_get_contents("nyo.wav"); } if ($moji == 'ぬ') { $wave = file_get_contents("nu.wav"); } if ($moji == 'ね') { $wave = file_get_contents("ne.wav"); } if ($moji == 'の') { $wave = file_get_contents("no.wav"); } if ($moji == 'は') { $ml1 = mb_substr($yomi,$i-1, 1); //直前の1文字分取得 $ml2 = mb_substr($yomi,$i-2, 1); //2個前の1文字分取得 $ml3 = mb_substr($yomi,$i-3, 1); //3個前の1文字分取得 $ml4 = mb_substr($yomi,$i-4, 1); //4個前の1文字分取得 $mld = $ml2.$ml1; //直前の2文字分 $mlt = $ml3.$ml2.$ml1; //直前の3文字分 $mlq = $ml4.$ml3.$ml2.$ml1; //直前の4文字分 if (($mld == 'ぼく')||($mld == 'おれ')||($mld == 'きみ')||($mlt == 'わたし')||($mlt == 'なまえ')||($mlt == 'きょう')||($mlt == 'きのう')||($mlt == 'じかん')||($mlt == 'こんち')||($mlq == 'こんにち')||($mlq == 'こんばん')) { $wave = file_get_contents("wa.wav"); } else { $wave = file_get_contents("ha.wav"); } } if (($moji == 'ひ')&&($moji2 != 'ひゃ')&&($moji2 != 'ひゅ')&&($moji2 != 'ひょ')) { $wave = file_get_contents("hi.wav"); } if ($moji2 == 'ひゃ') { $wave = file_get_contents("hya.wav"); } if ($moji2 == 'ひゅ') { $wave = file_get_contents("hyu.wav"); } if ($moji2 == 'ひょ') { $wave = file_get_contents("hyo.wav"); } if (($moji == 'ふ')&&($moji2 != 'ふぁ')&&($moji2 != 'ふぃ')&&($moji2 != 'ふぇ')&&($moji2 != 'ふぇ')) { $wave = file_get_contents("fu.wav"); } if ($moji2 == 'ふぁ') { $wave = file_get_contents("fa.wav"); } if ($moji2 == 'ふぃ') { $wave = file_get_contents("fi.wav"); } if ($moji2 == 'ふぇ') { $wave = file_get_contents("fe.wav"); } if ($moji2 == 'ふぉ') { $wave = file_get_contents("fo.wav"); } if ($moji == 'へ') { $wave = file_get_contents("he.wav"); } if ($moji == 'ほ') { $wave = file_get_contents("ho.wav"); } if ($moji == 'ま') { $wave = file_get_contents("ma.wav"); } if (($moji == 'み')&&($moji2 != 'みゃ')&&($moji2 != 'みゅ')&&($moji2 != 'みょ')) { $wave = file_get_contents("mi.wav"); } if ($moji2 == 'みゃ') { $wave = file_get_contents("mya.wav"); } if ($moji2 == 'みゅ') { $wave = file_get_contents("myu.wav"); } if ($moji2 == 'みょ') { $wave = file_get_contents("myo.wav"); } if ($moji == 'む') { $wave = file_get_contents("mu.wav"); } if ($moji == 'め') { $wave = file_get_contents("me.wav"); } if ($moji == 'も') { $wave = file_get_contents("mo.wav"); } if ($moji == 'や') { $wave = file_get_contents("ya.wav"); } if ($moji == 'ゆ') { $wave = file_get_contents("yu.wav"); } if ($moji == 'よ') { $wave = file_get_contents("yo.wav"); } if ($moji == 'ら') { $wave = file_get_contents("ra.wav"); } if (($moji == 'り')&&($moji2 != 'りゃ')&&($moji2 != 'りゅ')&&($moji2 != 'りょ')) { $wave = file_get_contents("ri.wav"); } if ($moji2 == 'りゃ') { $wave = file_get_contents("rya.wav"); } if ($moji2 == 'りゅ') { $wave = file_get_contents("ryu.wav"); } if ($moji2 == 'りょ') { $wave = file_get_contents("ryo.wav"); } if ($moji == 'る') { $wave = file_get_contents("ru.wav"); } if ($moji == 'れ') { $wave = file_get_contents("re.wav"); } if ($moji == 'ろ') { $wave = file_get_contents("ro.wav"); } if ($moji == 'わ') { $wave = file_get_contents("wa.wav"); } if ($moji == 'を') { $wave = file_get_contents("wo.wav"); } if ($moji == 'ん') { $wave = file_get_contents("n.wav"); } if ($moji == 'っ') { $wave = file_get_contents("ttsu.wav"); } if ($moji == 'が') { $wave = file_get_contents("ga.wav"); } if (($moji == 'ぎ')&&($moji2 != 'ぎゃ')&&($moji2 != 'ぎゅ')&&($moji2 != 'ぎょ')) { $wave = file_get_contents("gi.wav"); } if ($moji2 == 'ぎゃ') { $wave = file_get_contents("gya.wav"); } if ($moji2 == 'ぎゅ') { $wave = file_get_contents("gyu.wav"); } if ($moji2 == 'ぎょ') { $wave = file_get_contents("gyo.wav"); } if ($moji == 'ぐ') { $wave = file_get_contents("gu.wav"); } if ($moji == 'げ') { $wave = file_get_contents("ge.wav"); } if ($moji == 'ご') { $wave = file_get_contents("go.wav"); } if ($moji == 'ざ') { $wave = file_get_contents("za.wav"); } if (($moji == 'じ')&&($moji2 != 'じゃ')&&($moji2 != 'じゅ')&&($moji2 != 'じょ')&&($moji2 != 'じぇ')) { $wave = file_get_contents("ji.wav"); } if ($moji2 == 'じゃ') { $wave = file_get_contents("ja.wav"); } if ($moji2 == 'じゅ') { $wave = file_get_contents("ju.wav"); } if ($moji2 == 'じょ') { $wave = file_get_contents("jo.wav"); } if ($moji2 == 'じぇ') { $wave = file_get_contents("je.wav"); } if ($moji == 'ず') { $wave = file_get_contents("zu.wav"); } if ($moji == 'ぜ') { $wave = file_get_contents("ze.wav"); } if ($moji == 'ぞ') { $wave = file_get_contents("zo.wav"); } if ($moji == 'だ') { $wave = file_get_contents("da.wav"); } if ($moji == 'ぢ') { $wave = file_get_contents("ji.wav"); } if ($moji == 'づ') { $wave = file_get_contents("zu.wav"); } if (($moji == 'で')&&($moji2 != 'でぃ')) { $wave = file_get_contents("de.wav"); } if ($moji2 == 'でぃ') { $wave = file_get_contents("di.wav"); } if ($moji == 'ど') { $wave = file_get_contents("do.wav"); } if ($moji == 'ば') { $wave = file_get_contents("ba.wav"); } if (($moji == 'び')&&($moji2 != 'びゃ')&&($moji2 != 'びゅ')&&($moji2 != 'びょ')) { $wave = file_get_contents("bi.wav"); } if ($moji2 == 'びゃ') { $wave = file_get_contents("bya.wav"); } if ($moji2 == 'びゅ') { $wave = file_get_contents("byu.wav"); } if ($moji2 == 'びょ') { $wave = file_get_contents("byo.wav"); } if ($moji == 'ぶ') { $wave = file_get_contents("bu.wav"); } if ($moji == 'べ') { $wave = file_get_contents("be.wav"); } if ($moji == 'ぼ') { $wave = file_get_contents("bo.wav"); } if ($moji == 'ぱ') { $wave = file_get_contents("pa.wav"); } if (($moji == 'ぴ')&&($moji2 != 'ぴゃ')&&($moji2 != 'ぴゅ')&&($moji2 != 'ぴょ')) { $wave = file_get_contents("pi.wav"); } if ($moji2 == 'ぴゃ') { $wave = file_get_contents("pya.wav"); } if ($moji2 == 'ぴゅ') { $wave = file_get_contents("pyu.wav"); } if ($moji2 == 'ぴょ') { $wave = file_get_contents("pyo.wav"); } if ($moji == 'ぷ') { $wave = file_get_contents("pu.wav"); } if ($moji == 'ぺ') { $wave = file_get_contents("pe.wav"); } if ($moji == 'ぽ') { $wave = file_get_contents("po.wav"); } if ($moji == '。') { $wave = file_get_contents("maru.wav"); } if ($moji == '、') { $wave = file_get_contents("ten.wav"); } if ($moji == ' ') { $wave = file_get_contents("spe.wav"); } if ($moji == ' ') { $wave = file_get_contents("spe.wav"); } if ($moji == 'ゐ') { $wave = file_get_contents("wi.wav"); } if ($moji == 'ゑ') { $wave = file_get_contents("we.wav"); } if (($moji == 'ー')||($moji == '~')) { if (($moji_last == 'あ')||($moji_last == 'か')||($moji_last == 'さ')||($moji_last == 'た')||($moji_last == 'な')||($moji_last == 'は')||($moji_last == 'ま')||($moji_last == 'や')||($moji_last == 'ら')||($moji_last == 'わ')||($moji_last == 'が')||($moji_last == 'ざ')||($moji_last == 'だ')||($moji_last == 'ば')||($moji_last == 'ぱ')||($moji_last == 'ぁ')||($moji_last == 'ゃ')) { $wave = file_get_contents("a.wav"); } if (($moji_last == 'い')||($moji_last == 'き')||($moji_last == 'し')||($moji_last == 'ち')||($moji_last == 'に')||($moji_last == 'ひ')||($moji_last == 'み')||($moji_last == 'り')||($moji_last == 'ぎ')||($moji_last == 'じ')||($moji_last == 'ぢ')||($moji_last == 'び')||($moji_last == 'ぴ')||($moji_last == 'ぃ')||($moji_last == 'ゐ')) { $wave = file_get_contents("i.wav"); } if (($moji_last == 'う')||($moji_last == 'く')||($moji_last == 'す')||($moji_last == 'つ')||($moji_last == 'ぬ')||($moji_last == 'ふ')||($moji_last == 'む')||($moji_last == 'ゆ')||($moji_last == 'る')||($moji_last == 'ぐ')||($moji_last == 'ず')||($moji_last == 'づ')||($moji_last == 'ぶ')||($moji_last == 'ぷ')||($moji_last == 'ぅ')||($moji_last == 'ゅ')) { $wave = file_get_contents("u.wav"); } if (($moji_last == 'え')||($moji_last == 'け')||($moji_last == 'せ')||($moji_last == 'て')||($moji_last == 'ね')||($moji_last == 'へ')||($moji_last == 'め')||($moji_last == 'れ')||($moji_last == 'げ')||($moji_last == 'ぜ')||($moji_last == 'で')||($moji_last == 'べ')||($moji_last == 'ぺ')||($moji_last == 'ぇ')||($moji_last == 'ゑ')) { $wave = file_get_contents("e.wav"); } if (($moji_last == 'お')||($moji_last == 'こ')||($moji_last == 'そ')||($moji_last == 'と')||($moji_last == 'の')||($moji_last == 'ほ')||($moji_last == 'も')||($moji_last == 'よ')||($moji_last == 'ろ')||($moji_last == 'を')||($moji_last == 'ご')||($moji_last == 'ぞ')||($moji_last == 'ど')||($moji_last == 'ぼ')||($moji_last == 'ぽ')||($moji_last == 'ぉ')||($moji_last == 'ょ')) { $wave = file_get_contents("o.wav"); } } if ($moji == 'ぁ') { if (($moji_last == 'あ')||($moji_last == 'か')||($moji_last == 'さ')||($moji_last == 'た')||($moji_last == 'な')||($moji_last == 'は')||($moji_last == 'ま')||($moji_last == 'や')||($moji_last == 'ら')||($moji_last == 'わ')||($moji_last == 'が')||($moji_last == 'ざ')||($moji_last == 'だ')||($moji_last == 'ば')||($moji_last == 'ぱ')||($moji_last == 'ぁ')||($moji_last == 'ゃ')) { $wave = file_get_contents("a.wav"); } } if ($moji == 'ぃ') { if (($moji_last == 'い')||($moji_last == 'き')||($moji_last == 'し')||($moji_last == 'ち')||($moji_last == 'に')||($moji_last == 'ひ')||($moji_last == 'み')||($moji_last == 'り')||($moji_last == 'ぎ')||($moji_last == 'じ')||($moji_last == 'ぢ')||($moji_last == 'び')||($moji_last == 'ぴ')||($moji_last == 'ぃ')||($moji_last == 'ゐ')) { $wave = file_get_contents("i.wav"); } } if ($moji == 'ぅ') { if (($moji_last == 'う')||($moji_last == 'く')||($moji_last == 'す')||($moji_last == 'つ')||($moji_last == 'ぬ')||($moji_last == 'ふ')||($moji_last == 'む')||($moji_last == 'ゆ')||($moji_last == 'る')||($moji_last == 'ぐ')||($moji_last == 'ず')||($moji_last == 'づ')||($moji_last == 'ぶ')||($moji_last == 'ぷ')||($moji_last == 'ぅ')||($moji_last == 'ゅ')) { $wave = file_get_contents("u.wav"); } } if ($moji == 'ぇ') { if (($moji_last == 'え')||($moji_last == 'け')||($moji_last == 'せ')||($moji_last == 'て')||($moji_last == 'ね')||($moji_last == 'へ')||($moji_last == 'め')||($moji_last == 'れ')||($moji_last == 'げ')||($moji_last == 'ぜ')||($moji_last == 'で')||($moji_last == 'べ')||($moji_last == 'ぺ')||($moji_last == 'ぇ')||($moji_last == 'ゑ')) { $wave = file_get_contents("e.wav"); } } if ($moji == 'ぉ') { if (($moji_last == 'お')||($moji_last == 'こ')||($moji_last == 'そ')||($moji_last == 'と')||($moji_last == 'の')||($moji_last == 'ほ')||($moji_last == 'も')||($moji_last == 'よ')||($moji_last == 'ろ')||($moji_last == 'を')||($moji_last == 'ご')||($moji_last == 'ぞ')||($moji_last == 'ど')||($moji_last == 'ぼ')||($moji_last == 'ぽ')||($moji_last == 'ぉ')||($moji_last == 'ょ')) { $wave = file_get_contents("o.wav"); } } $moji_last = $moji; if ($wave != '') { if ($i > 0) { $wave = substr_replace($wave,"",0,64); //最初の64文字分(ファイル情報)だけカット } $wave2 = $wave2.$wave; //音声連結 } } //連結文字列の長さ(ファイルサイズ)取得 $leng = strlen($wave2); //ファイル情報用バイト変換計算(1) $leng_a = $leng - 8; $leng_b = $leng_a - 54; //3桁目 $data3 = (int)($leng_a / 65536); $leng_a = $leng_a - $data3 * 65536; //2桁目 $data2 = (int)($leng_a / 256); $leng_a = $leng_a - $data2 * 256; //1桁目 $data1 = $leng_a; $wave2 = substr_replace($wave2,chr($data1),4,1); //ファイルサイズ1桁目置換 $wave2 = substr_replace($wave2,chr($data2),5,1); //ファイルサイズ2桁目置換(x256) $wave2 = substr_replace($wave2,chr($data3),6,1); //ファイルサイズ3桁目置換(x65536) //ファイル情報用バイト変換計算(2) //3桁目 $datb3 = (int)($leng_b / 65536); $leng_b = $leng_b - $datb3 * 65536; //2桁目 $datb2 = (int)($leng_b / 256); $leng_b = $leng_b - $datb2 * 256; //1桁目 $datb1 = $leng_b; $wave2 = substr_replace($wave2,chr($datb1),54,1); //ファイルサイズ1桁目置換 $wave2 = substr_replace($wave2,chr($datb2),55,1); //ファイルサイズ2桁目置換(x256) $wave2 = substr_replace($wave2,chr($datb3),56,1); //ファイルサイズ3桁目置換(x65536) //ファイル名決定用 //乱数ジェネレーターの初期化 srand(microtime()*1000000); //乱数の発生(1000~9999); $rd = rand (1000,9999); //今現在のタイムスタンプを取得 $tims= floor((time() - 1100000000)/60); //IDの作成 $id = $tims.$rd; //ファイル名の定義 $b_file = 'j_voice'.$id.'.wav'; $fp = fopen($b_file,'w'); fwrite($fp,$wave2); fclose($fp); //古いファイルの除去処理 //ディレクトリハンドルをオープン $res_dir = opendir( '.' ); //ディレクトリ内のファイル名を1つずつを取得 while( $file_name = readdir( $res_dir ) ){ //j_voiceの拡張子の名が入ったファイル名のみを表示 if (mb_eregi("j_voice",$file_name)){ //該当IDファイルの更新日時の取得 $stam = filemtime($file_name); //更新から2分以上(120秒)経過したキーファイルは削除 $timnow= time(); if (($timnow - $stam) > 120){ unlink($file_name); } } } if ($word != '') { print ' <script language="JavaScript"> <!-- bro = navigator.appName; if(bro == "Microsoft Internet Explorer") { document.write("<bgsound src='.$b_file.'>"); } else { document.write("<embed src='.$b_file.' height=0 width=0 autostart=true loop=false>"); } //--> </script> '; } ?>