Windows PowerShell でテキスト・トゥ・スピーチ
MacOS だとテキスト読み上げ機能だとか、
以前紹介した Open JTalk や espeak
コマンドなんかで、
比較的簡単に Text To Speech ができるのだが、Windows PowerShell でも同様に TTS ができるらしいので試してみた。
> (New-Object -ComObject SAPI.SpVoice).Speak("こんにちは")
1
なんとコレだけ。シンプルで良い。
New-Object
で生成したオブジェクトを一旦変数に入れてやると、喋るスピードなんかを調節できる。
# ゆっくり風に喋らせられる
> $x=New-Object -ComObject SAPI.SpVoice
> $x.rate=-10
> $x.Speak("やあやあ")
扱えるボイスは、日本語1種類と英語1種類しかなかった。次のように指定するとボイスを変更できるが、英語のボイスでは日本語文字列は再生できないので注意。
> $x.GetVoices()
Id DataKey Category
-- ------- --------
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_JA-JP_HARUKA_11.0 System.__ComObject System.__ComObject
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0 System.__ComObject System.__ComObject
> $x.Voice=$x.GetVoices().item(1)
> $x.Speak("Hello Everyone")
以下のようなノリで WAV ファイルに保存できるようだ。
$x=New-Object -ComObject SAPI.SpVoice
$vs=New-Object -ComObject SAPI.SpFileStream
$vs.Open("c:\temp\output.wav", 3)
$x.AudioOutputStream=$vs
$x.Speak("こんにちは")
$vs.Close()
とりあえず簡単に喋らせられてよきよき。