M2 Macでは歯が立たなかった!NVIDIAの音声対話AI「PersonaPlex」をGoogle Colab(A100)+ngrokで動かす

目次

GPUメーカーのNVIDIAが、音声対話AI「PersonaPlex」を研究プロジェクトとしてオープンソース公開しています。「どうせ重いんでしょ?」と思いながらまずはローカル(Apple M2)で試してみたところ……あっさり撃沈。結局 Google Colab の A100 GPU で動かすことになりました。

また、公開されている手順では Cloudflare Tunnel を使ってブラウザからアクセスする方法が紹介されていますが、筆者の環境ではトンネルの確立に失敗したため、代替手段として ngrok を採用しました。本記事ではそのあたりも含めてまとめています。

※ 参考にした記事(Zenn: fmbro0203氏による記事)は2026年1月21日公開。記事化が少し遅れましたが、実際に動かした記録として残しておきます。


PersonaPlex とは?

従来の音声対話AIは「音声認識(ASR) → テキスト生成(LLM) → 音声合成(TTS)」というバケツリレー方式でした。各ステップをまたぐたびに遅延が発生し、会話が不自然になりがちです。

PersonaPlexはKyutai製の「Moshi」アーキテクチャをベースに、NVIDIAが独自拡張を加えた音声対話モデルです。主な特徴は以下の2点です。

  • フルデュプレックス(Full Duplex)対話:ユーザーとAIの音声ストリームを「Dual-stream Transformer」で並列処理。話が終わるのを待たずにリアルタイムで返答でき、割り込みにも自然に対応します。
  • ハイブリッド・プロンプティング:数秒の音声サンプルで声質を再現する「音声プロンプト」と、「あなたは親切な受付係です」のように役割を指示する「テキストプロンプト」を組み合わせて、AIのペルソナを自由に設定できます。

公式サイト:https://research.nvidia.com/labs/adlr/personaplex/


ローカル(Apple M2)では動かなかった話

まず手元の MacBook で試してみました。スペックは以下の通りです。

項目内容
チップセットApple M2
種類GPU(内蔵)
GPUコア数10コア
製造元Apple(0x106b)
Metal対応Metal 4

結果は「動くは動くが、遅すぎて会話にならない」でした。PersonaPlex(内部的にはMoshiベースの7Bモデル)はリアルタイム音声処理を行うため、推論速度が会話のテンポに直結します。NVIDIA製のモデルだけに、CUDA対応GPUでの動作が前提設計になっており、Apple シリコンの統合GPU(Metal)では処理が追いつきません。

NVIDIAがこのモデルを公開している意図を考えると、「自社GPUの性能をアピールする」という側面も十分あるでしょう。A100やH100のような高性能GPUがあってこそ真価を発揮するモデルです。


事前準備:Hugging Face でのモデル利用申請

PersonaPlexのモデル(nvidia/personaplex-7b-v1)はHugging Faceで公開されていますが、利用規約への同意(Gate認証)が必須です。以下の手順を先に済ませておいてください。

  1. https://huggingface.co/nvidia/personaplex-7b-v1 にアクセス
  2. Hugging Faceアカウントでログイン
  3. モデルページの利用規約を確認し「Agree(同意する)」をクリック
  4. アクセストークン(hf_xxx...)を発行・メモしておく

この手順を省略すると、Colabでモデルをダウンロードする際にエラーになります。


Google Colab での実装手順

ランタイムは必ず A100 GPU(有料のColab Pro以上)を選択してください。T4 GPUではメモリ不足で動作しないことが確認されています。

Step 1:リポジトリのクローン

!git clone https://github.com/NVIDIA/personaplex.git

何をしているか:GitHubに公開されているNVIDIA公式のPersonaPlexリポジトリをColab環境にダウンロードします。! を先頭につけることで、Colabのノートブックからシェルコマンドを実行できます。


Step 2:作業ディレクトリの移動と確認

%cd personaplex/
import os
path = os.getcwd()

何をしているか:クローンした personaplex ディレクトリに移動します。%cd はColabのマジックコマンドで、セルをまたいでカレントディレクトリを変更できます(! と違い、次のセルにも変更が引き継がれます)。os.getcwd() で現在のパスを変数に保存しています。


Step 3:依存ライブラリのインストール

!pip install moshi/.

何をしているか:PersonaPlexのベースとなっている moshi ライブラリをローカルパスからインストールします。moshi/. はリポジトリ内の moshi ディレクトリを指しており、そこにある setup.pypyproject.toml を使ってパッケージをインストールします。音声エンコーダー(Mimiコーデック)やモデルの推論コードなど、動作に必要なすべての依存関係がここで入ります。


Step 4:Hugging Face へのログイン

from huggingface_hub import login

# ここにあなたのHugging Faceトークンを入力
hf_token = "hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # ← 自分のトークンに置き換える
login(token=hf_token)

