英語でのプレゼンのための発音アクセント&質疑対策アプリを作った話
アプリの概要
今回は,英語でのプレゼン準備のためのアプリを作成しました.
作成したアプリの機能は2つです.
- パワーポイントをuploadすることで,スピーカーメモを音声化してくれる機能
- プレゼン資料のpdfをuploadすることで,GPT-4oによる質疑対策ができる機能
これらの機能で,プレゼンの発音やアクセントを確認することができます.さらに,質疑対策も行うことができ,スムーズな発表に繋げることを目的としています.
ソースコード
デモ
なぜ作ったのか?
文章を音声化してくれるアプリはいくつかあります.しかし,スピーカーメモの文章が多くなると課金が必要であったりと,手軽に発音を確認することが出来なかったので作ってみました.
使用技術
- 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