Melhorando a qualidade de áudio do Google Duo com WaveNetEQ

As chamadas pela Internet tornaram-se parte integrante da vida de milhões de pessoas - para simplificar o fluxo de trabalho e conectar-se com seus entes queridos. Para transferir uma chamada pela Internet, os dados da chamada são divididos em pequenos pedaços chamados "pacotes". Os pacotes passam pela rede do remetente ao destinatário, onde são coletados novamente para receber fluxo contínuo de vídeo e áudio. No entanto, geralmente os pacotes chegam ao destinatário na ordem errada e na hora errada - isso geralmente é chamado de instabilidade.(tremendo) - ou completamente perdido. Tais problemas reduzem a qualidade das chamadas, pois o destinatário precisa tentar preencher as lacunas e isso afeta seriamente o áudio e o vídeo. Por exemplo, 99% das chamadas pelo Google Duo sofrem perda de pacotes, tremulação excessiva ou latência da rede. Destas, 20% das chamadas perdem mais de 3% dos dados de áudio devido a problemas de rede e 10% das chamadas perdem mais de 8% dos dados.


Diagrama simplificado de problemas de rede

Para tornar a comunicação em tempo real mais confiável, você precisa, de alguma forma, lidar com os pacotes necessários que não chegaram ao destinatário. Por exemplo, se você não der um sinal de áudio contínuo, ouvirá interrupções e gagueira, mas não poderá chamá-lo de uma solução ideal para tentar repetir o mesmo sinal repetidamente - isso levará a artefatos e reduzirá a qualidade geral da chamada. A tecnologia para lidar com a situação com a ausência de pacotes é chamada de "ocultação de perda de pacote" (PLC). O módulo PLC do receptor é responsável pela criação de áudio (ou vídeo) que preenche as interrupções causadas por perda de pacotes, tremulação forte ou problemas de rede - problemas que, em qualquer caso, levam à falta de dados necessários.

Para lidar com esses problemas de áudio, introduzimos um novo sistema de CLP chamado WaveNetEQ in Duo. Este é um modelo generativo baseado na tecnologia WaveRNN da DeepMind , treinado em um grande corpo de dados de fala para complementar realisticamente os segmentos de fala. Ela é capaz de sintetizar completamente o sinal sonoro dos fragmentos que faltam na fala. Como as chamadas para o Duo passam por criptografia de ponta a ponta, todo o processamento deve ser feito no próprio dispositivo. O modelo WaveNetEQ é rápido o suficiente para um telefone, enquanto ainda oferece excelente qualidade de áudio e um CLP com um som mais natural em comparação com outros sistemas existentes.

Novo sistema PLC para Duo


Como muitos outros programas de comunicação baseados na Web, o Duo é baseado no projeto WebRTC de código aberto . Para ocultar as consequências da perda de pacotes, o componente do sistema NetEQ usa métodos de processamento de sinais que analisam a fala e produzem continuidade contínua - isso funciona bem para pequenas perdas (até 20 ms), mas começa a soar ruim quando a perda de pacotes leva a interrupções na comunicação de 60 ms ou mais. Nesses casos, o discurso se torna semelhante ao discurso repetitivo do robô - esse som característico, infelizmente, é bem conhecido por muitos fãs de fazer chamadas pela Internet.

Para melhorar a qualidade do processamento de perda de pacotes, substituímos o NetEQ PLC por uma versão modificada do WaveRNN. Esta é uma rede neural recorrente projetada para síntese de fala, consistindo em duas partes - redes neurais autoregressivas e condicionadas. A rede neural autoregressiva é responsável pela continuidade do sinal e produz uma estrutura de fala de curto e médio prazo. No processo de sua operação, cada fragmento gerado depende dos resultados anteriores da rede. Uma rede neural condicionada afeta o autorregressivo, de modo que produz um sinal de áudio correspondente a dados de entrada mais lentos.

No entanto, o WaveRNN, como seu antecessor, WaveNet, foi criado com o objetivo de converter texto em fala (texto em fala, TTS). Como o WaveRNN é um modelo TTS, são fornecidas informações sobre o que precisa ser dito e como. Uma rede de ar condicionado recebe essas informações diretamente na entrada na forma de fonemas que compõem a palavra e os recursos da prosódia (informações não textuais, como tom ou entonação). De certa forma, uma rede com ar condicionado é capaz de "olhar para o futuro" e, em seguida, redirecionar a rede autorregressiva para seus sons correspondentes. No caso do sistema PLC e da comunicação em tempo real, não teremos esse contexto.

Para criar um sistema PLC funcional, você precisa extrair o contexto da fala atual (isto é, do passado) e gerar um som aceitável para sua continuação. Nossa solução, WaveNetEQ, faz as duas coisas. Ele usa uma rede auto-regressiva, que continua a soar em caso de perda de pacotes, e uma rede neural condicionada que simula sintomas de longo prazo, como características de voz. O espectrograma do sinal de áudio anterior é alimentado à entrada da rede neural condicionada, da qual é extraída uma quantidade limitada de informações que descreve a prosódia e o conteúdo do texto. Essa informação concentrada é alimentada em uma rede neural autoregressiva, combinando-a com áudio recente para prever o próximo fragmento de som.

Isso é um pouco diferente do procedimento que seguimos durante o treinamento do WaveNetEQ. Em seguida, a rede neural autoregressiva recebeu uma amostra de som real como entrada para a próxima etapa, em vez de usar a amostra anterior. Nesse processo, conhecido como formação de professores, é garantido que o modelo aprenda informações valiosas mesmo nos estágios iniciais do treinamento, quando suas previsões são de baixa qualidade. Quando o modelo é totalmente treinado e usado em chamadas de áudio ou vídeo, o treinamento imposto é usado apenas para "aquecer" o modelo na primeira amostra e, depois disso, ele já recebe sua própria saída.


Arquitetura WaveNetEQ. Durante a operação de uma rede neural autoregressiva, nós a “aquecemos” por meio de treinamento com imposição. Depois disso, ela já consegue sua própria saída para a entrada. Um espectrograma de pequena frequência de longas seções de áudio é usado como entrada para uma rede neural com ar condicionado.

Este modelo é aplicado aos dados de áudio em um buffer de tremulação Duo. Quando, após a perda de pacotes, a comunicação é retomada e o sinal de áudio real continua chegando, combinamos cuidadosamente os fluxos de áudio sintéticos e reais. Para compor melhor esses dois sinais, o modelo gera um pouco mais de saída do que o necessário e, em seguida, faz uma transição suave de um para o outro. Isso torna a transição suave e praticamente silenciosa.


Simulação de eventos PLC em um fluxo de áudio em uma janela deslizante de 60 ms. A linha azul é áudio real, incluindo partes passadas e futuras do PLC. Em cada medida, a linha laranja representa o áudio sintético que o sistema WaveNetEQ previa se o som fosse cortado ao longo da linha cinza vertical.

Perda de pacotes de 60 ms

[ Nota perev.: exemplos de áudio são tão desajeitados na aparência, pois o editor Habr não oferece a capacidade de incorporar arquivos de áudio. É assim que o mp4 se parece com um áudio, sem uma imagem. ]

NetEQ


WaveNetEQ


NetEQ


WaveNetEQ




Perda de pacotes NetEQ de 120 ms


WaveNetEQ


NetEQ


WaveNetEQ


Garantimos confiabilidade


Um dos fatores importantes a considerar no PLC é a capacidade da rede neural de se adaptar a sinais de entrada variáveis, por exemplo, quando existem várias pessoas que falam ou quando o ruído de fundo muda. Para garantir a confiabilidade do modelo para uma ampla variedade de usuários, treinamos o WaveNetEQ em um conjunto de dados de voz retirados de mais de 100 pessoas diferentes que falam 48 idiomas diferentes. Isso permitiu que o modelo aprendesse as características gerais da fala humana, e não os recursos de um idioma específico. Para garantir a operação do WaveNetEQ em caso de ruído em segundo plano, quando você, por exemplo, atende uma chamada em um trem ou em um café, complementamos os dados misturando-os com o ruído de fundo de um banco de dados extenso.

E embora nosso modelo seja capaz de aprender como continuar plausivelmente sua fala, ele funciona apenas por curtos períodos de tempo - pode terminar sílabas, mas não pode prever palavras. No caso de perda de pacotes por longos períodos, diminuímos gradualmente o volume e, após 120 ms, o modelo produz apenas silêncio. Além disso, para garantir que o modelo não produza sílabas falsas, examinamos as amostras de som do WaveNetEQ e NetEQ usando a API de fala para texto do Google Cloude constatou que o modelo praticamente não altera a porcentagem de erros no texto resultante, ou seja, o número de erros que ocorrem durante o reconhecimento de fala. Experimentamos o WaveNetEQ no Duo e seu uso impactou positivamente a qualidade da chamada e a experiência do usuário. O WaveNetEQ já funciona em todas as chamadas Duo em telefones Pixel 4 e agora estamos implantando em outros telefones.

All Articles