2023年1月24日火曜日

OpenAI Whisperを使った文字起こしアプリの作成(4) - APEXアプリの作成

 Whisperによる文字起こしを行うAPIが作成できました。このAPIを呼び出すAPEXアプリケーションを作成します。

作成したアプリケーションは、以下のように動作します。

アプリケーション作成ウィザードを起動します。

名前Whisper Transcribeとします。すべての機能はデフォルトで作成されるホーム・ページに実装します。そのため、設定は変更せずにアプリケーションの作成を実行します。

アプリケーションが作成されます。

ページ・デザイナにてホーム・ページを開きます。

最初に音声ファイルを指定するページ・アイテムを作成します。

Bodyにページ・アイテムを作成します。

識別名前P1_FILEタイプとしてファイル参照...を選択します。

設定ファイルをパージするタイミングとして、End of Requestを選択します。セッション・ステートストレージとしてリクエストごと(メモリーのみ)を選択します。

音声ファイルのアップロードとAPI呼び出しによる文字起こしは、1回のHTTPリクエストで完結します。そのため、アップロードした音声ファイルを処理完了後に保持する必要はありません。

音声ファイルのアップロードと文字起こしを実行するボタンを作成します。

作成したボタンのボタン名SUBMITラベルSubmitとします。動作アクションはデフォルトでページの送信になります。


文字起こしの結果を保持するページ・アイテムを作成します。

作成したページ・アイテムの識別名前P1_TEXTタイプとしてテキスト領域を選択します。ラベルTextとします。

セッション・ステートデータ型CLOBストレージとしてセッションごと(永続)を選択します。このように設定すると、ページをリロードしても文字起こしの結果が維持されます。


ボタンSUBMITをクリックしたときに、文字起こしのAPIを呼び出す処理を実装します。

以下のコードを実行し、パッケージUTL_WHISPERを作成します。

左ペインでプロセス・ビューを開き、文字起こしのAPIを呼び出すプロセスを作成します。

作成したプロセスの識別名前TRANSCRIBEタイプとしてAPIの呼出しを選択します。設定パッケージとしてUTL_WHISPERプロシージャまたはファンクションとしてTRANSCRIBEを選択します。

サーバー側の条件ボタン押下時SUBMITを選択し、ボタンが押されたときにUTL_WHISPERのプロシージャTRANSCRIBEが呼び出されるようにします。


パラメータのp_filep_textはデフォルトでページ・アイテムP1_FILEP1_TEXTが割り当たります。

パラメータp_urlは、タイプアイテムアイテムとしてG_TRANSCRIBE_URLを指定します。G_TRANSCRIBE_URLは置換文字列として、この後に値を設定します。


アプリケーション定義置換を開き、置換文字列をG_TRANSCRIBE_URLとして、置換値にWhisperによる文字起こしを行うAPIを実装したURLを設定します。


以上でアプリケーションは完成です。アプリケーションを実行すると、記事の先頭にあるGIF動画のように動作します。

今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/whisper-transcribe.zip

無料の範囲だと処理に時間がかかるため、実用レベルで使用するのは難しいとは思います。とはいえ、どのように使えるのかという評価はできるのではないでしょうか。

次の記事で、JavaScriptから直接Whisperを呼び出すような実装を追加します。

続く