Reach us out
Reach out directly to our team*
- Email hi@kleva.co
- WhatsApp +1 704-816-9059
- Office Miami, Florida
Guía técnica para entrenar modelos de IA conversacional en español neutro para cobranza: datasets, fine-tuning, dialectos LATAM y evaluación.
May 1, 2026 11 min read
|Entrenar modelos de IA para cobranza en español presenta desafíos únicos: 21 países hispanohablantes con dialectos marcadamente diferentes, variaciones culturales en comunicación financiera, y necesidad de compliance regulatorio por región.
El concepto de "español neutro" busca un balance: suficientemente genérico para funcionar en múltiples países, pero lo suficientemente natural para no sonar robótico. Kleva ha resuelto este desafío entrenando modelos con 45 dialectos LATAM que se adaptan automáticamente según el país del deudor.
Un voice agent de cobranza requiere 5 modelos de IA trabajando coordinadamente:
Función: Convertir audio de deudor en texto.
Desafíos en español:
• Variación fonética: "s" final desaparece en Caribe ("¿cómo está?" → "¿cómo etá?")
• Velocidad de habla: Español dominicano 18% más rápido que español mexicano
• Ruido ambiental: Deudores en mercados, calles, transporte público
• Acentos regionales: "ll" en Argentina ("llamada" suena "shamada")
Modelos base disponibles:
• Whisper (OpenAI): Multilingüe, buen punto de partida, requiere fine-tuning
• Wav2Vec 2.0: Modelo de Facebook, código abierto, customizable
• Google Speech-to-Text: API comercial con soporte español, 20+ dialectos
Función: Entender intención y extraer entidades del texto.
Intenciones típicas en cobranza:
• intent_pagar_ahora: "Sí, voy a pagar", "Déjame hacerlo ahora"
• intent_pagar_despues: "La próxima semana", "Cuando cobre"
• intent_problema_flujo: "No he vendido", "Esta semana estuvo floja"
• intent_disputa: "Eso no es correcto", "Ya pagué eso"
• intent_solicitar_humano: "Quiero hablar con una persona", "Dame con un supervisor"
• intent_rechazar: "No puedo pagar", "No tengo dinero"
Entidades a extraer:
• fecha: "mañana", "el 15", "el viernes", "la próxima semana"
• monto: "200 pesos", "la mitad", "todo"
• motivo: "no he vendido", "me enfermé", "perdí el trabajo"
Modelos base:
• BERT multilingual: 104 idiomas, funciona para español
• BETO: BERT entrenado específicamente en español (UBA/UNAM)
• RoBERTa español: Modelo más robusto, mejores resultados
Función: Decidir qué decir siguiente según contexto.
Flujo típico:
1. Identificación: "Buenos días [Nombre], habla [Agente] de [Banco]..."
2. Motivo: "Te llamo porque tu cuota está vencida desde [Fecha]"
3. Pregunta abierta: "¿Qué pasó? ¿Pudiste hacer el pago?"
4. Escucha y clasifica intención
5. Respuesta contextual: Ofrece solución según intención detectada
6. Cierre: Confirma compromiso o escala a humano
Frameworks:
• Rasa: Código abierto, muy customizable
• Dialogflow (Google): Managed service, fácil de usar
• Desarrollos custom: State machines con GPT-4 o Claude
Función: Detectar frustración, enojo, confusión en tiempo real.
Por qué es crítico: Permite escalar a humano ANTES de que deudor se moleste y genere queja.
Emociones a detectar:
• Neutral/Positivo: Continuar con IA
• Confusión: Simplificar explicación, repetir opciones
• Frustración leve: Ofrecer hablar con humano
• Frustración alta/Enojo: Transferir inmediatamente a humano
Modelos:
• Pysentimiento: Modelo pre-entrenado en español de América Latina
• BERT sentiment: Fine-tuned en datasets de atención al cliente
• Análisis acústico: Tono de voz, velocidad, volumen (complementa texto)
Función: Convertir texto generado en audio natural.
Requisitos:
• Naturalidad: No sonar robótico (WaveNet, Tacotron 2)
• Prosodia: Entonación apropiada para preguntas vs afirmaciones
• Velocidad adaptable: Más lento para adultos mayores
• Voces por género: Masculina y femenina
Opciones comerciales:
• Google Cloud TTS: Voces WaveNet de alta calidad
• Amazon Polly: Neural voices, varios acentos español
• Microsoft Azure Speech: Voces neuronales personalizables
1. Transcripciones de llamadas reales (Gold Standard)
Volumen mínimo: 5,000-10,000 llamadas transcritas y etiquetadas
Qué etiquetar:
• Intención de cada turno de deudor
• Entidades mencionadas (fechas, montos)
• Sentimiento (neutral, positivo, frustrado, enojado)
• Resultado final (PTP, pago, rechazo, escalamiento)
Ejemplo de transcripción etiquetada:
{
"speaker": "customer",
"text": "Mira, es que esta semana no he vendido nada, ¿me puedes dar hasta el viernes?",
"intent": "intent_pagar_despues",
"entities": {
"fecha": "viernes",
"motivo": "no he vendido"
},
"sentiment": "neutral",
"next_action": "ofrecer_plan_pago"
}
Costo de etiquetado: $0.50-$2.00 por llamada (servicios como Scale AI, Labelbox)
2. Corpus de español neutro LATAM
Necesitas textos representativos de cómo hablan tus deudores:
• Redes sociales: Twitter/X de países objetivo (lenguaje informal)
• Transcripciones de servicio al cliente: Bancos, telecom
• Corpus académicos: CORPES XXI (Real Academia Española)
3. Variaciones dialectales por país
Necesitas ejemplos de cómo la MISMA intención se expresa diferente:
IntenciónMéxicoArgentinaColombia
Pagar después"Ahorita no puedo""Ahora no me da""De una no puedo"
Pagar ahora"Sale, lo hago""Dale, lo hago""Listo, lo hago"
Problema flujo"Ando corto de lana""Estoy re corto de guita""Ando mal de plata"
Recolección: Crowdsourcing en cada país objetivo (plataformas como Amazon MTurk, Toloka)
Si tienes dataset pequeño (
Back-translation:
1. Traduce español → inglés (Google Translate)
2. Traduce inglés → español
3. Resultado: Misma intención, palabras ligeramente diferentes
Parafraseo con LLM:
Prompt a GPT-4: "Genera 10 formas diferentes de decir 'no puedo pagar ahora' en español mexicano informal"
Output:
• "Ahorita no se puede"
• "En este momento no traigo"
• "Ando corto, no puedo"
• "No me alcanza ahorita"
• ...
Sinónimos y variaciones:
• "dinero" → "plata", "lana", "guita", "billete"
• "pagar" → "abonar", "cancelar", "saldar"
• "hoy" → "ahorita", "ya", "en este momento"
Modelo base: Whisper Large v3 (mejor para español según benchmarks)
Fine-tuning con Common Voice:
1. Descarga dataset Common Voice español (Mozilla, gratuito)
2. Filtra por países LATAM (México, Colombia, Argentina, etc.)
3. Añade tus grabaciones de cobranza (5,000+ horas idealmente)
4. Fine-tune con Hugging Face Transformers:
from transformers import WhisperForConditionalGeneration, Seq2SeqTrainer
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-large-v3")
# Configuración de entrenamiento
training_args = Seq2SeqTrainingArguments(
output_dir="./whisper-cobranza-latam",
per_device_train_batch_size=16,
learning_rate=1e-5,
num_train_epochs=3,
fp16=True, # Mixed precision para velocidad
)
trainer = Seq2SeqTrainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
trainer.train()
Evaluación: Meta WER (Word Error Rate)
Modelo base: BETO (BERT español) o RoBERTa-base-spanish
Arquitectura:
• Intent classification: Capa clasificadora multi-clase (15-20 intents)
• Entity extraction: NER (Named Entity Recognition) con BIO tagging
Código ejemplo (Hugging Face):
from transformers import AutoModelForSequenceClassification, Trainer
# Cargar BETO
model = AutoModelForSequenceClassification.from_pretrained(
"dccuchile/bert-base-spanish-wwm-cased",
num_labels=18 # Número de intents
)
# Dataset etiquetado
train_texts = [
"No puedo pagar ahorita",
"Dame hasta el viernes",
"Ya pagué eso",
...
]
train_labels = [7, 3, 12, ...] # IDs de intents
# Fine-tuning
trainer = Trainer(
model=model,
train_dataset=encoded_dataset,
eval_dataset=eval_dataset,
)
trainer.train()
Evaluación: Meta F1-score >90% en intents principales
Dataset recomendado: Combinar:
• TASS (Twitter): 68,000 tweets en español etiquetados por sentimiento
• Tu dataset de llamadas: Etiqueta frustración/neutral/positivo
• Datasets de reviews: Amazon, TripAdvisor en español
Fine-tune Pysentimiento:
from pysentimiento import create_analyzer
from pysentimiento.preprocessing import preprocess_tweet
# Pysentimiento viene pre-entrenado, pero puedes fine-tunear
analyzer = create_analyzer(task="sentiment", lang="es")
# Para cobranza, añade categoría "frustrado"
# (Requiere re-entrenar con tus datos etiquetados)
Evaluación: Accuracy >85% en detectar frustración (crítico para escalamiento)
Opción 1: Rule-based con GPT-4 (Híbrido recomendado)
Usa reglas para flujo principal + GPT-4 para respuestas naturales:
# Pseudo-código
def handle_intent_pagar_despues(entities, context):
fecha = entities.get('fecha')
if fecha:
# GPT-4 genera respuesta natural
prompt = f"""Eres un agente de cobranza empático.
El cliente dijo que pagará el {fecha}.
Confirma la fecha y pregunta el monto de forma amable.
Usa español neutro latinoamericano."""
response = gpt4_call(prompt)
return response
else:
# Pide fecha específica
return "¿Qué día específicamente podrías pagar?"
Ventaja: Flexibilidad de GPT-4 + control de flujo con reglas
Opción 2: Rasa (Full control)
# domain.yml
intents:
- intent_pagar_despues
- intent_pagar_ahora
- intent_disputa
responses:
utter_confirmar_fecha:
- text: "Perfecto, entonces confirmamos pago el {fecha}. ¿Es correcto?"
utter_pedir_fecha:
- text: "¿Qué día podrías hacer el pago?"
# stories.yml
stories:
- story: cliente promete pagar
steps:
- intent: intent_pagar_despues
entities:
- fecha: "viernes"
- action: utter_confirmar_fecha
- intent: affirm
- action: action_registrar_ptp
Vocabulario universal:
• Usar: dinero, pagar, cuota, banco, préstamo
• Evitar: Regionalismos extremos ("guita", "lana", "vaina")
Conjugación estándar:
• Usar: Tú ("¿puedes pagar?") o Usted según formalidad del país
• Evitar: Voseo argentino ("¿podés pagar?") en modelo neutro
Expresiones transversales:
• Usar: "¿Cómo estás?", "Entiendo tu situación", "¿Qué día te viene mejor?"
• Evitar: "¿Qué onda?", "¿Qué hubo?", "Dime a ver"
El modelo neutro es la base, pero añade capa de adaptación:
Detección automática de país:
def get_dialect(phone_number):
country_code = phone_number[:3]
dialect_map = {
"+52": "mx", # México
"+54": "ar", # Argentina
"+57": "co", # Colombia
"+56": "cl", # Chile
...
}
return dialect_map.get(country_code, "neutral")
def adapt_response(response, dialect):
adaptations = {
"mx": {"dinero": "lana", "¿puedes?": "¿puedes?"},
"ar": {"dinero": "guita", "¿puedes?": "¿podés?"},
"co": {"dinero": "plata", "ok": "listo"},
}
for original, local in adaptations.get(dialect, {}).items():
response = response.replace(original, local)
return response
Resultado: Modelo entiende TODAS las variantes, pero responde en dialecto apropiado.
STT (Speech-to-Text):
• WER (Word Error Rate):
• Evaluación por dialecto: Medir WER separadamente para mexicano, argentino, colombiano, etc.
NLU (Intent Classification):
• F1-Score: >90% en intents principales (pagar, rechazar, disputa)
• Confusion matrix: Identificar qué intents se confunden
Entity Extraction:
• Precisión de fechas: >95% (crítico para promesas de pago)
• Precisión de montos: >98% (errores causan disputas)
Sentiment Analysis:
• Recall de frustración: >90% (no queremos perder casos frustrados)
• Precision: >80% (evitar falsos positivos que escalan innecesariamente)
Tasa de contacto efectivo: >65% (comparado con 30-40% humanos)
FCR (First Contact Resolution): >85% (resuelve en primera llamada)
Tasa de escalamiento: 5-10% (solo casos que realmente lo necesitan)
Recovery rate: >70% en mora temprana
NPS de deudores: >40 (experiencia positiva vs presión)
A/B Testing:
• Versión A: Script actual
• Versión B: Script optimizado
• Medir recovery rate, NPS, quejas en muestras de 1,000 casos c/u
Análisis de conversaciones fallidas:
Cada semana, revisar 50 conversaciones donde:
• Cliente colgó abruptamente
• Escaló a humano frustrado
• No se entendió la intención
• Se generó queja
Identificar patterns y re-entrenar modelo.
Fine-tuning de modelos grandes:
• GPU: NVIDIA A100 (40GB VRAM) o V100 (32GB)
• Alternativa cloud: Google Colab Pro ($10/mes), AWS SageMaker, Google Vertex AI
• Tiempo: Fine-tuning de BERT toma 2-8 horas según dataset
Para producción:
• Inferencia: GPU no necesaria si usas CPU optimizado (ONNX Runtime)
• Latencia objetivo:
Pipeline automatizado:
1. Recolección: Nuevas llamadas se transcriben automáticamente
2. Etiquetado: Humanos etiquetan muestra (10% de nuevas llamadas)
3. Re-entrenamiento: Mensual con datos nuevos
4. Evaluación: Validar que métricas mejoren (no empeoren)
5. Deploy: Gradual (10% → 50% → 100%) monitoreando performance
Herramientas:
• Experiment tracking: MLflow, Weights & Biases
• Model registry: Hugging Face Hub (privado), AWS SageMaker Model Registry
• Monitoring: Grafana + Prometheus para latencia y accuracy en producción
Kleva ha entrenado modelos en 45 dialectos LATAM con enfoque único:
Dataset propietario: 100,000+ llamadas reales de cobranza transcritas y etiquetadas de 7 países.
Modelo base neutro + adaptadores: Un modelo NLU principal entrenado en español neutro + adaptadores ligeros por país que ajustan vocabulario/sintaxis.
Continuous learning: Cada llamada retroalimenta el modelo. Si voice agent escala a humano, esa conversación se analiza para mejorar.
Compliance integrado: El modelo está entrenado para NUNCA generar frases prohibidas (amenazas, lenguaje discriminatorio) por país.
Resultado:
• 94% FCR (First Contact Resolution)
• 73% recovery rate en mora temprana
• 0 violaciones regulatorias en 7 países
• por cada 1,000 contactos
DimensiónBuild Your OwnUsar Kleva (Pre-Entrenado)
Time to market6-12 meses15-30 días
Costo inicial$100k-$500k (equipo, infraestructura)$0 (pago por uso)
Dataset necesario10,000+ llamadas etiquetadas0 (ya entrenado en 100k+)
Expertise requeridoML engineers, lingüistas, DevOpsSolo configuración de casos de uso
MantenimientoEquipo permanenteIncluido (actualizaciones automáticas)
Dialectos LATAMEntrenar cada uno separadamente45 dialectos incluidos
ComplianceProgramar reglas por paísPre-configurado 7 países
Recomendación:
• Build your own si: Tienes equipo ML in-house, casos de uso MUY específicos no cubiertos por soluciones comerciales, presupuesto $500k+
• Usa plataforma si: Quieres resultados rápidos, enfoque en negocio no en ML, presupuesto limitado
Entrenar modelos de IA para cobranza en español neutro es técnicamente complejo: requiere datasets masivos, expertise en NLP, infraestructura GPU, y ciclo continuo de mejora.
Sin embargo, para la mayoría de instituciones financieras, no necesitas construir desde cero. Plataformas como Kleva han invertido años y millones en entrenar modelos robustos que funcionan out-of-the-box.
La pregunta no es si puedes entrenar tu propio modelo. Es: ¿tiene sentido reinventar la rueda cuando soluciones probadas ya existen?
No bots, no endless forms. Fill in your details and someone from our team will reach out.
Reach out directly to our team*
No bots, no endless forms.