add_notes_voice_pptx プログラム仕様

概要: PowerPointプレゼンテーションに音声ノートを追加し、自動再生リンクを設定するスクリプト。 詳細説明:

このスクリプトは、Windows環境においてPowerPoint (win32com.client) とtkttsライブラリを 利用し、PPTXファイルのノートに記載されたテキストから音声ファイルを生成し、その音声を プレゼンテーション内の各スライドに自動再生されるメディアオブジェクトとしてリンクします。 また、外部の発言テキストファイルからノート内容をPPTXに書き込む機能も提供します。 サポートされるTTSエンジンには、pyttsx3, VOICEVOX, AquesTalkPlayer, OpenAIなどがあります。

関連リンク: add_notes_voice_pptx.py 技術ドキュメント

ai.add_notes_voice_pptx.add_notes_to_pptx_com(pptx_path, slide_texts, temp_pptx_path)[ソース]

概要: PowerPointファイルにスライドノートを追加する。 詳細説明:

`win32com.client`モジュールを使用してPowerPointアプリケーションを操作し、 指定されたPPTXファイルをコピーした後、`slide_texts`辞書に基づいて各スライドの ノートページにテキストを書き込みます。処理後、PowerPointアプリケーションを閉じ、 リソースを解放します。

パラメータ:
  • pptx_path -- str: ノートを追加する元のPPTXファイルのパス。

  • slide_texts -- dict: スライド番号をキー、追加するノート内容を値とする辞書。

  • temp_pptx_path -- str: ノートが追加された一時PPTXファイルの出力パス。

戻り値:

bool: ノートの追加と保存が成功した場合はTrue、それ以外はFalse。

ai.add_notes_voice_pptx.generate_audio_files_tktts(pptx_path, voice_map, args)[ソース]

概要: PPTXノートから音声ファイルを生成する。 詳細説明:

`win32com.client`を使用して指定されたPowerPointファイルからスライドノートを抽出し、 `tkTTS`インスタンス(指定されたTTSエンジン)を利用して、各ノートの内容に基づき 音声ファイルを生成します。生成された音声ファイルは指定された出力ディレクトリに 保存されます。一時ディレクトリは処理後にクリーンアップされます。

パラメータ:
  • pptx_path -- str: ノートが記載されたPPTXファイルのパス。

  • voice_map -- dict: 話者名とTTSボイス名のマッピング辞書。

  • args -- argparse.Namespace: コマンドライン引数を格納したオブジェクト。 TTSエンジンの設定や出力ディレクトリなどが含まれる。

戻り値:

list[tuple[int, str]]: (スライド番号, 生成された音声ファイルの絶対パス) のタプルリスト。 音声ファイルの生成に失敗した場合は空のリストを返す。

ai.add_notes_voice_pptx.initialize()[ソース]

概要: コマンドライン引数を解析し、プログラムの設定を初期化する。 詳細説明:

argparseモジュールを使用して、TTSエンジンの選択、入力/出力ファイルパス、 音声保存ディレクトリ、読み上げ速度、VOICEVOXやAquesTalkPlayer、OpenAI固有の オプションなど、多岐にわたるコマンドライン引数を定義し、解析します。 これにより、ユーザーは様々な設定でスクリプトを実行できます。

戻り値:

args: argparse.Namespace: コマンドライン引数を格納したオブジェクト。

概要: PowerPointファイルに音声ファイルをリンクし、自動再生を設定する。 詳細説明:

`win32com.client`モジュールを使用してPowerPointアプリケーションを操作し、 指定されたPPTXファイルをコピーした後、`audio_tasks`リストに基づいて各スライドに 音声ファイルをメディアオブジェクトとして追加します。追加されたメディアオブジェクトは、 スライドの右下隅に配置され、スライド遷移と同時に自動再生されるように設定されます。 処理後、PowerPointアプリケーションを閉じ、リソースを解放します。

パラメータ:
  • source_pptx_path -- str: 元となるPPTXファイルのパス(このファイルをコピーして編集する)。

  • audio_tasks -- list[tuple[int, str]]: (スライド番号, 音声ファイルパス) のタプルリスト。

  • output_pptx -- str: 音声リンクが追加された出力PPTXファイルのパス。

ai.add_notes_voice_pptx.main()[ソース]

概要: プログラムのメイン処理を実行する。 詳細説明:

コマンドライン引数を解析し、選択された実行モード(リスト表示、マップ表示、変換)に 応じて処理を分岐させます。変換モードでは、指定された発言テキストファイルからPPTXに ノートを追加し、その後、ノートの内容から音声ファイルを生成し、最終的に生成された 音声をPowerPointスライドに自動再生リンクとして埋め込みます。 各ステップでエラーチェックとログ出力が行われます。

ai.add_notes_voice_pptx.parse_narration_file(narration_path, monologue=True)[ソース]

概要: 発言テキストファイルからスライド番号とノート内容をパースする。 詳細説明:

指定されたテキストファイルを開き、"# Slide N" (Nは数字) のパターンを認識して、 各スライドに対応するテキストを抽出します。抽出されたテキストは、PowerPointの ノートとして使用されることを想定しています。空行やコメント行 ('#')、括弧で囲まれた行は無視されます。 `monologue`がTrueの場合、カンマ区切りでない行もそのままノートとして扱います。

パラメータ:
  • narration_path -- str: 発言テキストファイルへのパス。

  • monologue -- bool: 独話形式かどうかを示すフラグ。Trueの場合、カンマのない行も全て読み込む。

戻り値:

dict or None: スライド番号をキー、ノート内容を値とする辞書。パースエラーが発生した場合はNone。

ai.add_notes_voice_pptx.terminate()[ソース]

概要: プログラムを一時停止し、ユーザーの入力後に終了する。 詳細説明:

コンソールに終了を促すメッセージを表示し、ユーザーがEnterキーを押すまで プログラムの実行を停止します。その後、プログラムを終了します。