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_file、
p_textはデフォルトでページ・アイテム
P1_FILE、
P1_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を呼び出すような実装を追加します。
続く