PowerPointでのノート読み上げで発音を指定する

PowerPointにノート読み上げ機能を追加する方法」でノート読み上げはできるようになったが、Speech Application Programming Interface (SAPI) の Text-To-Speech (TTS) の語彙が不十分で、発音がおかしくなってしまう場合がある。たとえば、「戻り値」は「もどりあたい」と発音される。

おかしなところは漢字をカナ書きにして発音を矯正していたが、元の漢字が何であったかわからず、発声させないでテキストとして読もうとするとわかりづらい。少し調べたところ、SAPI XML TTS や Speech Synthesis Markup Language (SSML) で発音を指定することができることがわかった。

それを使おうとしていたが、なかなか思うように発声させることができなかった。やっと発声させる方法がわかった気がするので、現時点でわかっていることを備忘録として残す。日本語で発声させることのみをここでは対象としている。

利用したソフトウェアは、Windows10 (バージョン 1909)上のPowerPoint バージョン 2009 (ビルド 13231.20390 クイック実行)である。

発音を指定する際の注意点のまとめ

  • 先頭がタグになるようにする
    • 先頭が読み上げテキストの場合には、SAPI XML TTSを使うなら<p>を先頭に入れ、SSMLなら<speak version= "1.0" xml:lang= "ja-JP" > などを先頭に入れる

    • 先頭がタグでないと、途中のタグをテキストとして読み上げてしまう
  • PowerPointのオートコレクト機能の「左右の区別がない引用符を、区別がある引用符に変更する」が働かないようにする
    •  "ja-JP" を入力しても “ja-JP” に自動的に変更されてしまう

    • VBA で TTS エンジンのspeakに誤った引用符で与えても、単純に無視されてエラーにならかったりするので問題点がわかりづらい
    • 気がつくまでに数日を要した…orz。

PowerPointのオートコレクト機能をオフにする手順

オプションの「文章校正」の「オートコレクションのオプション」を選択する。

「左右の区別がない引用符を、区別がある引用符に変更する」のチェックを外す。

発音指定方法

次の文章を発声させることを考える。

そのまま SAPI の TTS に渡すと「戻り値」が「もどりあたい」と読み上げられるので、「もどりち」と発声させるようにする。

SAPI  XML TTS

XML TTS Tutorial  に従って <pron sym="モドリチ"> 戻り値</pron>を記述すればよい。ただし、先頭がタグである必要があるので、次のようにパラグラフのタグを先頭に挿入する。

日本語の発音指定は、Japanese Phonemes に記載の表記が使える。ひらがなでは発音してくれないので、カタカナで表示する必要がある。

SSML

Improve synthesis with Speech Synthesis Markup Language (SSML) に従って記述をする。

ここでは、発音表記体系としてSAPIの例を示したが(alphabet="sapi")、UPSやIPAの指定も可能である。

VBAプログラムの修正

PowerPointにノート読み上げ機能を追加する方法」で発音を指定できるようにするには、音声合成エンジンの ttsEngine.Speak に渡すテキスト speechText の前後にタグをつけるようにすれば、ノートで発音を指定するタグを使うことができる。

タグに SAPI  XML TTS か SSML のどちらの表記を使うかによって修正が少し異なる。

SAPI XML TTS を使うなら、サブルーチン SpeakTexts の「speechText = Line」を次のようにすればよい。

同様に、 SSMLを利用するなら、次のようにする。

デバッグのための発声

発声が正しくできるかを確認するには、読み上げのボタンをクイックアクセスツールバーに登録しておくと良いようだ。

[読み上げ] 音声合成機能を使用してテキストを読み上げるに書いてある通りであるが、以下のようにする。

PowerPointのオプションから「クイック アクセス ツール バー」を選択し、コマンドの選択で「すべてのコマンド」を選択し、そのなかから「読み上げ」を選んで、「追加」できる。

クイック アクセス ツール バーに次のアイコンが追加されるはず。

この機能がPowerPointにあることを知らなかったので、VBAで発声させていたが面倒であった。

発音の指定に少しでも誤りがあると全く発声してくれないので、発音指定が正しく発生されるのか頻繁に確認する必要がある。この読み上げ機能で確認ができると楽になる。

また、エラーが発生すると次のアイコンのままになるので、エラーが発生したことがわかる。

参考になったWeb

次の記事は大変参考になりました。ありがとうございました。

SAPIで発音を指定する