前回の例でも見せたとおり WSHならば簡単に既存のCOMサービスを使うことができます (すでに作成されてるサービスの機能を再利用することができます) 今回はMicrosoftが提供している 合成音声でPCにしゃべらせてみましょう 合成音声でしゃべらせるにはSpeechPlatformRuntimeが必要です ・&ref(SpeechPlatformRuntime.msi); 日本語を喋らせるには日本語用の合成音声パックが必要です ・&ref(MSSpeech_TTS_ja-JP_Haruka.msi); それぞれインストールします 今回のプログラムはこちらです ・&ref(speech.vbs); 読み上げるテキストはこちらです ・&ref(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を指定することで合成音声用の機能を使うことができます #vote(ProgIDを使うことを強いられているんだ![0],ktkr[1],Windowsでしか動かないのはMicrosoftの仕様です[1]) |ProgIDを使うことを強いられているんだ!|0| |ktkr|1| |Windowsでしか動かないのはMicrosoftの仕様です|1|