三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

パワポ ノートを流暢な英語発音で読み上げたい時 SAPI.spVoiceで言語指定をLanguage=409にセットしてUS英語にする

パワーポイントの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

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)