🗣️

Gemma2 + AivisSpeech + Chainlit で CPU 環境で動作する音声チャットアプリを。

2025/01/10に公開

最近は LLM をローカル CPU 環境で動かせたり、高品質な合成音声ソフトを無料で公開してくれているので簡単なチャットアプリを作成してみました。

前提

  • ローカル CPU 環境でも動作する
  • 個人利用無料

利用技術

Gemma2

2024年10月3日に日本語版が公開されたパラメータ数 2B の軽量 LLM。
https://blog.google/intl/ja-jp/company-news/technology/gemma-2-2b/

AivisSpeech-Engine

2024年11月19日にリリースされた高品質な音声合成エンジンの AivisSpeech-Engine。Docker Image も提供されていて、ずんだもんなどでよく知られる VOICEVOXライクな API も利用できるため非常に便利。
https://aivis-project.com/

Chainlit

2024年1月に正式リリースされたチャット形式の UI フレームワーク。シンプルな利用であれば簡潔なコードでアプリケーションを作成できます。
https://docs.chainlit.io/get-started/overview

アプリケーション

アプリケーションのソースコードはこちらに公開しています。
https://github.com/kdingn/chat-gemma2-jpn

構成

アプリケーションは3つのコンテナで構成されています。

  • app-chainlit: ブラウザに表示するための Web アプリ
  • api-aivisspeech: 合成音声データを返却する API
  • api-gemma2: gemma-2-2b-jpn-itの推論結果を返却する API

デモ動画

※ 本記事では音声が流れないので音声出力付きで見たい場合はこちらをご参照ください。

感想

ローカル CPU 環境でも動作するチャットアプリが簡単に作成できました。

特に AivisSpeech が自然な合成音声を生成してくれるのでこれから色々なところで利用されるだろうなと感じました。

Chainlit のみでフロントを開発したためネットワーク面で nginx を利用せずにコンテナ間連携できたのもよかったです。

課題

  1. Gemma2 2B の日本語版は概ね適切な回答をしてくれるのですが、時々英語で回答が返ってきたりします。ここはプロンプト側で解決できる可能性もありますが tsuzumi など国産の軽量 LLM もあるのでそちらを利用したほうがよいかもしれません。
  2. Chainlit で UI を構築しましたが、少し凝ろうとすると Javascript を書いてフロント側で制御する必要があったりと苦戦しました。シンプルなアプリケーションであれば問題ないですが、複雑な要件がある場合は素直に Next.js で組むほうが良い場合もあると思います。

Discussion