Skip to main content

ローカルLLM、STT、TTSを使用した音声対話型チャットボットの構築

このプロジェクトは、完全に音声対話型のAIアシスタントの夢を実現します — ローカルハードウェア上で完全に動作し、クラウドサービスに依存しません。
Speech-to-Text(STT)Text-to-Speech(TTS)、およびOllamaを使用した**ローカル大規模言語モデル(LLM)**を組み合わせることで、人間と機械の間の自然でプライベートなリアルタイム会話を可能にします。

全体のセットアップはDockerコンテナ内で動作し、NVIDIA Jetsonデバイスエッジコンピュータ、またはGPUアクセラレーション付きの任意のLinuxベースシステムにデプロイできます。


プロジェクト概要

このプロジェクトの目標は、以下の機能を持つ音声駆動チャットボットを作成することです:

  • リアルタイムであなたの声を聞く
  • ローカル**ASR(自動音声認識)**を使用してあなたの音声を理解する
  • ローカルLLMを使用してインテリジェントな応答を生成する
  • **TTS(Text-to-Speech)**を使用してそれらの応答を自然に話す

すべてのコンポーネントは自己完結型でローカルで動作し、データを完全にコントロールできます — クラウド依存なし、レイテンシなし、プライバシーの懸念なし。


システムコンポーネント

1. Speech-to-Text(STT)モジュール

話された入力をリアルタイムでテキストに変換します。
主な機能:

  • NVIDIA Riva ASRを使用した高速で正確な転写
  • 複数言語のサポート
  • エッジデバイス向けに最適化

2. Text-to-Speech(TTS)モジュール

チャットボットの応答を自然な音声出力に変換します。
ハイライト:

  • 多言語、表現豊かで現実的な音声合成
  • NVIDIA Riva TTSによって駆動
  • 低レイテンシ — インタラクティブな会話に最適

3. ローカルLLM(Ollama)

チャットボットの中核はOllamaで、現代のLLMを効率的に実行するローカル推論エンジンです。
機能:

  • オフライン動作(インターネット不要)
  • Jetsonデバイスでもリアルタイム応答
  • スムーズで一貫した対話のためのコンテキスト保持
  • Llama、Phi、Gemma、Mistralなど様々なモデルをサポート

4. ユーザーインタラクション層

シンプルで直感的なインターフェースにより、ユーザーは以下が可能です:

  • ボタンやコマンドで音声インタラクションを開始または停止
  • ライブ転写とチャットボットの応答を確認
  • 音声から音声へのスムーズで低レイテンシなコミュニケーションを楽しむ

Ollamaのローカルセットアップ

まず、Jetson Containersをインストールして、Docker内でサービスを簡単に管理・デプロイできるようにします。

# Install Jetson Container tools
git clone https://github.com/dusty-nv/jetson-containers
bash jetson-containers/install.sh

インストール後、Ollamaコンテナをプルして実行します:

jetson-containers run --name ollama $(autotag ollama)
ollama run llama3.2:1b

💡 ヒント: 設定をテストするために小さなモデル(llama3.2:1bなど)から始めて、その後スケールアップしてください。

ollama.com/libraryで利用可能なモデル:

モデルパラメータサイズコマンド
Llama 3.23B2.0 GBollama run llama3.2
Llama 3.21B1.3 GBollama run llama3.2:1b
Llama 3.2 Vision11B7.9 GBollama run llama3.2-vision
Phi 3 Mini3.8B2.3 GBollama run phi3
Gemma 29B5.5 GBollama run gemma2
Mistral7B4.1 GBollama run mistral

NVIDIA Jetson AGXを使用している場合、中型から大型のモデルを快適に実行できます。小型のJetsonの場合は、軽量モデル(1B–3B)を使用してください。

Ollamaをターミナルで直接実行するか、提供されているPythonスクリプトollama_run.pyを使用して実行します。

python3 ollama_run.py

例:

ターミナル使用

Python統合


NVIDIA Riva:STTとTTS

リアルな音声インタラクションを可能にするために、NVIDIA Rivaを使用します。これは以下を提供するGPUアクセラレーションツールキットです:

  • 自動音声認識(ASR)
  • Text-to-Speech(TTS)
  • ニューラル機械翻訳(NMT)(オプション)

クラウドからJetson シリーズなどの組み込みデバイスまで、どこでもデプロイできます。

ステップ1:NGC APIキーの取得

  1. NVIDIA NGCにログインします。
  2. APIキーを作成してローカルに保存します — Rivaリソースにアクセスするために必要です。

ステップ2:Jetson上でNGCを設定

cd ~ && mkdir ngc_setup && cd ngc_setup
wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions/3.36.0/files/ngccli_arm64.zip
unzip ngccli_arm64.zip
chmod u+x ngc-cli/ngc
echo "export PATH=\"$PATH:$(pwd)/ngc-cli\"" >> ~/.bash_profile && source ~/.bash_profile
ngc config set

プロンプトが表示されたらAPIキーを使用してください。

ステップ3:Jetson上でRivaをインストール

JetPack 6.0を実行していることを確認してください(またはサポートマトリックスで互換性を確認してください)。

cd ~ && mkdir riva_setup && cd riva_setup
ngc registry resource download-version nvidia/riva/riva_quickstart_arm64:2.16.0
cd riva_quickstart_v2.13.1

config.shで、リソースを節約するために未使用のサービスを無効にします:

service_enabled_nlp=false
service_enabled_nmt=false

次に、/etc/docker/daemon.jsonを編集してDockerがNVIDIAランタイムを使用するように設定します:

{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}

Dockerを再起動します:

sudo systemctl restart docker

最後に、Rivaを初期化して開始します:

sudo bash riva_init.sh
sudo bash riva_start.sh

チャットボットの実行

すべての準備が整ったら、メインアプリケーションを実行します:

git clone https://github.com/kouroshkarimi/local_chatbot_jetson.git
cd local_chatbot_jetson
python3 app.py --list-input-devices
python3 app.py --list-output-devices
python3 app.py --input-device <your_input_id> --output-device <your_output_id>

これでアシスタントに話しかけることができ、アシスタントは聞いて、考えて、話し返すでしょう — すべてローカルで、Jetsonによって駆動されます。


主な利点

  • 🔒 100%プライベート – データがデバイスから出ることはありません
  • ⚡ リアルタイム応答 – 低レイテンシ向けに最適化
  • 🌐 多言語 – 複数の言語とアクセントをサポート
  • 🧩 モジュラー – 各コンポーネントを置き換えまたは拡張可能
  • 🖥️ エッジフレンドリー – JetsonまたはLinuxシステムにデプロイ可能

今後の改善

  • マルチモーダルインタラクションのためのビジョンモジュールとの統合
  • TTSでのカスタム音声クローニングのサポート
  • より自然な対話のためのセッション間でのメモリ永続化
  • Webまたはモバイルインターフェース

🎉 会話を楽しんでください!

おめでとうございます — あなたは自分自身の音声対応、プライバシー第一のAIアシスタントを構築しました。
さあ、リラックスして、ロボットと話し、人間とAIのインタラクションの未来を探索することを楽しんでください。🤖💬

"ロボットと良い会話をしてください :)"


参考文献

  1. LlamaIndexを使用したJetsonベースのローカルRAG
  2. ローカル音声チャットボット:reComputerでRivaとLlama2をデプロイ
  3. ChatTTS
  4. Speech to Text(STT)とText to Speech(TTS)
  5. Ollama

✨ コントリビュータープロジェクト

技術サポートと製品ディスカッション

私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験ができるだけスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。

Loading Comments...