クイックノート

ちょっとした発見・アイデアから知識の発掘を

プレゼンを全部AIにやってもらう

プレゼン資料を作ったり、
資料を使ってどうプレゼンする考えるのって面倒ですよね。

今のAIなら丸ごと代わりにやってくれるのではないかということで、
資料作成からプレゼンまでを全部やってもらいました。

出来上がったプレゼン動画は下の通りです。

www.youtube.com

この動画はテーマとして「ChatGPT」だけ与えて、
自動で生成されたものです。

では具体的な作り方を見ていきましょう。

全体の流れ

プレゼン動画の自動生成の大まかな流れは以下の通りです。

  1. テーマを入力
  2. ChatGPTがスライドと台本のテキストを出力
  3. スライドをMarpで画像として出力
  4. 台本をVOICEVOXで音声として出力
  5. ffmpegで画像と音声をくっつけて動画を出力
graph TB theme(テーマ) slide_txt("スライド.md") speech_txt("台本.txt") slide_img("スライド.jpg") speech_audio("音声.wav") theme --> chatGPT chatGPT --> slide_txt chatGPT --> speech_txt slide_txt --> Marp --> slide_img speech_txt --> VOICEVOX --> speech_audio slide_img --> v["F F m p e g"] speech_audio --> v v --> 動画

ChatGPTを使う関係上、出力はテキストデータになるので、
テキストデータでスライドを作れるMarpと、
テキストデータを読み上げるVOICEVOXを使って、
画像と音声を作っています。

ChatGPTのプロンプト

ChatGPTでは、スライドと台本を同時に出力してもらいます。
出力されたテキストはその後処理をすることが前提となるので、
処理しやすいようにJSON形式で構造化して出力してもらいます。

プロンプトはやや長いですが以下の通りです。

# Objective.

To create slides and a script for an instructional video on a specific topic for the general public.

# Slides

- Display a sub-theme and itemized key points of the current conversation.
- Marp format.
- Slides shall be within 7 pages in total.
- In Japanese

# Script

- Conduct a conversation as the characters.
- Page 1 will begin with the disciple you bring up a question about the topic
- The last page shows a summary
- 博士 will always compare a difficult concept to something familiar.
- 博士 will always provide an answer to the 弟子君's question.
- 博士 and 弟子君 take turns in the conversation basically.
- In Japanese

## Characters

- 博士: He is a reading geek and reads over 300 books a year. He has a wide range of knowledge. In conversations, he is responsible for explaining technical terms and concepts. He is good at using similes to explain things in a biting way. He is always ready to answer questions from his students.
- 弟子君: Calls himself a disciple of the doctor. He is curious and questions many things. In conversation, he is responsible for posing various questions to 博士. He is good at interpreting and organizing 博士's words in his own way.

# Output format

The following json format

---

{

“response”:[

{

“page”: $(p),

“type”: Marp,

“slide”: $(summary in Japanese.md),

“speeches”: [{

“speaker”: $(speaker),

“text”: $(what speaker said in Japanese),

},… ], 

},…

]

}

---

# theme

日本語のプロンプトだと精度が低かったので、
雑にDeepLを通して英語のプロンプトに翻訳しています。
出力は日本語で欲しかったので、しつこいくらいに「in Japanese」と言ってます。

Marpでスライド画像を生成

Marpはマークダウン形式のテキストデータを使って、
スライドを作成することができます。

ChatGPTのページ毎の出力を順番に繋げて、
ファイルの体裁を整えたら、
Marp CLIを呼び出して、スライドの画像を生成します。

marp --images png input.md

MarpスライドのデザインはCSSをカスタマイズすることで変更できます。
自由度はかなり高く、下の記事のように本をデザインすることもできます。

clean-copy-of-onenote.hatenablog.com

例として作成した動画では、
背景用の画像を別に用意して貼り付けただけです。

VOICEVOXで音声合成

VOICEVOXは与えられたテキストを読み上げてくれます。

ChatGPTの台本を順に入力して、
読み上げ音声を出力します。

VOICEVOXでは、さまざまな声色が用意されているので、
speakerの属性で、誰が喋ったかに応じて声色を変えることで、
簡単に複数人の掛け合いが実現できます。

ただ、英単語の読み上げは苦手としていて、
英単語を一旦カタカナに変換するという一手間が必要になります。
(ChatGPTの出力の時点で英単語をカタカナに変換して出力して貰おうともしましたが、中々うまくいかず、出力後に対応するようにしました)

qiita.com

FFmpegで動画を出力

画像と音声データが得られたら、
後はそれをくっつけて動画の完成です。

FFmpegは動画を編集をプログラマブルにする優秀なツールです。
下の記事の紙芝居動画を作成する要領で、
画像データに音をつけながら、動画を作成します。

clean-copy-of-onenote.hatenablog.com

まとめ

今回は、AIを使用してプレゼン資料と台本、
そして、プレゼン動画を自動生成する方法について説明しました。

ChatGPTにJSONで出力させると、
今回のようにプレゼン資料と台本を同時に出力させると言った複数出力と、
その後の処理が簡単になるので便利です。

プライバシーポリシー