エンジニアブログ

しゃべるパワポの作り方

こんにちは、開発本部の0009です。
今回は“しゃべるパワポ”の作り方を紹介します。
皆さん、発表は得意ですか?
私は苦手です。緊張で、声が出なくなるほどです。
そこで、音声合成に頼ることにしました。

最近のWindowsには、音声合成が搭載されています。
Microsoft Speech Platform

さらに、Officeからはマクロで音声合成を実行できます。
あとは、どう使うかですね。
今回は、次のような使い方でやってみました。

  • 発話原稿置場:ノート欄
  • 発話実行方法:スライド内のボタンの押下

作り方を紹介します。簡単のために手っ取り早い手順です。

まず、PowerPoint に [開発] リボンがあるかを確認してください。
次の手順で出せます。

  • [ファイル] を選択

  • [オプション] を選択

  • [リボンのユーザー設定] を選択 → [開発] チェックボックスを on → [OK] ボタン

  • [開発] リボンが出ましたでしょうか

  • [開発] リボンを選択
  • コマンド ボタンを選択

  • コマンド ボタンをシートに追加
  • 追加したコマンド ボタンをダブルクリック

  • こんな画面がでましたでしょうか


この画面でマクロをプログラミングできます。言語は VBA です。
この画面中の以下の記述を、


	Private Sub CommandButton1_Click()


End Sub

以下のように書き換えてみてください。


	Private Sub CommandButton1_Click()

'' ノート欄の文字列を取得
Dim strNote As String
strNote = NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text
'' ノート欄が空の場合は,読み上げ処理を行わずに終了
If strNote = "" Then
Exit Sub
End If

'' 音声合成エンジンを取得
Dim sv As Object
Set sv = CreateObject("SAPI.SpVoice")

'' インストールされている音声合成エンジンのうち、最初に見つかった日本語のものを選択
For i = 0 To sv.GetVoices.Count - 1
If InStr(sv.GetVoices.Item(i).GetDescription, "Japanese") Then
Set sv.Voice = sv.GetVoices.Item(i)
Exit For
End If
Next
'' 日本語のエンジンが見つからなかった場合
If InStr(sv.Voice.GetDescription, "Japanese") < 1 Then
'' 発見に失敗した旨をメッセージボックスで通知
MsgBox "日本語のエンジンが見つかりませんでした。" & vbCrLf & _
"現在の設定 : " & sv.Voice.GetDescription
Exit Sub
End If

'' 音声合成実行
sv.Speak strNote

'' 音声合成エンジンを開放
Set sv = Nothing
End Sub
  • スライドに戻り、ノート欄に音声合成したい文字列を記入


これで出来上がりです。

スライド上のボタンを押して音声合成を実行できるのは、
PowerPointのモードのうち以下のいずれかです。

音声合成が実行されない場合は、Windows の音声認識の設定を確認してください。

概ね、以下のいずれかが原因です。

  • 音声認識の言語が日本語以外になっている
  • 日本語の音声合成エンジンがインストールされていない

詳しくは、Microsoft Speech Platform のページをご参照ください。
音声合成が音声認識の一機能に位置付けられているところが、個人的には興味深いです。

ちなみに、先日私は全社向けに業務報告を行いました。
音声合成に手伝ってもらった実感としては、なかなか頼もしかったです。
ひょっとすると、音声合成に読ませる都合、原稿をいつも以上に推敲したからかもしれません。
やはり、プレゼンは準備が大事ですね!