
2025.02.18
「売上をスケールする」AIの使い道とは アルペンが挑む、kintone×生成AIの接客データ活用法
Azure OpenAI Serice を利用したリアルタイム文字起こし処理(全1記事)
リンクをコピー
記事をブックマーク
永里洋氏:今回はStudyCoさんのLT会に初参加ということで、よろしくお願いいたします。
本日は「Azure OpenAI Service」を利用して、リアルタイムで音声データを取得して、文字起こしをリアルタイムで処理して動かしてみるということをやったので、軽く話します。
一瞬だけ「Notebook」を動かします。うまくいくかどうかわからないですが、リアルタイム文字起こしをこの発表でそのままやって、うまくいくかどうかを試してみようかと思います。
まず自己紹介をします。永里洋と申します。現在、株式会社エーピーコミュニケーションズで仕事をしています。もともとはネットワークインフラ系の職種をやっていたところ、クラウド基盤系の案件から機械学習系、ビッグデータ系の案件に関わるようになってきて、徐々にそちらの仕事をしています。現在はデータエンジニアリング系やデータサイエンス系の仕事も徐々に担当しています。
本日は、先ほど少し話しましたが、リアルタイムの音声の文字起こし処理の検証をやったことのシナリオ説明して、今デモンストレーションを動かしてみていますが、内容の紹介を軽くして、デモを見てもらおうかなと考えています。
(スライドを示して)では、まずはやってみたいことと検証のシナリオになりますが、こちらになります。弊社でも現在、Azure OpenAIといった生成AIを有効活用して、いろいろなお客さまに導入しようという話がよく出ています。
典型的な導入パターンだと、「Azure Cognitive Search」、現在は「Azure AI Search」と呼ばれています。いわゆるテキスト検索です。
今はベクトルサーチやセマンティック検索もできるようなサービスになってきていますが、そういったナレッジデータベースとAzure OpenAI Serviceを組み合わせたRAG(Retrieval-Augmented Generation)の形態でのFAQサービスなど……。典型的なサービスになっちゃうかもしれませんが、こういった話の導入をよく聞いています。
こちらは、リアルタイムで会議のやり取りを取得して、文字起こししたデータをどんどんAzure AI Searchに溜め込んでいき、会議が進行中の状態で、その時点での要約情報を取ったり、進行状況の確認、今どういった話が進んでいるかや、論点や課題の整理、進行中の会議の中でのナレッジの有効活用などができるんじゃないかなというところを期待していて、少しずつ検証をやっています。
内容としてはまだ雑なところもありますが、想定としては現場の中で会議やミーティングでやり取りされている意見や議事とか、レビューなどを取ったり、なにかしらのイベントやLT会で発表された内容などを収集、蓄積していって、うまく有効活用できないかというところを試しています。
今回は、対象としてAzure OpenAI Serviceを利用しようかと思っています。みなさんもよく利用していると思いますが、テキストの生成部分では、GPT-3.5やGPT-4を使い分けながら試しています。あと、まだ日本では提供できていないようですが、Azure OpenAI Serviceの中の音声文字起こしサービスとして「Whisper」を今回使っています。
厳密にはリアルタイムでの音声の取得はまだできないようですが、今回はいったんバッチ方式で取ろうということをやっています。
厳密には、Azureは別のAIサービスで「Speech to Text」といったサービスもあるにはあるのですが、今回はWhisperを利用しています。画像生成サービスもあるようですが、今回は使っていません。
デモンストレーションの内容の紹介に移ります。(スライドを示して)大まかな構成になりますが、上段の会議参加者の部分と、下段の取得したナレッジからなにかしらの要約を取得したい人、上の人と下の人の2つの登場人物がいるようなイメージで書いています。
上のほうでは、参加者の方がなにかしらの発声をした場合、今回はPythonスクリプトを使っているのですが、そこから音声データをWebファイルとして取得して、WebファイルからAzure OpenAIのWhisperにアクセスして文字起こしするといった構成を取っています。
そして、文字起こししたサービスの中の言語情報に整形をかけたり、元データで発声されている方が国外の方だった場合も見据えて、日本語に翻訳するというかたちで今回やっています。
文字起こしされたデータをリアルタイムでどんどんAzure AI Searchに蓄積するというかたちでリアルタイムでナレッジが蓄積されている動きを取り、それに対して進行中の会議やミーティングでなにかしらのデータ、要約文とかを取得したいという登場人物が下にいます。
今回はPythonで「LangChain」を使っていますが、Azure OpenAIとAzure AI Searchを組み合わせたRAGの構成で、AI Searchから該当の会議の情報を抜き出してくる、欲しい情報を抜き出せるというかたちを目指してやっています。
ただ今回は、そこまで複雑なかたちは目指さずに、いったん会議の要約ができないかなと目指しています。
今、上と下で2役の紹介をしましたが、まずは上の会議参加者の方のパターンにフォーカスして軽く話します。
(スライドを示して)こちらが今回作った簡単な構成についてのパターンになります。今回はこのまま利用しています。ローカルPCの環境でPythonのコードをNotebook環境で動かしていて、こちら(スライド図左)が端末のデバイスですね。マイクデバイスからインプットして入力した音声データを取得しています。
こちら(スライド図の真ん中)が、今実行中のPythonのコードで、「PyAudio」を使って一定間隔ごとにWAVファイルを取得するかたちで進行しています。
こちらはスレッドのかたちで動いていて、ここから一つひとつ生成されたファイル情報がqueueを通り、文字起こしの取得スレッドに渡されるようにしています。
文字起こしの取得スレッドは、queueから受け取った音声情報のファイル名をもとにAzure OpenAI側のWhisper APIを叩いて、文字起こし情報を取得して、そこから翻訳なり文章整形をして、Azure OpenAI側に送るような処理で書いています。
今動いている処理がうまくいったらいいですが。一定間隔ごとにリアルタイムの音声文字起こしが進行しているかたちを、簡単にJSONで吐き出しています。
今想像したとおりに動いているのがいったんはわかるようです。(画面を示して)こんなかたちで、一定間隔ごとに少しずつしゃべっている内容が文字起こしされて、Azure AI Searchにどんどん蓄積されていくような流れになっています。
(画面を示して)今回LLM側については、LangChainとAzure OpenAIの構成を使っていて、こういったかたちでいったん簡単な関数にして、そこからどのモデルを使うか選択するようなイメージにしています。
文字起こしされたデータについては、口語体になっているような文章をよりフォーマルなかたちで整形するというようなお願いごとをするプロンプトを投げていて、それで先ほどのような整形された文章をAzure AI Searchのほうに投げています。
Azure AI Searchは専用のSDKが一応あるにはあるんですが、今回は特には使っていません。そのままの素のREST APIを叩くかたちで、今回は用に立てています。
Azure AI Searchのリソースに対して、関数としてのかたちでRESTでどんどん文字起こしデータを投げているような構成を取っています。
続いて、下のほうですね。リアルタイムで進行している会議について、なにかしらの知りたい情報を取りたいというパターンです。下の段の役割を取っていた方についての紹介になります。今回、LangChainのAgentを立てるかたちで処理を作ってみました。
1つは、Azure OpenAI側のLLMコンポーネントとして「GPT-4」のモデルを使っています。と同時に、現在のAzure AI Searchのストア上にどういったセッション、会議情報が蓄積されているかというセッションのリストを取得するためのカスタムツールを簡単に作っています。
リストから取得した会議一覧の中から特定の会議を選択して、その会議についての要約文を得るためのカスタムツールをまた別で作っています。
こちらも今回はNotebookで簡単に書いています。(画面をしめして)このように簡単にCustom agentを作っています。
先ほど、セッションのリストを取得するという話をしました。(画面を示して)カスタムツール用としてこんなかたちで「findSessionTool」という簡単な関数のクラスを書いています。
もう1つは特定のセッションの要約文を得るための簡単なクラスを作っています。先ほど簡単に話したAI SearchからRESTで簡単なデータを取るための簡単な関数を使って取得できるように書いています。
こちらがうまく意図どおりに動くかどうか試してみようかと思います。(画面を示して)こういったかたちで、Agentに対して「OpenAIに関するセッションを探して、HTMLのリスト形式で教えてほしい」と、聞いてみます。現在進行しているこのLTについてのタイトルもうまく取れたら成功かなと思います。
(取得したデータを確認して)いくつか取れましたね。きれいに行ごとに分かれていたら理想的だったのですが……。他にも蓄積されているタイトルがあるのですが、こういった蓄積しているセッションのタイトルがリストで取れるようなかたちを考えていました。
(画面を示して)今話しているセッションの内容は、Azure OpenAI Serviceを利用したリアルタイム文字起こし処理だと思いますが、こういったかたちで取れています。
では続いて、こちら(スライド下段)の処理の、こちらのセッションのリアルタイムで進行している内容の要約文が取れるかを試してみます。簡単なプロンプトを書いて、「このタイトルについての要約文を取ってくれ」とお願いしてみます。時間がかかっちゃうかもしれませんが、少しお待ちください。
(取得したデータを確認して)こういったかたちで、現在進行しているLTの要約文を簡単に吐き出してくれました。
ちょっとまだコードに粗い部分もありますが、リアルタイムで進行している会議やミーティングについての有用な知見が取れるんじゃないかということで、こんなかたちで情報共有しました。
以上で私のセッションは終了します。ありがとうございました。
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
第20回エクゼクティブメンターイベント「今、「ひと」と組織が共創する〜働き方の未来へ」
2024.12.07 - 2024.12.07