パワーポイントのVBAで音声読み上げを英語で行うには?
流暢な英語発音で読み上げたい時
など、テストしてみました。
下記のメッセージをいただく。
>パワポVBAで音声読み上げ&字幕を使用させて頂いています。
>大変活躍しており、感謝申し上げます。
>本題ですが、これは他言語(例:英語)で読み上げる事は可能でしょうか?
>Microsoft Ziraに読ませようとしましたが上手く行きません。。。
と
質問をいただきました。
youtu.be
https://youtu.be/oOiKpfbLww0
目次
00:00 あいさつ と キッカケ
00:23 1.現状確認
01:10 2.機械音声の言語を英語USにしてみた
02:05 ソースコードにUS指定を追加する
03:54 短い単語で違いをテストしてみた
#PowerPointVBA #マクロ #英語で読み上げ #ms365 #PowerPoint #テスト
#パワーポイント #VBA #音声読み上げ #字幕 #英語 #言語指定 #ソースコード
1.現状確認 00:23
まずは、現状を確認する
CreateObject("SAPI.SpVoice")
に何も指定しないで、
デフォルト状態で
ノートを読ませ、現状を確認する。
2.機械音声の言語を英語USにしてみた 01:10
なので、
次に演者じゃなかった
読み込ませる人の設定・言語を英語に指定して、
本場っぽく読ませてみた。ぉぃぉぃ
指定は簡単で、
google:VBA SAPI.spVoice 言語指定
で検索すると、
Language=409の指定で英語みたいです。
※VBAのサンプルコードが見つかります。
参考にして、
Dim US '言語の指定 2022/05/16 テストで英語USにしてみた。 Set US = oVoice.GetVoices("Language=409")(0) '409:英語US Set oVoice.voice = US
を追加しただけでした。
これを、質問の元動画
ノートの読み上げ
マクロでパワポのノートを読み上げと同時に字幕っぽくテキスト文字を表示 ノート自動ナレーションと字幕 - YouTube
に組み込みテストしてみます。
下記、3行追加したソースコードです。
アレンジして使ってみてください。 02:05
'Win10 MS365のPowerPointでテスト Sub スライドノート読み上げUS409指定のテスト() Dim strNOTE As String '読み上げたいノートの文字列 'コードが長いけど、現在のスライドノートを取得 '...Placeholders(2)なんで2?これで取得できるので・・・ strNOTE = SlideShowWindows(1).View.Slide.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text Debug.Print "ノート:" & strNOTE 'ノートが空白なら終了 If strNOTE = "" Then MsgBox "ノートが見つかりません" Exit Sub 'メッセージ End If '↑上で取得したノートを改行 CR で区切る Dim txtLINE As Variant 'Splitの結果を受け取りたいのでVariant txtLINE = Split(strNOTE, vbCr) '単純にSplitでCR区切りの配列を作成 '字幕を表示するテキストボックスを存在チェックを兼ねて事前代入 Dim objTextShp As Shape '字幕の表示エリアを入れる Set objTextShp = Nothing 'チェックを兼ねて初期化 On Error Resume Next 'エラーが発生しても強引に次の命令に行け '"テキスト字幕エリア" って固定名のテキストボックスを代入する Set objTextShp = SlideShowWindows(1).View.Slide.Shapes("テキスト字幕エリア") On Error GoTo 0 'ここから先は、いつものエラー処理に忘れないで戻すぞ If objTextShp Is Nothing Then 'Nothing=テキストボックスが用意されていない時は MsgBox "テキスト字幕エリア の名称で表示場所のTextBoxを用意してください" Exit Sub 'メッセージ End If 'やっとノート読み上げ と 字幕をセット Dim n As Integer 'ラインのカウンター '単純にSAPI.SpVoiceを使用してみた Dim objSAPI As Object Set objSAPI = CreateObject("SAPI.SpVoice") '言語指定の追加 2023/03/11 Dim US '言語の指定 テストで英語USにしてみた。 Set US = objSAPI.GetVoices("Language=409")(0) '409:英語US Set objSAPI.voice = US For n = 0 To UBound(txtLINE) '単純に配列数分 文字列セットと読み上げを繰り返す Debug.Print n, txtLINE(n) objTextShp.TextFrame2.TextRange.Text = txtLINE(n) '字幕のセット DoEvents objSAPI.Speak txtLINE(n) '.Speakに文字列を渡し読み上げる DoEvents Next objTextShp.TextFrame2.TextRange.Text = "字幕の表示エリア" 'ループを抜けたら、クリアしとく Set objSAPI = Nothing End Sub
似ている過去処理を紹介する:
>他言語(例:英語)で読み上げる事
>Microsoft Zira
は、わからないのですが、
私の動画で似ている事例は英単語を読ませたときの
www.youtube.com
かなぁ。↑お時間のある時に、こちらも見てください。
3.おわりの挨拶
ノートの英語読み処理の参考となれば幸いです。
おまけ、chatGPTで説明文を要約してみた
概要・要約:
この説明文は、パワーポイントのVBAで音声読み上げと字幕を使用する方法について、
質問と回答を交えながら解説しています。
質問者は、英語での読み上げができるか尋ねており、
回答者は言語指定をすることで実現できると回答しています。
YouTubeのタイトル案: 「パワーポイントVBAで英語音声読み上げをする方法【解説付き】」
キーワード: パワーポイント, VBA, 音声読み上げ, 字幕, 英語, 言語指定, ソースコード
ken3memo.hatenablog.com
ken3memo.hatenablog.com
ken3memo.hatenablog.com