Reconocimiento de voz con identificación de hablantes (WhisperX)#
Este procedimiento requiere acceso al directorio de instalacion, a la configuracion del servidor y a Docker. Se deben guardar los valores anteriores de Whisper para la restauracion. En Chat tiene prioridad el Modelo de transcripcion asignado a la Cuenta. Si se usa su Instancia activa, debe apuntar al servicio Whisper local y solicitar large-v2. Cambiar .env no redirige automaticamente una Instancia externa al servicio local.
Esta guía explica cómo habilitar en Sherpa AI Server la transcripción local de audio y vídeo con separación de hablantes (diarización). El procesamiento se realiza íntegramente en su servidor, sin servicios externos ni acceso a Internet durante la ejecución.
Los fragmentos de voz reconocidos con hablante identificado reciben una etiqueta de hablante (speaker_1, speaker_2, etc.) y marcas de tiempo. Las etiquetas se numeran desde 1 según el orden de aparición de los hablantes en la grabación. Se incluyen en el resultado de la API y en el contexto del LLM como líneas del tipo [0:00:05] speaker_1: Привет. La interfaz del Chat no tiene una pantalla independiente de hablantes.
Requisitos#
Antes de habilitar el método, compruebe que:
- Sherpa AI Server está instalado y el servicio
aiserver-whisperse ejecuta con el perfilwhisperofull; - Whisper utiliza una GPU NVIDIA (consulte Cambiar Whisper de CPU a GPU); en CPU, este método funciona muy lentamente;
- dispone del archivo de modelos
model-whisperx-large-v2.tar.gz(aproximadamente 3 GB) y de suficiente espacio en disco; - la versión de la imagen
aiserver-whisperadmite el métodowhisperx.
El archivo large-v2.pt del método estándar base no es compatible con WhisperX: WhisperX utiliza otro formato de modelos. No es necesario eliminar los archivos de modelos existentes.
Paso 1. Extraiga los modelos#
Desde el directorio de instalación, ejecute:
tar -xzvf model-whisperx-large-v2.tar.gz -C ./whisper/models
ls ./whisper/models/whisperx
El directorio ./whisper/models/whisperx debe aparecer junto a los archivos de modelos existentes.
Paso 2. Habilite el método en .env#
Es necesario abrir .env y establezca estos valores en el bloque # !whisper:
WHISPER_METHOD=whisperx
WHISPER_MODEL=large-v2
WHISPER_DEFAULT_MODEL=large-v2
WHISPERX_DIARIZE=true
Parámetros adicionales:
| Parámetro | Propósito |
|---|---|
WHISPERX_DIARIZE |
true — separar hablantes (valor predeterminado); false — solo transcripción con marcas de tiempo |
WHISPERX_NUM_SPEAKERS |
Número exacto de hablantes, si se conoce. Déjelo vacío para detectarlo automáticamente |
WHISPERX_BATCH_SIZE |
Reduzca el valor si aparece el error CUDA out of memory |
Paso 3. Aplicar la configuracion del servidor y de Whisper#
Se deben recrear los contenedores del servidor y de Whisper para aplicar los nuevos valores de .env, incluido WHISPER_DEFAULT_MODEL en el servidor. El comando usa las imagenes locales sin compilarlas ni descargarlas. El reinicio del servidor debe programarse para un momento adecuado:
docker compose --profile whisper up -d --no-build --pull never --force-recreate aiserver aiserver-whisper
Paso 4. Es necesario comprobar el funcionamiento#
curl -sS http://127.0.0.1:3005/health
La respuesta debe contener "method":"whisperx" y "diarization_enabled":true.
Esta respuesta confirma la configuracion del servicio. No demuestra que se hayan cargado los pesos ni que la transcripcion haya finalizado: los pesos se cargan con la primera solicitud. Se debe comprobar el resultado procesando audio por la ruta local seleccionada.
Después, adjunte en el Chat un audio o vídeo con una conversación entre dos personas y envíe un mensaje. El texto de la transcripción enviado al LLM incluirá las etiquetas speaker_1 y speaker_2 con marcas de tiempo.
Se puede enviar una grabación breve directamente a la API local de Whisper para comprobar el resultado. La variable del terminal WHISPER_API_KEY debe contener una clave válida de este servicio si está activada la comprobación de claves. Si el servicio no tiene una clave configurada, el encabezado Authorization del ejemplo no es necesario.
curl -fsS http://127.0.0.1:3005/v1/audio/transcriptions \
-H "Authorization: Bearer $WHISPER_API_KEY" \
-F "file=@./meeting.wav" \
-F "model=large-v2" \
-F "response_format=verbose_json"
Se debe comprobar la matriz segments de la respuesta: text reconocido, marcas de tiempo start y end, y speaker en los segmentos cuyo hablante se haya identificado. La ausencia de speaker no significa que se haya identificado al autor del segmento. Si falla la solicitud, se deben revisar los pesos, la disponibilidad de GPU y el mensaje del servicio. Un /health correcto no confirma por sí solo este resultado.
Limitaciones#
- El procesamiento tarda más que la transcripción estándar. Para grabaciones largas, compruebe los tiempos de espera de las solicitudes.
- Si las voces se superponen mucho, puede haber errores de identificación de hablantes.
- El método no determina nombres reales: solo asigna etiquetas
speaker_N. - Este método no utiliza los parámetros
promptytemperature.
Reversión#
Para restaurar la configuracion, se deben recuperar los valores anteriores de Whisper guardados en .env y repetir el paso 3 para ambos contenedores. Deben estar disponibles los pesos del Modelo anterior.