🔊

英語でのプレゼンのための発音アクセント&質疑対策アプリを作った話

2024/07/24に公開

アプリの概要

アプリのそれぞれの画面

今回は,英語でのプレゼン準備のためのアプリを作成しました.
作成したアプリの機能は2つです.

  1. パワーポイントをuploadすることで,スピーカーメモを音声化してくれる機能
  2. プレゼン資料のpdfをuploadすることで,GPT-4oによる質疑対策ができる機能

これらの機能で,プレゼンの発音やアクセントを確認することができます.さらに,質疑対策も行うことができ,スムーズな発表に繋げることを目的としています.

ソースコード
https://github.com/kokist/presentation_checker

デモ
https://presentation-checker.streamlit.app/

なぜ作ったのか?

文章を音声化してくれるアプリはいくつかあります.しかし,スピーカーメモの文章が多くなると課金が必要であったりと,手軽に発音を確認することが出来なかったので作ってみました.

使用技術

  • Python
  • Streamlit
  • edge-tts (合成音声)
  • GPT-4o

作成するにあたって工夫した点

  • 機能を分離した設計
  • GPTへの入力を画像にしたこと
  • Streamlitのconfig.tomlの設定

今回は,特に機能を分離した設計を強く意識して作成しました.
それぞれについて詳しく説明していきます.

機能を分離した設計

こちらの記事を参考にデータ処理とUIの分離と,責務の明確化を考慮したディレクトリ構成・コードの作成を行っています.
具体的には以下のようなディレクトリ構成です.

├ .streamlit/config.toml  # Streamlitの設定ファイル
├ pages/                  # 各ページのUIのコード
├ services/               # データ処理.音声合成やGPTなど
├ utils/                  # 汎用なUIのコード
├ third_party/            # 外部ライブラリ
└ app.py

特にutilsにStreamlitのサイドバーなどのUIをコンポーネント化しておき,各ページで使いまわしています.

GPTへの入力を画像にしたこと

GPT-4oになり,マルチモーダルに処理することが可能になりました.そのため,スライド資料のような画像の多いデータに関しては,テキスト化するのではなく,画像のまま処理した方がいいのではないかと考えました.今回は,ユーザに資料をpdfでuploadしてもらい,pdfを画像化し,base64形式にすることでGPTへの入力としています.

Streamlitのconfig.tomlの設定

Streamlitは,.streamlitディレクトリのなかに,config.tomlを作成することで,themeの色であったり,showSidebarNavigationの設定をすることができます.この設定で,maxUploadSizeを2GBまで引き上げをしています.スライドのような画像などの多いデータでは,容量も多くなりがちです.そのため,この設定を変更するのは必要になると思います.

おわりに

機能を分離して実装したおかげで,どこにどんな機能があるか見通しが良くなったように思います.今後も意識して実装していきたいです.
あとは,スムーズな英語の発表ができますように🙏

Discussion