Como é que uma aplicação sabe quem está a falar? Por dentro da narração automática com elenco completo
Para dar a cada personagem de um livro a sua própria voz, tens de responder primeiro a uma pergunta que parece simples e não é: quem diz esta linha? Um leitor humano responde sem reparar. O software tem de ser ensinado, e o ensino é a parte interessante. É também o que está por trás da narração automática com elenco completo, por isso vale a pena ver de perto.
Os casos fáceis, e porque enganam
Alguns diálogos dizem-te exatamente quem está a falar.
«Esteve no Afeganistão, percebo», disse Holmes.
A indicação está mesmo ali: um verbo de fala e um nome, ao lado da citação. Um programa simples consegue encontrar as aspas, procurar um «disse» próximo mais um nome próprio, e acertar na maioria das vezes. Se todas as linhas fossem assim, o problema resolvia-se numa tarde.
Não são.
Onde fica difícil
A prosa real está cheia de diálogos que escondem quem fala, e cada forma de esconder é um problema diferente.
Linhas sem indicação. Quando uma conversa está em marcha, os autores abandonam as indicações, porque se espera que o leitor mantenha o fio.
«Esteve no Afeganistão.» «Como diabo sabia?» «Deixe lá. A questão é da maior importância.»
Três linhas, sem nomes. Para as atribuir, tens de saber que duas pessoas estão a falar e que se alternam, e manter esse fio até algo o quebrar. Erra uma vez na conta e todas as linhas seguintes ficam atribuídas à pessoa errada.
Indicações por pronome. «Ele disse» e «ela perguntou» atribuem a linha a alguém que a frase não nomeia. Tens de saber quem é «ele» naquele momento, o que obriga a seguir quem foi referido por último e quem está sequer na cena.
Gestos em vez de indicações. Muitas vezes não há verbo de fala, apenas uma ação ao lado da citação.
Holmes recostou-se e juntou as pontas dos dedos. «Este é um problema de três cachimbos.»
Não há nenhum verbo de fala. Uma pessoa infere que é Holmes a falar porque é ele que age. O software tem de fazer a mesma inferência.
Construir a lista de personagens. Antes de atribuir uma linha a Holmes, tens de saber que Holmes existe, e que «Sherlock», «Mr. Holmes», «Holmes» e, na narração do amigo, «ele» podem ser o mesmo homem. Construir essa lista de personagens e os seus diferentes nomes a partir do texto, sem uma ficha de elenco, é um passo em si mesmo.
E depois há o ambíguo. Narração na primeira pessoa, cartas citadas dentro da história, uma cena com cinco pessoas a falar ao mesmo tempo, uma linha que o autor deixou deliberadamente incerta. Às vezes a resposta honesta é que até um leitor humano cuidadoso faria uma pausa.
Como as abordagens evoluíram
As primeiras tentativas eram baseadas em regras: encontra as aspas, procura «disse X» por perto, recorre a vozes alternadas. Rápidas, e frágeis exatamente onde a prosa fica interessante. Depois vieram modelos estatísticos treinados em livros anotados. Lidavam melhor com o contexto, mas ainda dependiam de padrões de superfície.
O que mudou recentemente é que os modelos de linguagem de grande escala leem uma passagem mais como uma pessoa lê. Dado um trecho de um livro, um modelo capaz guarda a cena em mente: quem está presente, quem falou por último, de quem é a ação ao lado da citação. Usa tudo isso para atribuir uma linha, incluindo as sem indicação. Não é perfeito, mas é um salto grande em relação a encontrar «disse» junto do nome mais próximo.
O que o BookNPC faz com isso
O BookNPC corre esta análise por um livro página a página. Determina o elenco, resolve os diferentes nomes e atribui cada linha, incluindo as sequências sem indicação. Depois atribui ao narrador e a cada personagem uma voz distinta. Este é o passo único que está por trás de atribuir vozes a um livro, e é por isso que há um pequeno custo: o trabalho está na leitura, não na reprodução.
Nenhum sistema de atribuição é perfeito em prosa difícil, por isso a aplicação mantém-te no controlo. Enquanto reproduz, a linha que está a ser lida aparece colorida com a cor de quem fala, e o nome da personagem surge por baixo da página. A lista completa do elenco está ali, e podes trocar qualquer voz. Se houver um erro numa troca difícil, o erro é visível e corrigível, não está silenciosamente incorporado.
Porque é esta a parte difícil, e a valiosa
Gravar vozes é a metade fácil de um audiolivro com elenco completo. A metade cara e exigente sempre foi a direção: decidir quem diz cada linha, e como. A atribuição automática de falas é o software a fazer essa direção. Já é suficientemente boa para criar um elenco completo de qualquer livro que tragas, não apenas do punhado que um estúdio escolheu produzir.
É isso que está por baixo de uma funcionalidade que, vista de fora, parece apenas «cada personagem tem uma voz». Para a veres a funcionar, atribui as vozes de um livro com muitos diálogos no BookNPC e observa os nomes dos oradores a aparecerem enquanto ele lê. O guia sobre elenco completo versus narrador único explica o que isso muda na experiência de ouvir.