【PowerPoint】合成音声ナレーション付き動画をPowerPointで簡単に作れる!【マクロ】
マークアップエンジニアのアシュリーです!
今回は『研修動画をパワポのスクリーンリーダー機能を使って作ろうと思ったけど録画に音声が入らない』というお悩みに答えて、合成音声ナレーション付き動画をPowerPointで作ります!
作るもの
PowerPointスライドノートをWindows10の合成音声に読み上げさせて、1つの動画ファイル(MP4)にしたもの
準備するもの
- PowerPoint の入ったWindows10のパソコン
- PowerPointオンラインでは動きません
- 今回筆者は「PowerPoint for Microsoft 365」を使用しています
- 動画にしたいPowerPointファイル
- 読み上げたい文章をノートに書きこんでおきます
合成音声ナレーション付き動画の作り方
PowerPointの設定「記録」「開発」のタブの表示
[ファイル]→[オプション] でPowerPointのオプション を表示。
[リボンのユーザー設定]から[記録]と[開発]にチェックを入れてください

「記録」と「開発」がタブに表示されます。

マクロ(VBA)のコードの準備
「開発」タブの[Visual Basic]をクリックして、コードを入力する画面を開きます

[挿入]→[標準モジュール]をクリックします。

すると、下記のような画面が出てくるので、この後に記載されているコードをコピーして貼り付けます。

Sub SlideVoice()
Dim i As Long
With ActivePresentation
For i = 1 To .Slides.Count
' 現在のスライドのノートを取得
Dim strNote As String
strNote = ActivePresentation.Slides(i).NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text
' ノートが空白なら以下は実行しない
If strNote = "" Then
Else
' PowerPointファイルのあるフォルダパスを取得
Dim cd As String
cd = ActivePresentation.Path
' PowerPointファイルがあるのと同フォルダに、wavファイルを作成
Dim wavePath As String
wavePath = cd & "\voice.wav"
' wavファイルに保存
Const SAFT48kHz16BitStereo = 39
Const SSFMCreateForWrite = 3
Dim oFileStream, oVoice
Set oFileStream = CreateObject("SAPI.SpFileStream")
oFileStream.Format.Type = SAFT48kHz16BitStereo
oFileStream.Open wavePath, SSFMCreateForWrite
Set oVoice = CreateObject("SAPI.SpVoice")
Set oVoice.AudioOutputStream = oFileStream
oVoice.Speak strNote
oFileStream.Close
' audioオブジェクトの埋め込み
Dim oSlide As Slide
Dim oShp As Shape
Set oSlide = ActivePresentation.Slides(i)
Set oShp = oSlide.Shapes.AddMediaObject2(wavePath, False, True, 10, 10)
With oShp.AnimationSettings.PlaySettings
.PlayOnEntry = True
.HideWhileNotPlaying = True
End With
' 埋め込み終わったらwavファイルを消す
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(wavePath) Then Kill wavePath
End If
Next i
End With
MsgBox "音声埋め込み完了"
End Sub

保存して閉じます。

マクロの実行
「開発」タブの[マクロ]をクリック→[SlideVoice]を選択→[実行]します。


「音声埋め込み完了」のメッセージが表示され、スライド左上に音声アイコンが表示されれば成功です。

動画ファイルの保存
「記録」タブの[ビデオにエクスポート]をクリック

動画の画質を選択して、[ビデオの作成]をクリック
動作確認のためのテストで書き出すときは「標準(480p)」にすると、速く書き出し完了します。
※「各スライドの所要時間」の項目は変更しなくて大丈夫です。音声の再生が終わるまでスライドは切り替わりません。

これで動画ファイルの完成です!🎉
作った研修動画を社内でシェアしよう!
ということで、パワポさえあれば作れる研修動画、どうやって活用するのかというと…
マニュアル動画アップロードし、いつでも手軽に確認できるツール MiTeNeで使うそうです!!
くわしくは以下リンクより↓↓
ブログでMicrosoft製品のお話をしているアシュリーですが、社内にはMicrosoft製品やVBAなどでもっと業務改善できる!!すごい人もいますので、お気軽にお問い合わせください(^_-)-☆