こちらのサイトではなく、メインサイトのほうで、
ホームページ読み上げ音声、良いのがないかな、と思っていたのですが…。
VOICEROIDが、かなり良さそうです。Windows上で、テキストを入力して、おしゃべり音声(WAVファイル)を作成する、というものなのですが…。
まさか、Web上でテキストから音声を作成してリアルタイムでしゃべらせる…なんていうアプリは、あってもお金が高いので無理として、共有サーバでも使える、簡単な処理のものがないかな?、と思い、考えてみたのですが…。
簡単に再生音声を切り替えることが出来るものとして、良いものがありました。
それは、「プレイリスト」を使って再生させること。
まず、作ってみたくなったのが、「音声(数字)読み上げカウンタ」。
「ホームページへいらっしゃいませ」と話すと同時に、「あなたは何番目のお客様です」ともしゃべってくれます。
まずはあらかじめ、数字などを合成音声化したもの(音声ファイル)を、用意しておきます。
そして…サーバ上で、プレイリストを作成して、音声ファイルを順に再生させていけばいいのです。
実現する一番良い方法としては、InternetExplorer+WindowsMediaPlayerを使って、WindowsMediaPlayerのプレイリスト(WPLファイル)をCGIでリアルタイムに作成してサーバ内に保管、そのWPLファイル&あらかじめ用意した音声ファイルをIE経由でアクセスすることにより、とりあえず実現できました。
(ただし、この方法はGoogleChromeとかでは実現できないので、他の方法を考えます(^-^;;。)
プレイリスト(WPLファイル)は、SMIL(Synchronized Multimedia Integration Language)という言語で作られています。
このファイルを、アクセスカウンターで作成して、再生ファイル指定をしてあげれば良いわけです。
では、具体的なプレイリストの内容です。
<?wpl version=”1.0″?>←MediaPlayerのプレイリストですよ、ということ? <smil>←SMILヘッダ <body>←HTML同様、BODYタグで本文開始 <media src=”voice/before.wav” />←「ホームページへいらっしゃいませ」など、前文 <media src=”voice/thisis.wav” />←「あなたは」「このサイトへは」の文言 <media src=”voice/120000.wav” />←以下、数字データ(※1)。 <media src=”voice/3000.wav” /> <media src=”voice/400.wav” /> <media src=”voice/56.wav” />←以上、数字データ。 <media src=”voice/comed.wav” />←「人のお客様です」文言 <media src=”voice/after.wav” />←「ゆっくりしていってくださいね」など。後文。 <media src=”voice/novoice.wav” />←わざと音声なしに(※2) </body> </smil> |
(※1)数字データの作成ロジック
- 123456という数字を読ませる場合、120000、3000、400、56という風にデータを作成したほうが、そこそこスムースに再生してくれる。
- ②数字の先頭の桁から空白でつぶしていく。123456→23456→3456→456→56→6とファイルを検索。
- 見つかったファイルがあれば、その数字を0にして、②の再実行
→ここでは56というファイルが見つかったため、数値を123400として②の再検索。
123400→23400→3400→400(発見!) - あとは、この繰り返しで、3000、120000(20000+100000)と、ファイルを検索して…
- 上の表のようなSMIL作成。
(※2)MediaPlayerで音声を再生する際、音声が再生し終わると、プレーヤーの「再生」ボタンでは再度再生が出来ない。ここでわざと「再生ファイルなし」を指定すると、再度再生できるようになる。
まあ、ここで使用している音声データはwavなのですが(^^;。もちろん、MP3でも良いですね。
(VOICEROIDの保存音声はWAVのみなので、のまま使用しています)
あとは、media src= で指定するファイルは、さらにプレイリストファイルを呼び出しても構いません。
(私のサイトでも実際は、2重、3重にプレイリストを呼び出して再生しています)
※あとで分かったのですが、wplよりも単純に、MP3リスト(m3u)でプレイリストを作成したほうが、互換性もあって簡単だと思います。
ただし、リアルタイム音声再生(ページを開いたと同時に音声再生)を行うのは、InternetExplorerの環境でしか行う事が出来ません。Windows環境なら、WindowsMediaPlayerも入っているだろうということで、MediaPlayerのファイルリスト(wpl)を使用しています。
Comment