Guia rapida de PersonaPlex: habla conversacional full-duplex con control de persona y voz

Una guia concisa sobre las capacidades, la configuracion y los prompts de PersonaPlex, incluyendo el arranque del servidor, la evaluacion offline y el control de rol/voz.

PersonaPlex es un modelo conversacional de voz a voz en tiempo real y full-duplex. Ofrece dos dimensiones principales de control:

  • prompts de texto para controlar el rol o la persona
  • condicionamiento de audio para controlar el estilo de voz

Esta construido sobre la arquitectura y los pesos de Moshi, con el objetivo de lograr interacciones habladas de baja latencia, mas naturales y con un comportamiento de persona consistente.

Para Que Sirve

Los casos de uso comunes incluyen:

  • asistentes de voz en tiempo real
  • interacciones de rol tipo atencion al cliente
  • demos conversacionales de baja latencia
  • experimentos de control de persona + voz

Requisitos Previos

Instala la biblioteca de desarrollo del codec de audio Opus:

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

# Fedora/RHEL
sudo dnf install opus-devel

Instalacion y Entorno

Instala desde el repositorio:

1
pip install moshi/.

Para GPU Blackwell, se puede usar un paso adicional:

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

Despues de aceptar la licencia del modelo PersonaPlex en Hugging Face, configura tu token:

1
export HF_TOKEN=<YOUR_HUGGINGFACE_TOKEN>

Lanzar el Servidor en Vivo

Arranque estandar (SSL temporal):

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

Si la memoria de la GPU es limitada, activa la descarga a CPU (accelerate requerido):

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

Usa localhost:8998 para ejecuciones locales, o el enlace de acceso impreso para entornos remotos.

Evaluacion Offline

El script offline consume un wav de entrada y genera un wav de salida con la misma duracion:

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"

Etiquetas de Voz Integradas

  • 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

Consejos Para Prompts

La cobertura de entrenamiento incluye principalmente:

  • rol de asistente
  • roles de atencion al cliente
  • conversaciones informales

Consejos practicos:

  • define primero la identidad del rol y luego agrega el contexto de la tarea
  • manten los prompts concisos para reducir la deriva de persona
  • reutiliza el mismo voice prompt para comparaciones estables

Resumen

PersonaPlex destaca no porque entregue una respuesta mas inteligente, sino porque mantiene un comportamiento de persona y voz mas consistente en interacciones de voz en tiempo real.

Para agentes de voz full-duplex, es una opcion practica que vale la pena probar y comparar.

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy