GenAIスタックによる動画分析・文字起こしチャットボットの構築

ビデオには貴重な情報が満載ですが、それを見つけるのに役立つツールが必要になることがよくあります。 講義やチュートリアルの分析を目指す教育機関から、ビデオレビューにおける顧客の感情の理解を目指す企業まで、ビデオコンテンツの文字起こしと理解は、情報に基づいた意思決定とイノベーションに不可欠です。 近年、AI/ML技術の進歩により、このタスクはこれまで以上に利用しやすくなっています。 

DockerでGenAIテクノロジーを開発することで、ビデオコンテンツから洞察を引き出すための無限の可能性が開かれます。 トランスクリプション、埋め込み、大規模言語モデル (LLM) を活用することで、組織はビデオなどの多様で生のデータを使用して、より深い理解を得て、情報に基づいた意思決定を行うことができます。 

この記事では、 GenAIスタック とDockerが提供するシームレスな統合を活用して、ビデオコンテンツの処理と理解を合理化する ビデオトランスクリプションとチャットプロジェクト について詳しく説明します。 

2400x1260 Genai Stackで次世代の動画分析文字起こしチャットボットを構築

アーキテクチャの概要 

このアプリケーションのアーキテクチャは、ビデオコンテンツの効率的な処理と分析を容易にするように設計されており、最先端のAIテクノロジーとコンテナ化を活用してスケーラビリティと柔軟性を実現しています。 図 1 は、 Pinecone を使用してビデオ文字起こしの埋め込みを格納および取得するアーキテクチャの概要を示しています。 

左の「yt-whisper」プロセスを示す2部構成の図では、音声のダウンロード、ウィスパー(音声文字起こしシステム)を使用した文字起こし、埋め込み(音声特徴の数学的表現)の計算、およびそれらの埋め込みを松ぼっくりに保存します。 右側 ("dockerbot" というラベル) のプロセスには、質問の埋め込みの計算、提供された文字起こしと知識と組み合わせた質問とのチャットの完了、関連する文字起こしの取得が含まれます。
図 1: ビデオデータを処理および操作するための 2 つのコンポーネント システムの概要を示す概略図。

アプリケーションの高レベルのサービス アーキテクチャには、次のものが含まれます。

  • yt-whisper: Docker Compose によって実行されるローカル サービスで、リモートの OpenAI および Pinecone サービスと対話します。 Whisper は、OpenAIが開発した自動音声認識(ASR)システムであり、AI主導の音声処理における重要なマイルストーンを表しています。 Whisperは、Webから提供された 680、000 時間の多言語およびマルチタスクの教師付きデータの広範なデータセットでトレーニングされ、英語の音声認識において驚くべき堅牢性と精度を実証しています。 
  • Dockerbot: Docker Compose によって実行されるローカル サービスで、リモートの OpenAI および Pinecone サービスと対話します。 このサービスは、ユーザーの質問を受け取り、対応する埋め込みを計算し、ビデオ ナレッジ データベースで最も関連性の高い文字起こしを見つけます。 その後、文字起こしはLLMに提示され、LLMは文字起こしと質問を受け取り、この情報に基づいて回答を提供しようとします。
  • OpenAI:OpenAI APIは、最先端のAIおよび機械学習技術で知られるLLMサービスを提供します。このアプリケーションでは、OpenAIのテクノロジーを使用して、音声から文字起こしを生成したり(Whisperモデルを使用)、テキストデータの埋め込みを作成したり、ユーザーのクエリへの応答を生成したり(GPTとチャット補完を使用)したりします。
  • 松笠: 大規模なベクトル検索アプリケーションの構築と展開に使用される、類似検索に最適化されたベクトルデータベースサービス。 このアプリケーションでは、Pineconeを使用してビデオ文字起こしの埋め込みを保存および取得し、ユーザーのクエリに基づいてアプリケーション内で効率的で関連性の高い検索機能を有効にします。

はじめ

開始するには、次の手順を実行します。

アプリは、ビデオから質問に答えることができるチャットボットです。 さらに、質問に答えるために使用されたソースを見つけるのに役立つビデオのタイムスタンプを提供します。

リポジトリのクローンを作成する 

次のステップは、リポジトリのクローンを作成することです。

