これは、VisualBasic6.0 で作成しました
履歴
ver1.1.0.0 : 内部的なフォームをスレッドセーフになるようにした(2007/12/20)
ver1.0.0.3 : 音声再生終了のイベントを通知させるようにした(2005/10/26)
ver1.0.0.2 : 関数(プロパティ取得とセット)の追加と非同期の音声再生関数の仕様変更 (未公開)
ver1.0.0.1 : 次のバージョン (2004/04/07)
ver1.0.0.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 製) とつながり、テキストデータの音声読み上げが実現されます。
実行環境
VisualBASIC6.0 ランタイム
IBM ProTalker97 テキスト読み上げ合成エンジン
(IBM 製)
IBM ProTALKER ActiveX コントロール
(IBM 製)
使い方
あらかじめ「実行環境」で説明したモジュールをインストールします
ダウンロードしたファイルを解凍しします。
(LHAは、吉崎栄泰氏が、著作権を所有)
本ツールを RegSvr32.exe を用いてレジストリに登録します。(添付の RegSvr32.bat を使ってもよいです)
後は、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()
声の性別を取得する
1: 女性
2: 男性
SetModeGuid(引数)
戻り値 = GetModeGuid()
声色の内部IDを返す。内部IDで声色を設定する
私の開発環境では、
読み秀君 : {904AAB60-5D94-11D0-830A-444553540000}
読み子ちゃん : {904AAB61-5D94-11D0-830A-444553540000}
が返る。または設定できる
SetWho(引数)
戻り値 = GetWho()
声色の番号を返す
私の開発環境では、
1: 読み秀君
2: 読み子ちゃん
を設定できる。また、GetWho() では
0: その他
が返るかも知れません
DisplayBox()
IBMProTalker コントロールのバージョン情報を表示
戻り値はなし
DisplayDlg()
IBMProTalker 合成エンジンのバージョン情報を表示
戻り値はなし
SpeakPause()
読み上げを一時停止させる
戻り値はなし
SpeakResume()
読み上げを再開させる
戻り値はなし
SpeakStop()
読み上げを停止させる
戻り値はなし
StopSpeak()
読み上げを終了した時にイベントとして発生します
mail to active@window.goukaku.com