Como surgiu a ideia
Tudo começou com o post que vi sobre a nova plataforma Maxine com IA para atualizar as comunicações de vídeo da Nvidia, um dos recursos dessa plataforma é a tradução simultânea na forma de títulos, esse recurso é implementado usando um framework da mesma Nvidia chamado Jarvis, esta estrutura é projetada para serviços de conversação de IA multimodal, fornecendo desempenho de GPU em tempo real. É este conceito de interpretação simultânea que forma a base da nossa plataforma de comunicação de áudio e vídeo. Por se tratar de uma plataforma nova, ela deveria ter uma série de recursos em comparação com outras plataformas semelhantes, por isso decidimos adicionar uma voz a esses títulos, formando um perfil de voz do usuário e sintetizando a fala, levando em consideração a tonalidade e a cor da voz de quem fala.
Fala para texto ou reconhecimento de fala
É melhor usar o Google, Yandex ou Mozilla?
O Google, em comparação com o Yandex, tem uma maior precisão de reconhecimento, executamos 5 mensagens de voz de teste: 3 em inglês e 2 em russo através da API do Google e a precisão de reconhecimento foi de 100% (5/5), Yandex 60% (3/5). O Google oferece suporte a 125 idiomas, Yandex - 3 idiomas.
A vantagem do Mozilla Deepspeech é a precisão de reconhecimento, pois é de 92,5%, para comparação, uma pessoa reconhece com uma precisão de 94,2%, portanto a precisão de reconhecimento de mensagens de voz de teste foi de 100% (5/5), e a vantagem é que este motor código aberto, ao contrário do Google e Yandex. A desvantagem deste motor é o número de idiomas reconhecidos - inglês, russo e francês.
Como resultado, a escolha recaiu no Google Speech to Text devido à relação entre o número de idiomas e a precisão do reconhecimento.
Tradução do texto
Para resolver esse problema, a primeira coisa que vem à mente é usar uma API pronta do Google ou Yandex. O primeiro problema que encontramos foi a imprecisão da tradução. Por exemplo, a tradução da frase “As pessoas na China são aparentemente invisíveis” do russo para o inglês. Yandex Translator: “As pessoas na China são aparentemente invisíveis” e Google Translator: “Há muitas pessoas na China”, neste caso o Google se saiu melhor.
Atualmente, não existe uma panacéia para resolver esse problema. A principal tarefa desses tradutores hoje é ensinar o algoritmo a entender o significado de uma frase / texto. Se o algoritmo entender o significado, a tradução será de qualidade muito melhor.
A tradução de uma série de frases relacionadas a tópicos de negócios por meio do Google Translate e Yandex Translator mostrou que o Google faz isso com mais competência, então usaremos o Google Translate.
Analise e obtenha um perfil de voz
Para obter um perfil de voz, precisamos coletar alguns conjuntos de dados. Como a tarefa é sintetizar o texto traduzido pela fala do locutor, precisamos coletar um conjunto de dados de cada usuário. Isso é feito lendo um texto especializado que contém o conjunto necessário de combinações de letras, construções sintáticas e sinais de pontuação. A duração da leitura do texto é de cerca de 15 minutos, portanto, obtemos uma quantidade suficiente de informações sobre a frequência e as características de entonação de cada usuário. A leitura do texto pode ser repetida para melhorar o resultado final.
Síntese de fala levando em consideração o perfil de voz
Sintetizar a fala de uma pessoa em um idioma que ela nunca falou não é uma tarefa fácil. Para isso, é necessário coletar o conjunto de dados primário com a ajuda de pessoas bilíngues que também irão ler o texto especializado, em seguida, ler o texto semelhante em outro idioma e, em seguida, - textos adicionais para expandir o conjunto de dados. A partir desse treinamento e das relações identificadas, posteriormente será gerada a fala dos usuários em outro idioma. Além disso, as soluções automatizadas já existentes para sintetizar a fala em vários idiomas ajudarão neste processo, uma vez que a coleta de um conjunto de dados completamente independente na escala necessária não parece ser eficaz nem realista.
Resultado
Nossa principal tarefa no momento é combinar um perfil de voz com a síntese de fala, já que transferir um perfil de voz para outro idioma não é uma tarefa fácil e é necessário treinar uma rede neural para que ela entenda como fazê-lo, tendo apenas dois conjuntos de dados em idiomas diferentes ...
Durante o desenvolvimento do projeto, faremos publicações relacionadas a tarefas mais específicas e formas de resolvê-las.