前回の例でも見せたとおり
WSHならば簡単に既存のCOMサービスを使うことができます
(すでに作成されてるサービスの機能を再利用することができます)
今回はMicrosoftが提供している
合成音声でPCにしゃべらせてみましょう
合成音声でしゃべらせるにはSpeechPlatformRuntimeが必要です
・SpeechPlatformRuntime.msi
日本語を喋らせるには日本語用の合成音声パックが必要です
・MSSpeech_TTS_ja-JP_Haruka.msi
それぞれインストールします
今回のプログラムはこちらです
・speech.vbs
読み上げるテキストはこちらです
・speech.txt
speech.vbsをダブルクリックすればspeech.txtを読み上げる音声ファイルが作成されます
テキストの中身を変更すれば色々しゃべらせることができます
speech.vbsの中身は次のとおりです
たかだが30行程度でテキストファイルから合成音声による読みあげ音声ファイルを作成することができます
Option Explicit Const SSFMCreateForWrite = 3 Dim objSV,objSFile,flgEnd Dim objFS,objTS flgEnd = false '音声合成関係のオブジェクトを生成する Set objSV = WScript.CreateObject("Speech.SpVoice") Set objSFile = WScript.CreateObject("Speech.SpFileStream") 'イベントをMyProc_ではじまるプロシージャに接続する WScript.ConnectObject objSV,"MyProc_" ObjSFile.Open "speech.wav",SSFMCreateForWrite Set objSV.AudioOutputStream = ObjSFile '音声を出力する 'FileSystemObjectオブジェクトを生成する Set objFS = WScript.CreateObject("Scripting.FileSystemObject") 'TextStreamオブジェクトを取得する Set objTS = objFS.OpenTextFile("speech.txt",1) objSV.Speak objTS.ReadAll,0 objSFile.Close objTS.Close Do While flgEnd <> true WScript.Sleep 100 Loop Sub MyProc_EndStream(StreamNumber,StreamPosition) WScript.Echo "音声出力終了" flgEnd = true End Sub
文法については詳しく説明しませんが
VBSの場合、
WScript.CreateObjectメソッドで既存のCOMサービスも使うことができます
http://msdn.microsoft.com/ja-jp/library/7t9k08y5(v=vs.80).aspx
今回の場合、
Speech Platform Runtimeをインストールすることで
COMコンポーネントがレジストリに登録されたことになります
ProgIDのSpeech.SpVoiceを指定することで合成音声用の機能を使うことができます