
Mas recentemente, colegas do Sberbank vieram até nós com a proposta de participar de uma história divertida - para "dar voz" ao herói de Leonid Kuravlev em um novo vídeo. Para ele, o rosto de Kuravlev foi recriado a partir de frames do filme "Ivan Vasilyevich muda de profissão" e sobreposto ao rosto de outro ator utilizando a tecnologia Deepfake. Para que possamos não apenas ver, mas também ouvir Georges Miloslavsky em 2020, decidimos ajudar nossos colegas. Na verdade, com o passar dos anos, a voz de todos nós muda e, mesmo que Leonid Vyacheslavovich ditasse o herói, o efeito não seria o mesmo.
Abaixo do corte, direi por que essa, já em muitos aspectos, tarefa familiar de síntese de voz, acabou sendo um pouco mais difícil do que esperávamos, e explicarei por que tais vozes não podem enganar sistemas de autorização biométrica de alta qualidade.
"Ivan Vasilyevich Changes His Profession" foi lançado em 1973. Nesta década, Leonid Kuravlev conseguiu estrelar algumas dezenas de filmes de longa-metragem. No entanto, isso não simplificou nossa tarefa de forma alguma:
- Os personagens podem ter poucos monólogos longos;
- Em longas-metragens, efeitos acústicos, música de fundo, etc. são sobrepostos à fala;
- O som de filmes antigos da própria década de 70, mesmo que digitalizado, contém defeitos;
- O ator sempre ajusta a maneira de falar ao personagem, representa várias emoções, mas foi necessário repetir a maneira de falar do personagem de Georges Miloslavsky.
E, apesar do alto nível de incerteza, assumimos essa tarefa, e assim abordamos sua solução.
Coleta de dados para treinamento TTS
TTS (Text-to-speech) é uma tecnologia para traduzir texto impresso em fala falada. Atualmente, ele é implementado, via de regra, em uma pilha de métodos de deep learning, o que permite alcançar uma alta qualidade de som de voz sintetizada em comparação com outras abordagens. Por exemplo, usando os recursos do supercomputador Christophari, o modelo pode ser treinado para isso em apenas algumas horas.
A principal fonte de material de fala foram fragmentos de áudio de filmes com a participação de Leonid Kuravlev - "Deep Relatives", "It Can't Be", "Ivan Vasilyevich Altera Profissão", "Vaidade das Vaidades". Nem todos os episódios da aparição do herói do filme são adequados para o propósito de ensinar o sistema TTS. É necessário minimizar a presença de música de fundo e ruído, fala de outros atores, diversas manifestações não faladas. Depois de uma busca minuciosa por fragmentos adequados, tivemos pelo menos 7 minutos de fala, bastante expressivos e variados dependendo do personagem do personagem interpretado por Leonid. Além disso, cada filme tinha sua própria imagem acústica, o que também afeta muito a percepção e complica a tarefa.
Após preparar as transcrições textuais do material recortado de acordo com nosso pipeline usual, uma transcrição fonêmica do texto foi construída e alinhada com a faixa de áudio. Esticar uma sequência de fonemas sobre o som é necessário para determinar os locais das pausas reais quando o falante pronuncia o texto. Realizamos todas essas ações com a ajuda de um processador linguístico de nossa própria concepção e um modelo acústico, gentilmente cedido pelo departamento de reconhecimento de voz.
A posição exata dos fonemas em um registro não é tão importante para um modelo de sintetizador se ele contiver o chamado módulo Atenção. O mecanismo de atenção permite que você treine o modelo para distinguir fonemas independentemente, no entanto, a marcação de pausa é muito mais importante - em primeiro lugar, as pausas podem variar muito em duração e saber a duração exata permite que você mantenha a estabilidade durante a aprendizagem e, em segundo lugar, as pausas são frequentemente indicadores de limites de sintagma - unidades estruturais independentes do discurso - pelas quais muitas vezes é possível traçar os limites de declarações independentes. Isso permite que você divida frases muito longas em frases mais curtas para um uso mais eficiente da memória da GPU durante o treinamento, bem como aumente um pouco o conjunto de dados enumerando todas as opções de divisão possíveis.
Limpeza de dados
Embora tentássemos extrair os registros mais limpos possíveis dos filmes, alguns deles ainda eram acompanhados por sons estranhos (o barulho da cidade, sons da natureza, o som da água, etc.) ou música.
Para corrigir isso, usamos dois projetos de código aberto: um modelo para melhorar a qualidade da voz, trabalhando diretamente no sinal de áudio bruto e um algoritmopara dividir uma composição musical em partes: voz, bateria, baixo e o resto. Precisávamos obter gravações claras da voz do locutor com a qualidade de som máxima (para nosso sistema TTS - 22050 Hz). Quaisquer artefatos certamente penetrarão no modelo neural da voz do locutor, especialmente quando se trata de uma amostra de treinamento tão pequena. Graças aos projetos listados, foi possível separar completamente a música da voz sem perda significativa de qualidade para cerca de metade dos exemplos coletados.
Como resultado, depois de todas as manipulações, ainda temos 4 minutos e 12 segundos de discurso claro da voz de Leonid Vyacheslavovich Kuravlev. Ficou claro que nossa arquitetura de combate TTS, que, aliás, você pode ouvir na nuvem) não é adequado para este caso. No entanto, à mão estava um modelo TTS relativamente novo e incomum da NVidia chamado Flowtron , baseado no método Inverse Autoregressive Flow (IAF).
A principal característica do modelo Flowtron é que ele pode ser usado para sintetizar diferentes formas de pronunciar o mesmo texto, com uma ampla variedade de entonações e estilos de fala. Mas essa propriedade é uma "faca de dois gumes", já que os exemplos gerados pelo modelo estão longe de ser sempre adequados em termos de percepção. A entonação pode mudar de forma muito abrupta e não natural, a frequência do tom (tom da voz) pode mudar em uma ampla faixa, criando um som engraçado, mas desnecessário. Quanto mais dados iniciais para o treinamento, mais natural e estável é gerar a fala. Mas mesmo com uma pequena quantidade de material, às vezes é possível sintetizar bons exemplos. Decidimos pegá-los.
Para começar, um modelo existente, treinado em um grande conjunto de dados expressivos, teve que ser treinado para falar em uma nova voz. Se você apenas pegar e "alimentá-la" com todos os 4 minutos e 12 segundos de dados, então, dependendo do parâmetro que regula a sensibilidade do treinamento, o modelo irá retreinar imediatamente (falar muito mal) ou aprender muito, muito mal (também não falará com uma nova voz) ... E você pode “capturar” o valor ideal do parâmetro por muito tempo e com entusiasmo. É uma boa prática misturar dados novos com dados antigos em uma proporção conveniente (por exemplo, um em cada dez). Então, antes do início do processo de reciclagem, os novos dados terão tempo de "assimilar" bem. Fizeram isso, mas primeiro cortaram exemplos de pausas com sobreposição, que, com um leve movimento dos dedos no teclado, transformam 4 minutos de fala em 23.
O modelo assim treinado já era capaz de sintetizar algo com a voz do artista, mas exemplos mais ou menos adequados foram obtidos em um caso em vinte. Também é importante obter o estilo, a entonação, a emoção e a qualidade do som necessários, que neste caso são extremamente difíceis de controlar. Assim, foi necessário sintetizar várias dezenas de milhares de exemplos para selecionar manualmente vários exemplos adequados a partir deles.
Aqui, a normalização dos fluxos vem em nosso auxílio, sobre os quais o próprio modelo é construído. Na verdade, o Flowtron é treinado para exibir as características acústicas de um sinal de fala, dado o texto, para pontos de uma distribuição normal da mesma dimensão, e essa exibição é reversível. Durante a síntese, o processo reverso ocorre (portanto, os fluxos são reversos e normalizando). Assim, você pode pegar um registro, exibi-lo usando um modelo para pontos específicos e obter o mesmo registro desses pontos. Sem utilidade? Na verdade não! Você pode misturar cuidadosamente esses pontos com os mesmos de outra gravação e, assim, transferir parcialmente o estilo da última. Você pode adicionar um pouco de ruído a eles e obter uma gravação quase original, um pouco diferente da original. Mas se você adicionar muito ruído, você obterá um absurdo. Assim, você pode multiplicar o conjunto de dados original, obtendo muitos outros semelhantes,mas não exatamente os mesmos exemplos!
No entanto, neste caso, não se pode confiar totalmente na decência do modelo. Ela pode sintetizar muitas coisas. Tive que ouvir vários milhares de exemplos de um conjunto de dados replicado e selecionar habilmente os de alta qualidade. Essa abordagem pode ser chamada de "modelo com orelhas". Isso nos permitiu obter uma hora inteira de dados de treinamento dos 23 minutos originais (levando em consideração o corte por pausas).
Este esquema de treinamento em vários estágios deu frutos. Embora a maioria dos exemplos sintetizados com sua ajuda já parecesse bastante valiosa, ainda assim exigia "força bruta". Adicionamos pontos de exemplos de Ivan Vasilievich aos pontos de partida. Em algum lugar o efeito de um filme antigo ou de uma grande sala apareceu. Ou a frase saiu na voz de um artista, mas não de uma forma "miloslaviana". Tive de escolher "apenas" entre alguns milhares de amostras. Resultaram cerca de trezentos exemplos das frases curtas exigidas com uma grande variedade de estilos e entonações, para as quais, de fato, selecionamos amostras para o vídeo promocional de Sber.
Assim, tendo realizado uma espécie de hackatona semanal em nossa equipe de síntese de fala RTC, fomos capazes de recriar a voz de 50 anos atrás em apenas 4 minutos de fala. A tecnologia que testamos abre oportunidades para recriar as vozes perdidas de personalidades famosas a partir de uma quantidade extremamente pequena de material. O que saiu disso tudo no final, você pode ver.
Depois de ler tudo isso, você provavelmente pensou que tais capacidades tecnológicas lançam dúvidas sobre a confiabilidade dos sistemas biométricos, pois a voz de qualquer pessoa pública, blogueiro de vídeo ou usuário comum de redes sociais que publica vídeos amadores pode ser facilmente falsificada. Apesar de de ouvido a voz sintetizada de Leonid Kuravlev ser indistinguível da voz real, ainda é uma síntese. Isso significa que ele contém características de som que indicam que a voz não está viva. O anti-spoofing e a proteção contra hackers costumam ser realizados em competições científicas especiais, inclusive mundiais, nas quais nossa equipe venceu... Nos ODMs, acreditamos que os desenvolvedores devem estar sempre um passo à frente, e não apenas criar novas tecnologias e produtos baseados neles, mas também buscar constantemente novos meios de proteção, não parando no que foi alcançado.