git clone https://github.com/dockersamples/docker-genai.git

プロジェクトには、次のディレクトリとファイルが含まれています。

├── docker-genai/
│ ├── docker-bot/
│ ├── yt-whisper/
│ ├── .env.example
│ ├── .gitignore
│ ├── LICENSE
│ ├── README.md
│ └── docker-compose.yaml

API キーを指定する

/docker-genaiディレクトリに、 という.envテキストファイルを作成し、その中で API キーを指定します。次のスニペットは、例として参照できるファイルの内容 .env.example を示しています。

#-------------------------------------------------------------
# OpenAI
#-------------------------------------------------------------
OPENAI_TOKEN=your-api-key # Replace your-api-key with your personal API key

#-------------------------------------------------------------
# Pinecone
#--------------------------------------------------------------
PINECONE_TOKEN=your-api-key # Replace your-api-key with your personal API key

アプリケーションをビルドして実行する

ターミナルで、ディレクトリを自分の docker-genai ディレクトリに変更し、次のコマンドを実行します。

docker compose up --build

次に、Docker Compose は、ファイルで docker-compose.yaml 定義されたサービスに基づいてアプリケーションをビルドして実行します。 アプリケーションが実行されると、ターミナルに 2 つのサービスのログが表示されます。

ログには、サービスがポート 85038504. この 2 つのサービスは互いに補完し合っています。

yt-whisperサービスはポート 8503で実行されています。このサービスは、ナレッジデータベースにアーカイブするビデオをPineconeデータベースにフィードします。 次のセクションでは、 yt-whisper サービスについて説明します。

yt-whisper を使う

この yt-whisper サービスは、OpenAI Whisper モデルを使用して動画の文字起こしを生成し、Pinecone データベースに保存する YouTube 動画処理サービスです。 次の手順では、サービスの使用方法の概要を説明します。

ブラウザを開き、 http://localhost:8503 でサービスにアクセスし yt-whisper ます。アプリケーションが表示されたら、[URL] フィールドに YouTube ビデオの URL を指定し、[ 送信] を選択します。図 2 の例では、David Cardozo 氏の ビデオ を使用しています。

「Visual Studio Code、Docker、Docker Hub を使用して ML 対話型 GPU ワークフローを開発する」方法に関する David Cardozo 氏のビデオの "文字起こしのダウンロード" オプションを使用した処理済みコンテンツの例を示すスクリーンショット。 "
図 2: 文字起こしをダウンロードする機能を備えた、処理されたビデオコンテンツを表示するWebインターフェイス。

動画の提出

この yt-whisper サービスは、ビデオの音声をダウンロードし、Whisper を使用して WebVTT ()*.vtt 形式 (ダウンロード可能) に文字起こしします。 次に、「text-embedding-3-small」モデルを使用して埋め込みを作成し、最後にそれらの埋め込みをPineconeデータベースにアップロードします。

ビデオが処理されると、どのビデオがPineconeでインデックスに登録されているかを通知するビデオリストがWebアプリに表示されます。 また、トランスクリプトをダウンロードするためのボタンも用意されています。

Dockerbotチャットサービスへのアクセス

これで、ポート 8504 で Dockerbot チャット サービスにアクセスし、ビデオに関する質問をすることができます (図 3を参照)。

nvidia コンテナーに関する質問をするユーザーとの dockerbot のやり取りと、ビデオ内の特定のタイムスタンプへのリンクで応答する dockerbot のスクリーンショット。
図 3: ユーザーが NVIDIA コンテナーについて Dockerbot に質問し、ビデオ内の特定のタイムスタンプへのリンクを含む応答を提供するアプリケーションの例。

結論

この記事では、GenAIテクノロジーとDockerを組み合わせて、ビデオコンテンツから貴重な洞察を引き出すエキサイティングな可能性を探りました。 Whisper のような最先端の AI モデルと Pinecone のような効率的なデータベース ソリューションを統合することで、組織が生のビデオ データを実用的な知識に変換できるようになることを示しています。 

経験豊富な開発者でも、AI の世界を探求し始めたばかりでも、提供されているリソースとコードを使用すると、独自のビデオ理解プロジェクトに簡単に着手できます。 

さらに詳しく