PersonaPlex 快速上手:可控音色與角色的全雙工語音對話模型

精簡整理 PersonaPlex 的核心能力、部署流程與提示詞方法,涵蓋服務啟動、離線評估與角色控制。

PersonaPlex 是一個即時、全雙工(full-duplex)的語音到語音對話模型,提供兩種關鍵可控能力:

  • 以文字提示詞控制角色與人設
  • 以音訊條件控制音色與語音風格

它基於 Moshi 架構與權重,目標是在低延遲下輸出更自然、且 persona 一致的語音互動。

適用場景

PersonaPlex 適合:

  • 即時語音助理
  • 客服角色對話
  • 低延遲語音互動展示
  • 人設 + 音色控制實驗

先備條件

先安裝 Opus 音訊編碼開發庫:

1
2
3
4
5
# Ubuntu/Debian
sudo apt install libopus-dev

# Fedora/RHEL
sudo dnf install opus-devel

安裝與環境設定

安裝倉庫:

1
pip install moshi/.

若使用 Blackwell GPU,可額外執行:

1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130

在 Hugging Face 接受 PersonaPlex 模型授權後,設定 token:

1
export HF_TOKEN=<YOUR_HUGGINGFACE_TOKEN>

啟動即時服務

標準啟動(含暫時 SSL):

1
SSL_DIR=$(mktemp -d); python -m moshi.server --ssl "$SSL_DIR"

若顯存不足,可啟用 CPU offload(需安裝 accelerate):

1
2
pip install accelerate
SSL_DIR=$(mktemp -d); python -m moshi.server --ssl "$SSL_DIR" --cpu-offload

本地通常從 localhost:8998 存取;遠端部署請使用程式輸出的訪問連結。

離線評估

離線腳本可輸入 wav,並輸出同長度 wav:

1
2
3
4
5
6
7
HF_TOKEN=<TOKEN> \
python -m moshi.offline \
  --voice-prompt "NATF2.pt" \
  --input-wav "assets/test/input_assistant.wav" \
  --seed 42424242 \
  --output-wav "output.wav" \
  --output-text "output.json"
1
2
3
4
5
6
7
8
HF_TOKEN=<TOKEN> \
python -m moshi.offline \
  --voice-prompt "NATM1.pt" \
  --text-prompt "$(cat assets/test/prompt_service.txt)" \
  --input-wav "assets/test/input_service.wav" \
  --seed 42424242 \
  --output-wav "output.wav" \
  --output-text "output.json"

預設音色標籤

  • Natural(female): NATF0, NATF1, NATF2, NATF3
  • Natural(male): NATM0, NATM1, NATM2, NATM3
  • Variety(female): VARF0, VARF1, VARF2, VARF3, VARF4
  • Variety(male): VARM0, VARM1, VARM2, VARM3, VARM4

提示詞建議

訓練覆蓋主要包含:

  • Assistant Role
  • Customer Service Roles
  • Casual Conversations

實務上建議:

  • 先固定角色資訊,再補充任務上下文
  • 提示詞保持精簡,降低角色漂移
  • 固定同一 voice prompt 進行可重現比較

總結

PersonaPlex 的價值不在單次回答更聰明,而在即時語音互動中更穩定地維持角色與音色一致性。

若你正在做全雙工語音 Agent,這個方案值得盡快實測與對比。

记录并分享
使用 Hugo 建立
主題 StackJimmy 設計