前回の例でも見せたとおり
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|



トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS