これは、VisualBasic6.0 で作成しました


履歴



はじめに
私が PC9801 シリーズで MS-DOS をいじっていた頃は、日本語の音声読み上げソフトウェアは、無料がほとんどでした。...というかテスト状態なので無料だったというのが正しいのかな。
最近(2004/04)は、ほとんどが有料のようです。

ですが、IBM の ProTalker97 のテキスト読み上げ合成エンジンは無料のようです。

合成エンジンのダウンロード・ページはこちらからのようです

そして、この ProTalker97 は IBM 本家から ActveX OCX(ActiveX コントロール)になっているではありませんか!!
つまり、IE 上のスクリプトから使えるようになっていたりします。.....そして VisualBASIC からも....

ただ「.ocx」ファイルは WSH からでは扱いにくいため(単純に CreateObject したいだけです) VisualBASIC で ActiveX DLL としてラッピングしました。
(ActiveX OCX を ActiveX DLL でラップする事に意味があるかどうかは不明...)

このラッパーを作るきっかけになったのは、ふとしたキッカケで見つけた「ちょこっとVoice」という IE 上の文章読み上げプログラムを発見したからです。
(こちらのツールもなかなか面白く興味深いツールです)


仕組み
WSH から普通に CreateObject するだけで、WSH → ActiveX DLL(本ツール) → ActiveX OCX(IBM 製) → ProTalker97(IBM 製) とつながり、テキストデータの音声読み上げが実現されます。


実行環境



使い方
  1. あらかじめ「実行環境」で説明したモジュールをインストールします
  2. ダウンロードしたファイルを解凍しします。
    (LHAは、吉崎栄泰氏が、著作権を所有)
  3. 本ツールを RegSvr32.exe を用いてレジストリに登録します。(添付の RegSvr32.bat を使ってもよいです)
  4. 後は、WSH などで使えます。



免責など
著作権は保持します(一応)。
私が保持する部分は、ラッパー(ActiveX DLL)の部分だけです。
(ActiveX DLL の部分については、免責以外は特に使用条件はありません)
ProTalker97 の音声エンジン、音声読み上げ用の辞書、ProTalker97 ActiveX コントロールなどは、他者/他社に帰属します。
本ツール使用時は、上記のライセンス関係もクリアした上で使用してください。

また、このソフトを使用したことによって生じた、
いかなる損害についても責任は持ちません。

ソースコード(私が保持している ActiveX DLL の部分だけ)についても、各自の責任において、自由にいじってくれてもいいです。(義務ではないですが、通知/報告/告知してくれると嬉しいm(_ _)m)


ver1.1.0.0 DownLoad(sUseIBMProTalkers.lzh as 17,847byte) (sUseIBMProTalkers.lzh.base64)

公開関数一覧など
CreateObject へ渡す文字列は
sUseIBMProTalkers.sReadJapanese
じゃ。

単純に読み上げたいテキストをクリップボードにコピーして
Option Explicit
Dim obj
Set obj = WScript.CreateObject("sUseIBMProTalkers.sReadJapanese")
obj.SpeakClipboard
Set obj = Nothing
で、クリップボードのテキスト文章を喋ってくれると思う

SpeakClipboard()
クリップボードの内容を喋る
処理は戻ってくる
また、音声再生中は、待ち行列に文字列が格納されて、音声再生終了後に再生される。
戻り値はなし

SpeakClipboardSync()
クリップボードの内容を喋る
処理は喋り終わるまで戻ってこない
戻り値はなし

Speak(文字列)
引数で指定した文字列を喋る
処理は戻ってくる
また、音声再生中は、待ち行列に文字列が格納されて、音声再生終了後に再生される。
戻り値はなし

SpeakSync(文字列)
引数で指定した文字列を喋る
処理は喋り終わるまで戻ってこない
戻り値はなし

SetVolume(引数)
戻り値 = GetVolume()
ボリュームをセット/取得する
与えられる範囲は....ProTalker 頼み(つまり、ActiveX DLL でチェックは数字かどうかだけ)

SetSpeed(引数)
戻り値 = GetSpeed()
読み上げ速度をセット/取得する
与えられる範囲は....ProTalker 頼み(つまり、ActiveX DLL でチェックは数字かどうかだけ)

SetPitch(引数)
戻り値 = GetPitch()
声のピッチをセット/取得する
与えられる範囲は....ProTalker 頼み(つまり、ActiveX DLL でチェックは数字かどうかだけ)

戻り値 = GetAge()
声の年齢を取得する
私の開発環境では「30」が返る。

戻り値 = GetGender()
声の性別を取得する


SetModeGuid(引数)
戻り値 = GetModeGuid()
声色の内部IDを返す。内部IDで声色を設定する
私の開発環境では、 が返る。または設定できる

SetWho(引数)
戻り値 = GetWho()
声色の番号を返す
私の開発環境では、 を設定できる。また、GetWho() では が返るかも知れません

DisplayBox()
IBMProTalker コントロールのバージョン情報を表示
戻り値はなし

DisplayDlg()
IBMProTalker 合成エンジンのバージョン情報を表示
戻り値はなし

SpeakPause()
読み上げを一時停止させる
戻り値はなし

SpeakResume()
読み上げを再開させる
戻り値はなし

SpeakStop()
読み上げを停止させる
戻り値はなし

StopSpeak()
読み上げを終了した時にイベントとして発生します




mail to active@window.goukaku.com