何をしているか:事前に取得したHugging Faceのアクセストークンを使って認証します。このステップにより、Gate認証済みのモデル(nvidia/personaplex-7b-v1)を後続のサーバー起動時に自動ダウンロードできるようになります。トークンは他人に見せないよう注意してください。


Step 5:ngrokのインストール

# ngrokをインストールします。
!pip install pyngrok

何をしているか:ngrokのPythonラッパーライブラリ pyngrok をインストールします。ngrokはローカル(この場合はColab)で動いているサーバーを、インターネット経由で一時的にアクセスできる公開URLに変換するトンネリングサービスです。

今回の手順では本来 Cloudflare Tunnel が使われていますが、筆者の環境ではトンネルの確立に繰り返し失敗したため、より安定して動作した ngrok を代替として採用しました。

ngrok利用の事前準備
ngrokの使用には認証トークンが必要です。ngrok公式サイトでアカウントを作成し、Dashboard の「Your Authtoken」からトークンを取得してください。


Step 6:ngrokトンネルの確立

from pyngrok import ngrok

# ここに取得したngrok認証トークンを入力してください
ngrok_auth_token = "YOUR_NGROK_AUTH_TOKEN"  # ← 自分のトークンに置き換える

# 認証トークンを設定します
ngrok.set_auth_token(ngrok_auth_token)

# 既存のngrokトンネルを全て終了します(もしあれば)
ngrok.kill()

# PersonaPlexサーバーがHTTPで動作するように変更したため、ngrokもHTTPプロトコルでトンネルを確立します。
public_url = ngrok.connect(8998, proto="http")
print(f"ngrokトンネルのURL: {public_url}")

何をしているか:Colabサーバーの ポート8998(PersonaPlexサーバーが使用するポート)に対してngrokのHTTPトンネルを張ります。実行すると https://xxxxxxxx.ngrok-free.app のような形式の公開URLが表示されます。このURLにブラウザからアクセスすると、PersonaPlexの対話インターフェースが開きます。

ngrok.kill() で既存トンネルを一掃してから新規接続することで、複数セッションの混在を防いでいます。

⚠️ このngrokトンネルは、次のステップでPersonaPlexサーバーが起動中の場合にのみ機能します。必ずサーバーが起動していることを確認してからURLにアクセスしてください。


Step 7:PersonaPlexサーバーの起動

# PersonaPlexサーバーをSSLなしで起動
# **注意: 現在実行中の場合は、一度停止してからこのセルを実行してください**
!python -m moshi.server --port 8998

何をしているか:Moshiサーバーをポート8998で起動します。このコマンドを実行すると、内部でHugging Faceからモデル(約14GB)のダウンロードと読み込みが行われます。初回は数分かかりますが、A100であれば読み込みは比較的速く完了します。

サーバーが起動したら、Step 6で表示された ngrokのURL にブラウザからアクセスしてください。

オリジナルの手順では --ssl オプションをつけてHTTPS経由で起動しますが、ngrokがHTTPS変換を担うため、ここでは SSLなし(HTTP) で起動しています。


実際に使ってみた感想



・良かった点

会話のスムーズさは本物です。 話し終わるか終わらないかのタイミングで返答が来ます。GPUメーカーがこのモデルで最もアピールしたい点は「推論速度」だと思いますが、その点は期待通りでした。自分が話している最中にAIが割り込んで話し始めることもあり、「AIと電話で話している」ような自然なテンポを体験できます。

・気になった点

会話の後半になると、同じ言い回しを繰り返すことが増え、徐々に「会話相手が壊れていく」ような感覚がありました。長時間の連続会話でコンテキストの管理が追いつかなくなっているのかもしれません。あくまで研究プロジェクトの公開デモという位置づけですので、完成度よりも技術的な可能性の提示に重きを置いているのでしょう。


一部録音したファイルを置いておきますね

まとめ

項目内容
モデルnvidia/personaplex-7b-v1(Moshiベース、7Bパラメータ)
推奨実行環境Google Colab Pro(A100 GPU)
ローカル(Apple M2)動作するが遅すぎて実用不可
Cloudflare Tunnel環境によっては失敗する→ngrokで代替可能
会話のリアルタイム性◎ 非常にスムーズ
長時間会話の安定性△ 後半に繰り返しが増える傾向あり

PersonaPlexは、音声対話AIの「遅延問題」に対してひとつの明確な回答を示しています。A100クラスのGPUがあれば、今すぐ試せる状態で公開されているのは素直に面白いと思います。興味のある方はぜひHugging Faceで利用申請をして、次世代の対話AIに触れてみてください。

▶ 参考:NVIDIA PersonaPlex GitHub


この記事を書いた人
s.kakeida
s.kakeida
Scroll to Top