1. はじめに
この記事では、StreamlitとOpen AIのAPIであるWhisperを組み合わせて、音声認識による文章生成タスク(speech2text)を行うWebアプリケーションの実装方法について解説します。
whisperとは何かについて
Whisperとは、OpenAIが開発した汎用的な音声認識モデルです。Web上から収集した68万時間分の多言語音声データで教師あり学習されており、高い音声認識精度を持ちます。WhisperはOpenAIのAPIとして公開されており、簡単に実装することができます
Streamlitとは何かについて
Streamlitは、PythonでWebアプリケーションを構築するためのフレームワークであり、データ可視化や機械学習モデルの展開に向いています。本記事では、Streamlitを使用してWhisperのAPIを利用するWebアプリケーションを構築します。
2. Whisper APIの準備
Open AIのAPIキーの取得方法
まず、whisper APIを利用するためにはOpen AIのAPIキーが必要です。以下の手順で取得してください。
- OpenAIのサイトにアクセスするhttps://openai.com/
- 右上の「Sign Up」をクリックする
- 必要事項を入力してアカウントを作成する
- 右上のPersonalから「View API Keys」を選択する
- 「Create new secret key」をクリックする
- 必要事項を入力してAPIキーを作成する
この手順で詰まる方は以下の記事で画像付きで丁寧に解説しておりますので、こちらもご参照ください。
OpenAIのPythonライブラリのインストール
Pythonからwhisper APIにリクエストを送信するためには、openai
というライブラリを使用します。以下のコマンドでインストールしてください。
pip install openai
以上の手順を踏むことで、whisper APIを利用するための準備が整います。
3. Streamlitの設定
Streamlitアプリケーションのセットアップ
まず、Streamlitアプリケーションをセットアップします。以下のコマンドでStreamlitをインストールします。
pip install streamlit
次に、app.py
という名前のファイルを作成し、以下のようなコードを記述します。
import streamlit as st
def main():
st.title("Whisper API Demo")
if __name__ == "__main__":
main()
記述後以下のコマンドでStreamlitを起動させます。
streamlit run app.py
これで、Streamlitが既定のブラウザで起動します。
Streamlitがブラウザで起動しましたら、Streamlitアプリケーションの基本的なセットアップは完了です。
Streamlitの基本的な使い方については以下の記事でも解説しています。
ユーザー入力を受け取るためのStreamlitコンポーネントの使用
次に、ユーザーが入力したテキストをwhisper APIに送信するためのUIを実装します。以下のように、Streamlitのtext_input
コンポーネントを使用して、ユーザーからの入力を受け取ります。
import streamlit as st
def main():
st.title("Whisper API Demo")
# 音声ファイルをアップロードする
audio_file = st.file_uploader("音声ファイルをアップロードしてください", type=["mp3", "wav"])
if __name__ == "__main__":
main()
file_uploader
コンポーネントには、音声ファイルを渡しています。
APIリクエストの送信とレスポンスの受信
最後に、ユーザーが入力したテキストをwhisper APIに送信し、APIからのレスポンスを取得する部分を実装します。<YOUR_API_KEY>には前章で取得したAPI KEYを入力してください。
import streamlit as st
import openai
def main():
openai.api_key = '<YOUR_API_KEY>'
st.title("Whisper API Demo")
# 音声ファイルをアップロードする
audio_file = st.file_uploader("音声ファイルをアップロードしてください", type=["mp3", "wav","mp4"])
submit_btn = st.button("送信")
if submit_btn:
st.write("音声ファイルを送信しました")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
st.write(transcript["text"])
if __name__ == "__main__":
main()
- “送信”ボタンを作成するために、
st.button()
関数を使用します。 - ボタンが押された場合、Whisper APIを使用して文章生成を行いまいます。
openai.Audio.transcribe()
関数に、使用するモデル”whisper-1
“とアップロードされた音声ファイルを指定します。生成されたトランスクリプトは、transcript
変数に格納されます。 - 最後に、生成されたトランスクリプトを表示するために、
st.write()
関数を使用します。
以上で、Whisper APIを使用したStreamlitアプリケーションの実装が完了しました。
4. アプリケーションのテストと改善
エラー処理と例外処理の追加
APIリクエストに失敗した場合や、APIのエラー応答を受け取った場合に、適切なエラーメッセージを表示するように、エラー処理と例外処理を追加することも重要です。例えば、APIのエラー応答には、エラーコードとエラーメッセージが含まれています。これらの情報を解釈して、ユーザーに適切なエラーメッセージを表示するができます。
アプリケーションの改善点や機能追加のアイデアの紹介
以下は、アプリケーションを改善するためのアイデアです。
- モデルの選択機能の追加
現状、Whisper APIは”whisper-1
“の言語モデルのみを提供しています。しかし、今後言語モデルが追加された場合には、ユーザーが使用用途によってモデルを選択することで、より柔軟なテキスト生成が可能になります。 - テキストの整形機能の追加
生成されたテキストを整形する機能を追加することで、出力を見やすくすることができます。例えば、改行やインデントを追加することで、テキストを段落や箇条書きに整形することができます。
以上のような改善点や機能追加のアイデアを取り入れることで、より使いやすく、便利なWhisper APIを利用したアプリケーションを実現することができます。
5. おわりに
この記事では、Open AIのWhisper APIを使って、Streamlitアプリケーションを構築する方法について解説しました。Whisper APIを使用することで、自然な言語処理や文章生成などの機能をアプリケーションに実装することができます。
Whisper APIを使用したアプリケーションの可能性は非常に大きく、ビジネスやエンターテインメントなど、様々な分野での活用が期待されています。例えば、カスタマーサポートチャットボットの開発や、クリエイティブライティング支援ツールの開発などが挙げられます。
今後の開発や改善の方向性としては、Whisper APIを組み合わせた他のAPIやライブラリとの連携により、より高度なアプリケーションの開発が可能となるでしょう。
以上、この記事で学んだことをまとめました。Whisper APIを使用して、自然な言語処理や文章生成の機能を持つアプリケーションを構築する方法を学びました。是非、この記事を参考に、自身のアプリケーションの開発に役立ててください。
ChatGPTの実装についても記事を執筆しています。
コメント