PowerPoint 노트를 음성 읽고 슬라이드에 포함
소개
원격 수업용 동영상을 PowerPoint에서 만들 때 노트를 합성 음성으로 읽고 슬라이드에 오디오 객체로 포함하는 매크로를 만들었습니다.
Windows 한정입니다.
개발 환경
Windows 10 Home
Microsoft PowerPoint for Office 365 MSO(16.0.11929.20708) 32비트
준비
매크로를 사용하므로 슬라이드를 매크로 유효 프레젠테이션(.pptm)으로 저장합니다.
PowerPoint 메뉴에 "개발"이 없으면 "파일"→ "옵션"→ "리본 사용자 설정"에서 "개발"을 선택하십시오.
코드 입력
개발 → Visual Basic에서 VBA 편집기를 열고 프로젝트 탐색기에서 표준 모듈을 마우스 오른쪽 단추로 클릭하고 삽입 → 표준 모듈에서 새 모듈(Module1)을 만듭니다.
Module1을 더블 클릭하면 코드를 입력하는 창이 열리므로 다음 코드를 입력합니다.
Sub EmbedVoice()
' 現在のスライド番号を取得
Dim n As Long
n = ActiveWindow.Selection.SlideRange.SlideIndex
' 現在のスライドのノートを取得
Dim strNote As String
strNote = ActivePresentation.Slides(n).NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text
' ノートが空白なら終了
If strNote = "" Then
Exit Sub
End If
' 現在のフォルダを取得
Dim cd As String
cd = ActivePresentation.Path
' wavファイルのパスを作成
Dim wavePath As String
wavePath = cd & "\voice.wav"
' wavファイルが既にあれば削除
' 下の SSFMCreateForWrite = 3 で上書きできるはずだけど何故かできないので
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(wavePath) Then Kill wavePath
' 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
Dim oEffect As Effect
Set oSlide = ActivePresentation.Slides(n)
Set oShp = oSlide.Shapes.AddMediaObject2(wavePath, False, True, 10, 10)
With oShp.AnimationSettings.PlaySettings
.HideWhileNotPlaying = True
End With
MsgBox "Done."
End Sub
사용법
오디오를 포함하려는 슬라이드의 노트에 읽을 텍스트를 입력합니다.
개발 → 매크로에서 EmbedVoice를 실행하면 슬라이드의 왼쪽 상단에 오디오 객체가 삽입됩니다.
오디오 객체에 마우스 커서를 놓으면 재생 버튼이 표시되므로 실제로 재생하여 음성을 확인하십시오.
문제가 있는 경우 오디오 오브젝트를 삭제하고 노트를 수정한 다음 EmbedVoice를 다시 실행하십시오.
내장 시점에서 "슬라이드쇼를 실행하는 동안 사운드 아이콘 숨기기"설정만 켜져 있습니다. 그 외의 설정은 「재생」메뉴나 「애니메이션」메뉴에서 실시해 주세요.
비고
Windows 10 Home
Microsoft PowerPoint for Office 365 MSO(16.0.11929.20708) 32비트
준비
매크로를 사용하므로 슬라이드를 매크로 유효 프레젠테이션(.pptm)으로 저장합니다.
PowerPoint 메뉴에 "개발"이 없으면 "파일"→ "옵션"→ "리본 사용자 설정"에서 "개발"을 선택하십시오.
코드 입력
개발 → Visual Basic에서 VBA 편집기를 열고 프로젝트 탐색기에서 표준 모듈을 마우스 오른쪽 단추로 클릭하고 삽입 → 표준 모듈에서 새 모듈(Module1)을 만듭니다.
Module1을 더블 클릭하면 코드를 입력하는 창이 열리므로 다음 코드를 입력합니다.
Sub EmbedVoice()
' 現在のスライド番号を取得
Dim n As Long
n = ActiveWindow.Selection.SlideRange.SlideIndex
' 現在のスライドのノートを取得
Dim strNote As String
strNote = ActivePresentation.Slides(n).NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text
' ノートが空白なら終了
If strNote = "" Then
Exit Sub
End If
' 現在のフォルダを取得
Dim cd As String
cd = ActivePresentation.Path
' wavファイルのパスを作成
Dim wavePath As String
wavePath = cd & "\voice.wav"
' wavファイルが既にあれば削除
' 下の SSFMCreateForWrite = 3 で上書きできるはずだけど何故かできないので
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(wavePath) Then Kill wavePath
' 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
Dim oEffect As Effect
Set oSlide = ActivePresentation.Slides(n)
Set oShp = oSlide.Shapes.AddMediaObject2(wavePath, False, True, 10, 10)
With oShp.AnimationSettings.PlaySettings
.HideWhileNotPlaying = True
End With
MsgBox "Done."
End Sub
사용법
오디오를 포함하려는 슬라이드의 노트에 읽을 텍스트를 입력합니다.
개발 → 매크로에서 EmbedVoice를 실행하면 슬라이드의 왼쪽 상단에 오디오 객체가 삽입됩니다.
오디오 객체에 마우스 커서를 놓으면 재생 버튼이 표시되므로 실제로 재생하여 음성을 확인하십시오.
문제가 있는 경우 오디오 오브젝트를 삭제하고 노트를 수정한 다음 EmbedVoice를 다시 실행하십시오.
내장 시점에서 "슬라이드쇼를 실행하는 동안 사운드 아이콘 숨기기"설정만 켜져 있습니다. 그 외의 설정은 「재생」메뉴나 「애니메이션」메뉴에서 실시해 주세요.
비고
개발 → Visual Basic에서 VBA 편집기를 열고 프로젝트 탐색기에서 표준 모듈을 마우스 오른쪽 단추로 클릭하고 삽입 → 표준 모듈에서 새 모듈(Module1)을 만듭니다.
Module1을 더블 클릭하면 코드를 입력하는 창이 열리므로 다음 코드를 입력합니다.
Sub EmbedVoice()
' 現在のスライド番号を取得
Dim n As Long
n = ActiveWindow.Selection.SlideRange.SlideIndex
' 現在のスライドのノートを取得
Dim strNote As String
strNote = ActivePresentation.Slides(n).NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text
' ノートが空白なら終了
If strNote = "" Then
Exit Sub
End If
' 現在のフォルダを取得
Dim cd As String
cd = ActivePresentation.Path
' wavファイルのパスを作成
Dim wavePath As String
wavePath = cd & "\voice.wav"
' wavファイルが既にあれば削除
' 下の SSFMCreateForWrite = 3 で上書きできるはずだけど何故かできないので
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(wavePath) Then Kill wavePath
' 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
Dim oEffect As Effect
Set oSlide = ActivePresentation.Slides(n)
Set oShp = oSlide.Shapes.AddMediaObject2(wavePath, False, True, 10, 10)
With oShp.AnimationSettings.PlaySettings
.HideWhileNotPlaying = True
End With
MsgBox "Done."
End Sub
사용법
오디오를 포함하려는 슬라이드의 노트에 읽을 텍스트를 입력합니다.
개발 → 매크로에서 EmbedVoice를 실행하면 슬라이드의 왼쪽 상단에 오디오 객체가 삽입됩니다.
오디오 객체에 마우스 커서를 놓으면 재생 버튼이 표시되므로 실제로 재생하여 음성을 확인하십시오.
문제가 있는 경우 오디오 오브젝트를 삭제하고 노트를 수정한 다음 EmbedVoice를 다시 실행하십시오.
내장 시점에서 "슬라이드쇼를 실행하는 동안 사운드 아이콘 숨기기"설정만 켜져 있습니다. 그 외의 설정은 「재생」메뉴나 「애니메이션」메뉴에서 실시해 주세요.
비고
참고로 한 사이트
Reference
이 문제에 관하여(PowerPoint 노트를 음성 읽고 슬라이드에 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aadiimmz/items/3d58e8a6514de82de4ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)