見出し画像

LLM活用方法の模索日記その2

こんにちは。株式会社フィノバレーでモバイルアプリチームのリーダーを担当している照井です。
前回の「LLM活用方法の模索日記その1」では翻訳に関する模索日記を書きました。

すでに「日記その1」の時点で「日記その2」に書く内容も決めていたのですが、間に別の記事を挟んでいたら3ヶ月経ってしまいました。
この記事では音声の文字起こしについて書いていこうと思います。


はじめに

昨年2023年、LLMの活用方法を模索している中でOpenAIのWhisper APIを使うことで簡単に文字起こしができ、精度もなかなか良いという話を耳にしました。このAPIを使えば、例えば
「海外のセッション動画を視聴しながら内容を日本語で表示する」
といったこともできるのではと想像を膨らませてはいたのですが、実際に作るまでには至っていませんでした。

◽️OpenAIのWhisper
https://openai.com/index/whisper/

それから少し時は経ち・・2024年2月頃でしょうか、PMチームの渡邉と毎月実施している1on1の中で「録音した会議の議事録をAIで自動サマリーするなんて使い方は最近耳にしますね」という話をしました。
私はWhisper APIの存在を知っていたので「簡単にできますよね〜」という回答をしたものの「本当に簡単にできるのか?」と疑問になり、ずっと試してみたいと思っていたこともあって実際にアプリを作ってみることにしました。

この記事を書くにあたって

「活用日記その1」でも同じことを書いたのですが近年はAI分野の進化が激しすぎて1、2週間でも情報の陳腐化が当たり前となっています。
そんな中、私がこれから書こうとしている内容は半年以上前のものでもはや化石状態です。

2024年11月現在では、OpenAIがRealtime APIをリリースしたりGoogleのSpeech-to-text AIが進歩していたり、日本語に特化したローカルで動作する文字起こしモデルkotoba-whisper-v2.0が登場したり・・など、あまりに激動すぎて当時「技術的に詰まった話」は多分今はほとんど解消されていると思われます。

◽️OpenAI Realtime API
https://openai.com/index/introducing-the-realtime-api

したがって、この記事は私が当時段階的に色々試したことをポエム的に書くことにしました。

実現したい内容の段階的目標

段階的に取り組んでいき、最終的に3つ目の内容が実現できたら良いなと考えていました。

  1. 海外のテック動画を文字起こしとサマリーしながら視聴する

  2. リモート同士のミーティングや会議で、互いの会話を録音する

  3. AI話者を作って会話可能にする

1と2は実現できたのですが3つ目については会話の切れ目を識別するのが難しくて当時は断念しました。 本記事では1と2について書いていきます。
(※ 2024年11月現在ではRealtime APIの登場によりかなり実現性が高まっていると思われます)

1.海外テック動画を文字起こしとサマリーしながら視聴する

まずは自分が使いたいものでないとやる気が出ないので身近なところから役立つものを作ろうと思いました。
YouTubeではAndroid DevelopersFirebaseFlutterなどのチャンネルで多くの英語動画が公開されています。こういった技術動画を日本語で確認しながら視聴できると楽しそうだなと考えました。
さらにLLMのAPIを使ってサマリーを作成できれば、さらに理解が深まりそうだなということで取り組みました。

実際に作成したアプリはこんな感じになりました。

作成したアプリのスクショ

苦労した点

私はオーディオデバイス分野に明るくなかったためデバイス周りで苦戦しました。
具体的にはMac上でYouTubeをイヤホンで聴くというシーンにおいて、YouTubeの音声をイヤホンに流しながら録音・・つまりアプリにも同時にその音声を入力させることができません。何もしない状態だと

「イヤホンから音声は聞こえるが録音はできていない」
「録音はできているがイヤホンから何も聴こえない」

となります。これは複数の出力装置に音声を流していないためで、解決するにはミキサーソフトが必要になります。
今回私はBlackHoleという音声のルーティングソフトを使いました。

BlackHoleのような仮想オーディオデバイスは音声信号をソフトウェア的に複数の出力先にルーティングすることができます。ミキシングという処理です。
Macには「オーディオMIDI設定ツール」というものが存在し、そこで「複数出力装置」という機能を使うことができます。
これは複数の物理出力デバイスに対して同一音声信号を同時に送信する機能です。
ただし、この機能は出力に限定されていて録音アプリが入力デバイスとして認識することができません。そこで、BlackHoleのような仮想デバイスにルーティングしそれを録音デバイスとして使うことを可能にしています。

まとめると、Mac標準で利用できる「オーディオMIDI設定ツール」と別途インストールした「仮想オーディオデバイス」の2つを使って音声をイヤホンに流しながらの録音を実現しました。

2.リモート同士のミーティングや会議で、互いの会話を録音する

渡邉と1on1で話していた「AI活用法に直接つながるアプリ」がこれに当たります。リモートでお互い話しつつ文字起こしとその文字データを元に色々な加工ができるようになります。まだ加工は全くしていない状態ですがアプリのスクショです。

作成したアプリのスクショ

一応試作は完成したもののローカルで少し動かしただけで、実用化には至っていません。
そもそも会社で本格的に使う場合、両者の合意などの録音時ルールや音声の扱いなどのガイドライン的なものが必要だと思いますし、アプリ自体もまだまだ検証と修正が必要だと思っています。

アプリの検証に関しては、単に私が休日体調不良とか気が乗らない等の理由で検証を先延ばししていたためです。

で、しばらく放置していたらOpenAIからRealtime APIがリリースされ仕切り直した方が良いかなとなって完全にストップしました。

内部の仕組みとしては単純で「相手と自分の音声をそれぞれ分けてWhisper APIに投げ、タイムスタンプで整列させて表示」としています。
少し難易度が高いのがPCに入ってきた出力音源とこちらから発声する入力音源の2音源をルーティングして録音しつつ相手と自分の声がそのまま互いに聞こえるようにする点です。

音声データさえ取れてしまえばあとはタイムスタンプが若干ズレる問題があるもののある程度会話の流れが起こせるかと思います。ただここら辺は使い込んだわけではないので改善の余地があると思っています。

これは後から知ったのですが、GoogleのSpeech-to-text AIであれば話者識別が可能のようですので音声を分ける必要はなく、より簡素に実現できる可能性があります。

まとめ

当初、渡邉と1on1で話していた録音したデータを文字起こしするというアプリの作成は思った以上に簡単に実現できました。

既に様々な企業が取り組み始めていますが、音声データを使えるとかなり利用の幅が広がるという印象です。特にカスタマーサポートの支援や面接時の評価時のサポートができるようになると非常に有益かなと考えます。

今回のアプリ作成を通して分かったことは、音声の文字起こしとその応用は技術進化の速さを実感させるものでした。特にリアルタイムで文字起こしや話者識別の技術が、かつては高い専門知識を必要としたものから手軽に利用できるものへと変化したことは驚くべきことです。

この音声技術がもたらす未来のコミュニケーションの可能性を引き続き探っていきたいと考えています。

いいなと思ったら応援しよう!