Windows 7でPythonなどから日本語音声合成
SAPI.SpVoiceの代わりにSpeech.SpVoiceを使うことで日本語の音声合成ができる。see: Windowsバッチで,手軽に日本語テキストを自動読み上げ(Text To Speech)する方法 …WSHでSAPIやSpeech.SpVoiceを使う音声合成の手順とサンプルコード - 主に言語とシステム開発に関して
なので以下の内容のファイルをyomiage.wsfという名前で作っておけば「./yomiage.wsf ゆっくりしていってね」などとコマンドラインから音声合成ができる。
<job id="Yomiage"> <script language="javascript"> var tts = WScript.CreateObject("Speech.SpVoice"); tts.Rate = 0; tts.Speak(WScript.Arguments.Unnamed(0)); </script> </job>
ところがこのSpeech.SpVoiceは64bit版しか存在しない。なのでPythonからwin32comとかで直接ロードすることはできない。子プロセスとして起動するならOKだろうとsubprocess.callで呼ぶと「オブジェクトを作成できませんでした」というエラーになるが、これはファイルシステムリダイレクタのせいなので、オフィシャルの回避方法がある。see: Windowsのファイルシステムリダイレクタにハマった話