はじめに
過去3回に渡って、AlmaLinux上にセルフDify環境を構築して、簡易なチャットBotを作ってみたり、Difyのバージョンアップをやってみたりしました。
第一回:AlmaLinux上で動作させるセルフDify環境を構築してみた
今回はもう少し実用的?なアプリとして、音声データを文字起こしして、その内容を元に議事録を作成するというアプリを作ってみます。
Difyではバージョン0.10以降でファイルアップロード機能が追加され、音声や映像、WordやExcel、PowerPointなどのファイルをアップロードして扱えるようになっています。
この機能と、Speech To Textという音声データを文字起こしするプラグイン(中身はOpenAIのWhisper)を組合わせて文字起こし&議事録作成アプリを作ってみます。
アプリを作る
では、さっそくアプリ作っていきます。
Difyのスタジオからアプリを作成します。今回はテンプレートを使わずゼロベースから作成するので、「最初から作成」を選択します。
「ワークフロー」を選択し、任意のアプリ名を入力し、「作成する」を選択します。
フロー作成画面になるので、最初から用意されている開始ブロックをクリックして、右側に出てくる入力フィールドの「+」をクリックします。
入力フィールドの追加画面で、「単一ファイル」を選択、変数名には任意の変数名(今回は「audio」としています)、サポートファイルタイプで「音声」を選択、アップロードファイルタイプで「ローカルアップロード」を選択して、「保存」します。
次に、開始ブロックにマウスカーソルを合わせると「+」マークが出てくるので、それをクリックし、「ツール」⇒「Audio」⇒「Speech To Text」を選択します。(Speech To Textの選択肢が出て来ない場合は、OpenAIのモデルプロバイダーが設定されていない可能性があるので、第二回の記事を参考に設定してみてください。)
そうすると、「SPEECH TO TEXT」ブロックが追加されるので、入力変数をクリックして「audio」を選択(開始ブロックで設定した入力フィールドの変数名)、MODELに「whisper-1」を選択します。
次に「SPEECH TO TEXT」ブロックにマウスカーソルを合わせ「+」をクリックし、「ブロック」⇒「LLM」を選択します。
LLMの設定画面になるので、まずはAIモデルに任意のモデル(今回はgpt-4にしています)を選択肢、SYSTEMにGPTのプロンプトを入力します。
今回のプロンプトは、
あなたは優秀なライターです。
以下の文字起こしの内容で議事録を出力してください。
という感じにしました。そして、「メッセージ追加」をクリックしてUSERプロンプトの入力フィールドを出します。
次にUSERプロンプトの「(x)」をクリックすると変数の選択肢が出てくるので、SPEECH TO TEXTの出力変数である「text」を選択します。
それらを設定すると、↑のような感じになっていると思います。
次にLLMブロックにマウスカーソルを合わせ「+」をクリックして、「ブロック」⇒「終了」を選択します。
出力変数の「+」をクリックすると変数の入力フィールドが出てくるので、「変数値の設定」をクリックし、選択肢の中からLLMの出力変数である「text」を選択します。
これでアプリが完成です。
このアプリがどういうことをやっているかを簡単に説明すると、
- 開始ブロックで音声ファイルを受け取り(アップロード)、SPEECH TO TEXTブロックに渡す
- SPEECH TO TXTブロックで音声ファイルをWhisperにて文字起こししてLLMブロックに渡す
- LLMブロックでgpt-4がSPPECH TOTXTブロックで生成された文字起こしデータを成型、議事録作成し、終了ブロックに渡す
- 終了ブロックでLLMブロックから受け取った内容を表示
といった処理の流れになります。
アプリを試してみる
作成したアプリは実行ボタンから試してみることができます。
実行ボタンを押すとテストができるので、「ローカルアップロード」をクリックして、音声ファイルをアップロードし、「実行開始」をクリックします。
今回はChatGPTに適当な会議のトークスクリプトを書いてもらい、それをAmazon Pollyで音声ファイルにしたものをtest.mp3としてアップロードしてみました。
アプリを実行すると、↑のような感じで議事禄が出力されました。
以下全文です。
議事録
日時: 不明
参加者: 不明
議題:新サービスのアイデア出し
1.生成 AI の活用
・問い合わせ対応や社内の情報検索の自動化を考慮
・社内 FAQ を自動で応答するチャットツールの導入を提案
・スラックやチームズでの自然言語対応とドキュメント・ナレッジベースの意味ベース検索機能を検討
・ドキュメント整備のサポートサービスの提供を検討
・新しいドキュメントの自動学習に反映する仕組みが必要
2.中小企業向けのセキュリティ診断支援ツール
・イズムズやTマーク取得支援を考えている
・質問形式でガイドし、必要な書類を自動生成する機能を提案
・チェックリスト形式でステータス管理、提出用のドキュメントの出力を検討
・企業のセキュリティ意識の高まり、補助金対象の可能性を認識
・支援事業者との連携、ホワイトラベル展開を視野に入れる
次回行動計画:
・それぞれ方向性を整理し、簡単な企画案にまとめる
・技術構成と実装のイメージを整理
・運用視点でのリスクやコストを見積もる
・対象顧客と収益モデルを考える
次回議論:
・企画案を持ち寄り、それに基づいて議論を進める
以上
ちなみに、音声ファイルの文字起こしデータの全文は以下です。
お疲れ様です。
今日は新サービスのアイデア出しをテーマに自由に意見交換していきましょう。
最近気になっている技術とか現場で感じている課題って何かありますか?
うーん、やっぱり生成AIの活用ですかね。社内業務でどう取り入れていくか、そろそろ本格的に考えないといけないなと。
確かに、問い合わせ対応や社内の情報検索あたりで自動化したいって声は増えてますね。
でもちゃんと運用しないと逆に混乱を招く可能性もあります。
そうですね。ただ、例えば社内FAQを自動で応答するようなチャットツールなら初期導入のハードルも低いかもしれません。小さく始められるし。
その案いいですね。SlackやTeamsに対応させて、自然言語で質問すると回答してくれるみたいな。
社内ドキュメントとかナレッジベースを取り込んで、そこから意味ベースで検索して答える感じですね。
技術的にはエンベッディングと検索、それに生成の組み合わせでいけそう。
ただ、全処理が意外と大変そう。PDFもExcelも混在してるし。
ああ、それは課題ですね。でも、初期のドキュメント整備をサポートするサービスをつけると導入支援にもなって収益化もしやすくなりません?
確かに。初期導入パックみたいな形で、テンプレート提供やファイル整理も込みにすれば導入率は上がりそうです。
それに導入後の更新も重要ですよね。新しい資料が追加されたときに自動で学習に反映される仕組みがないと、すぐ使われなくなりそう。
自動同期か、せめて定期更新は必須ですね。できれば対象フォルダを監視して、変更があれば自動で反映されると便利。
あと、他に気になっているアイディアってありますか?
実は、中小企業向けのセキュリティ診断支援ツールを考えてました。
ISMSとかTマークを取りたいけど、何から始めればいいかわからない企業向けに。
それ、すごく需要ありそう。質問形式でガイドしたり、必要な書類を自動生成したりできるなら、かなり助かるはずですね。
チェックリスト形式でステータス管理できて、提出用のドキュメントを出力できれば業務効率が大きく上がりそう。
市場的にも企業のセキュリティ意識が高まってきてるし、補助金対象になるケースも多いから展開の余地はありますね。
支援事業者との連携も視野に入れれば、ホワイトラベルでの展開も可能かもしれないですね。
じゃあ今のところ、FAQチャットツールとセキュリティ支援サービスの二本立てで検討する感じですかね?
そうしましょう。それぞれ方向性を整理して、次回までに簡単な企画案にまとめてみませんか。
了解です。技術構成と実装のイメージを整理しておきます。
運用視点でのリスクや工数についてもざっくり見積もっておきます。
私は対象顧客と収益モデルを考えてみますね。
では、次回それを持ち寄って議論しましょう。
お疲れ様でした。
どうでしょう?完璧とは言えないかもしれませんが、それなりの議事録が出来ていると思いませんか?
また、Whisperの文字起こしの精度はAmazon Polly機械音声であればほぼ100%の出力になっています。
まとめ
今回はDifyで実用的なアプリを作る第一弾として、音声ファイルから文字起こし⇒議事録作成を行うアプリを作ってみました。
このアプリを作るにあたり、プログラミングは一切不要で、全てブラウザからポチポチとクリック、入力するだけでアプリを作成出来ています。
Difyの良いところは、こういった従来であればエンジアでしか作れなかったであろうアプリが誰でも(は言い過ぎかもしれませんが、、)作れることだと思います。
なお、注意点として、今回使っているSPEECH TO TEXTブロックの中身であるWhisper(クラウド版)は最大25MBまでの音声ファイルしか扱えません。(音声ファイルのビットレートにもよりますが、64bpsぐらいだと約50分、32kbpsで約1.5時間程)
なので、超長い会議の音声ファイルを文字起こししようとしても、使えなかったりするので、その場合は音声ファイルを分割したりなどの工夫が必要です。
また、Whisperは非常に優秀で今回のように機械音声であればほぼ100%に近い精度で文字起こしをしてくれますが、これが実際の人間の音声データだと精度はそこまで高くないです。
特に複数の人間が話す会議であれば、より精度は低くなります。
このあたりはWhisperの性能向上を願ったり、音声録音の際に工夫するなどで改善できるかもしれません。
とはいえ、いくつか実際の会議の音声データをこのアプリにかけてみましたが、修正は必要なものの議事録の叩き台としては十分活用可能だと思いました。