指定した文字を Windows PC が読み上げるサンプルコードの紹介です。読み上げるとは、発声、喋るという意味です。VBScript で紹介しています。sapi.spvoice の機能を使用しています。
VBSの場合は拡張子を .vbs で指定して保存してください。(例:sample.vbs)
そしてコマンドプロンプトより以下の通り実行します。
C:\>cscript sample.vbs
サンプル:
rem 文字を読み取りPCに喋らせる
Dim Message, Speak
Message=InputBox("PCに喋らせる文字を入力してください。","Speak")
if len(Message)>0 then
Set Speaker=CreateObject("sapi.spvoice")
Speaker.Rate = 2
Speaker.Volume = 100
Speaker.Speak Message
end if
Set Speaker = Nothing
文字を読み上げ音声ファイルに保存するサンプルコードです。c:\temp\sample.wav というファイルに保存しています。サンプルを実行すると wav ファイルが新規に生成されるため、音声再生ソフトで再生して確認してください。
サンプル:
rem 文字を読み上げてwavファイルに保存するサンプルコード
set Speaker = createobject("SAPI.SpVoice")
set ofs = createobject("SAPI.SpFileStream")
ofs.Open "c:\temp\sample.wav", 3, vbFalse
set Speaker.AudioOutputStream = ofs
Speaker.Speak "もやもやさまーず"
set ofs = Nothing
set Speaker = Nothing
テキストファイルを読み込み、読み上げるサンプルコードです。c:\temp\speakme.txt を読み込み、PCが読み上げます。テキストファイルとして読み上げさせたい文字列を入れてください。
サンプル:
rem ファイルを読み込み、読み上げるサンプルコード
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Speaker = CreateObject("SAPI.SpVoice")
Speaker.Speak FSO.OpenTextFile("c:\temp\speakme.txt").ReadAll()
Set Speaker = Nothing
与えられた引数を読み上げるプログラムのサンプルコードです。引数を Wscript.Arguments(0) で受け取り SAPI.SpVoice 機能を使用して読み上げています。
実行例:
cscript ArgumentSpeak.vbs もやもやさまーず
サンプル:
rem 引数として渡された文字列を読み上げるサンプルコード
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Speaker = CreateObject("SAPI.SpVoice")
Speaker.Speak Wscript.Arguments(0)
Set Speaker = Nothing
利用できる音声エンジンの一覧を表示します。
サンプル:
rem あなたの Windows で利用可能な音声エンジンの一覧を表示
Set Speaker = CreateObject("SAPI.SpVoice")
For i = 0 To Speaker.GetVoices.Count -1
WScript.echo i & ":" & Speaker.GetVoices.Item(i).GetDescription
Next
Set Speaker = Nothing
実行例:
0:Microsoft Haruka Desktop - Japanese
1:Microsoft Zira Desktop - English (United States)
OS にインストールされた音声エンジンで読み上げるサンプルコードです。2種類のエンジンで読み上げています。
サンプル:
rem 音声エンジンである"はるか" と "Zira" が音声で読み上げます。
Set Speaker1 = CreateObject("SAPI.spVoice")
Set Speaker1.Voice = Speaker1.GetVoices.Item(0)
Speaker1.Rate = 2
Speaker1.Volume = 100
Speaker1.Speak "こんにちは。私の名前ははるかです。"
Set Speaker1 = CreateObject("SAPI.spVoice")
Set Speaker1.Voice = Speaker1.GetVoices.Item(1)
Speaker1.Rate = 2
Speaker1.Volume = 100
Speaker1.Speak "Hello ! My Name is Zira."
Set Speaker1 = Nothing
Set Speaker2 = Nothing
テキストファイルを1行ごと読み込み、読み上げるサンプルこーどです。5秒間隔で1行ごとに処理します。
サンプル:
rem テキストファイルを5秒間隔で1行ごとに読み込み、読み上げるサンプルコード
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Speaker = CreateObject("SAPI.spVoice")
Speaker.Rate = 1
Speaker.Volume = 100
Set stream = FSO.OpenTextFile("c:\temp\SpeakMe.txt", 1)
Do Until stream.AtEndOfLine = True
Speaker.Speak stream.ReadLine
WScript.sleep 5000
Loop
stream.Close
Set Strem = Nothing
Set FSO = Nothing
Set Speaker = Nothing
sapi.spvoiceを使用して文字を音声で読み上げるサンプルコード