¿Cómo sabe una app quién habla? La atribución automática de personajes, por dentro
Para dar a cada personaje de un libro su propia voz, primero hay que responder una pregunta que parece trivial y no lo es: ¿quién dice esta línea? Un lector humano lo resuelve sin darse cuenta. El software tiene que aprenderlo, y el aprendizaje es la parte interesante. Ese aprendizaje está detrás del reparto automático completo, así que vale la pena entender cómo funciona.
Los casos sencillos, y por qué engañan
Hay diálogos que dicen exactamente quién habla.
«Ha estado en Afganistán, deduzco», dijo Holmes.
La etiqueta está ahí mismo: un verbo de habla y un nombre, junto a la cita. Un programa sencillo puede encontrar las comillas, buscar un «dijo» cercano con un nombre propio y acertar la mayor parte de las veces. Si todas las líneas fueran así, sería un problema trivial.
No lo son.
Dónde se complica todo
La prosa real está llena de diálogo que oculta a quien habla, y cada forma de ocultarlo es un problema distinto.
Líneas sin atribuir. Una vez que la conversación está en marcha, los autores eliminan las etiquetas porque se espera que el lector lleve la cuenta.
«Ha estado en Afganistán.» «¿Cómo diablos lo supo?» «No importa. La pregunta es de la mayor importancia.»
Tres líneas, ningún nombre. Para asignarlas hay que seguir que hablan dos personas y que se van alternando, y mantener ese hilo hasta que algo lo rompa. Un error en la cuenta y todas las líneas siguientes van al personaje equivocado.
Etiquetas pronominales. «Él dijo» o «ella preguntó» atribuyen la línea a alguien que la frase no nombra. Hay que saber quién es «él» en ese momento, y para eso hay que rastrear quién se mencionó por última vez y quién siquiera está en la escena.
Acciones en lugar de etiquetas. Muchas veces no hay ningún verbo de habla; solo una acción junto a la cita.
Holmes se recostó y unió las yemas de los dedos. «Este es un problema de tres pipas.»
Nadie «dijo» nada. Una persona deduce que Holmes habla porque es él quien actúa. El software tiene que dar el mismo salto.
Identificar al reparto. Antes de asignar una línea a Holmes, hay que saber que Holmes existe y que «Sherlock», «Mr. Holmes», «Holmes» y, en la narración de su amigo, «él» son el mismo hombre. Construir esa lista de personajes y sus alias a partir del texto, sin una hoja de reparto, es un paso aparte.
Y luego está lo ambiguo. La narración en primera persona, cartas citadas dentro de la historia, una escena de multitud donde cinco personas hablan a la vez, una línea que el autor dejó intencionalmente sin resolver. A veces la respuesta honesta es que incluso un lector humano cuidadoso se detendría.
Cómo han evolucionado los enfoques
Los primeros intentos se basaban en reglas: encontrar las comillas, buscar «dijo X» cerca, caer de vuelta en la alternancia. Rápido, y frágil justo donde la prosa se vuelve interesante. Después llegaron los modelos estadísticos entrenados con libros anotados. Manejaban mejor el contexto, pero seguían apoyándose en patrones superficiales.
Lo que cambió recientemente es que los modelos de lenguaje de gran tamaño leen un pasaje más como lo haría una persona. Dado un fragmento de un libro, un modelo capaz mantiene la escena en mente: quiénes están presentes, quién habló último, qué acción aparece junto a la cita. Usa todo eso para atribuir una línea, incluidas las que no llevan etiqueta. No es magia y no es perfecto, pero supone un paso importante respecto a buscar «dijo» junto al nombre más cercano.
Qué hace BookNPC con todo esto
BookNPC ejecuta este análisis sobre el libro página a página. Determina el reparto, resuelve los alias y atribuye cada línea, incluidas las secuencias sin etiquetar. Luego asigna al narrador y a cada personaje una voz distinta. Es el análisis de una sola vez que hay detrás de asignar el reparto a un libro, y por eso ese análisis tiene un pequeño coste: el trabajo está en la lectura, no en la reproducción.
Ningún sistema de atribución es perfecto con prosa difícil, así que la app te deja el control. Mientras suena, la línea actual se colorea con el color de su hablante y el nombre aparece bajo la página, para que puedas ver quién cree la app que habla. La lista completa del reparto está ahí mismo, y puedes cambiar cualquier voz. Si se equivoca en un intercambio complicado, el error es visible y corregible, no algo que pase desapercibido.
Por qué esta es la parte difícil, y la valiosa
Grabar voces es la mitad fácil de un audiolibro con reparto completo. La mitad cara y especializada siempre ha sido la dirección: decidir quién dice cada línea y cómo. La atribución automática de hablantes es el software que asume ese papel de director. Ya es lo bastante buena para producir un reparto completo con cualquier libro que traigas, no solo con el puñado que un estudio decidió producir.
Eso está detrás de una función que, vista desde fuera, simplemente suena como «cada personaje tiene una voz». Para verlo en funcionamiento, asigna el reparto de una novela con mucho diálogo en BookNPC y observa cómo aparecen los nombres de los hablantes mientras se lee. La guía sobre reparto completo frente a narrador único explica qué cambia en la experiencia de escucha.