【PowerPoint】合成音声ナレーション付き動画をPowerPointで簡単に作れる!【マクロ】

Microsoft365動画,PowerPoint,VBA

マークアップエンジニアのアシュリーです!

今回は『研修動画をパワポのスクリーンリーダー機能を使って作ろうと思ったけど録画に音声が入らない』というお悩みに答えて、合成音声ナレーション付き動画を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などでもっと業務改善できる!!すごい人もいますので、お気軽にお問い合わせください(^_-)-☆

Posted by アシュリー