PC で文字を読み上げる サンプルコード

指定した文字を Windows PC が読み上げるサンプルコードの紹介です。読み上げるとは、発声、喋るという意味です。VBScript で紹介しています。sapi.spvoice の機能を使用しています。

VBSの場合は拡張子を .vbs で指定して保存してください。(例:sample.vbs)

そしてコマンドプロンプトより以下の通り実行します。

C:\>cscript sample.vbs

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を使用して文字を音声で読み上げるサンプルコード

コマンドサンプル一覧