SofTalkでパワーポイントを読み上げる
Softalkでパワーポイントのノートを読み上げるスクリプトを書いてみた。
と言っても、下記リンクを組み合わせただけで、何も新しいことをしていないけれど・・・。
[Ruby] PowerPointのノート欄を全て出力 @sarunoie
http://blog.mesh.cx/2011/02/rubyolepowerpoint.html
使い方:
- 適当にパワーポイントを作って、話したい内容をパワーポイントの下の欄(ノート部)に書く。
- 下のコードを適当に貼り付けて、拡張子rbのファイルを作成して、コマンドプロンプトから呼び出す
- その際、引数として上で作成したパワーポイントファイルを渡す(このあたりの作業はドラッグアンドドロップでやると楽)
- ソフトークが勝手に、パワーポイントで書いた内容を読み上げる(ページもめくってくれる!)
- 途中でパワポを閉じるとバグる。プロセスが残るかも。適当なので・・・。
require 'win32ole' # 以下、softalk引数パラメータ softalkPath = "C:/softalk" # softalkのパス softalkSpeed = 100.to_s softalkVolume = 100.to_s if ARGV.count != 1 puts "usage: pptcmt filename" exit end filename = ARGV[0] fso = WIN32OLE.new('Scripting.FileSystemObject') filename = fso.getAbsolutePathName(filename) ppt = WIN32OLE.new('PowerPoint.Application') ppt.Visible = true prt = ppt.Presentations.Open(filename) count = prt.Slides.Count view = ppt.ActivePresentation.SlideShowSettings.Run().View view.First system(softalkPath + "/SofTalkw.exe /X:1") begin for i in 1..count do targetNote = prt.Slides(i).NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text result = system(softalkPath + "/SofTalkw.exe /S:" + softalkSpeed + " /V:" + softalkVolume + " /W:" + targetNote) if result == true view.Next end end rescue ensure prt.Close ppt.Quit end
このスクリプト解説用のパワポも作ったけど、とりあえずそれは社内限定公開ということで。