2 pontos por GN⁺ 2024-11-04 | 1 comentários | Compartilhar no WhatsApp
  • hertz-dev foi lançado como um modelo base full-duplex de 8,5B parâmetros dedicado a áudio, capaz de lidar até com situações em que duas pessoas falam ao mesmo tempo, servindo como ponto de partida para pesquisa em agentes de voz em tempo real
  • A arquitetura é dividida em hertz-codec e hertz-ar: ela converte áudio de 16kHz em uma representação latente de 8Hz e, com base nos valores latentes anteriores, prevê o próximo valor latente de áudio de forma autorregressiva
  • A latência média real em uma única RTX 4090 foi medida em 120ms, e a latência média teórica foi apresentada como 80ms, ou seja, 2x menor que o melhor nível anterior
  • O hertz-codec gera um valor latente 32-dimensional a cada frame de 125ms, e o hertz-ar usa um transformer decoder-only de 40 camadas e 8,4B parâmetros com contexto de cerca de 4,5 minutos
  • Como não é um modelo de produto com distribuição de resposta estreitada por ajuste com aprendizado por reforço, mas sim um modelo base que prevê a distribuição dos dados de treino, ele é fácil de ajustar finamente por pesquisadores para tarefas de áudio conversacional

O problema de áudio conversacional que o Hertz-dev busca resolver

  • Para agentes interativos naturais, a modalidade de áudio imediata é mais importante do que texto
  • As abordagens de áudio generativo se dividem em dois grandes grupos: métodos baseados em difusão e métodos autorregressivos; modelos de difusão são fortes para geração musical ou amostras curtas, mas para áudio conversacional real o método autorregressivo é mais adequado
  • Há duas dificuldades centrais que modelos conversacionais precisam resolver
    • Gerar áudio que soe humano e lidar com interrupções de forma natural
    • Lidar com situações em que dois canais em tempo real geram informação ao mesmo tempo, como em conversas humanas comuns

Modelo lançado e latência

  • hertz-dev é um modelo base full-duplex, dedicado a áudio, com 8,5B parâmetros
  • Ele foi projetado para o formato de dois falantes, podendo analisar e gerar áudio sobreposto de dois locutores
  • Opera em um espaço latente que usa bits fonéticos quantizados, amostrando apenas um valor latente por timestep
  • A latência é apresentada da seguinte forma
    • Latência média teórica: 80ms
    • Benchmark real em uma única RTX 4090: 120ms
    • Valor 2x menor que o melhor nível anterior

Estrutura do modelo: hertz-codec e hertz-ar

  • O hertz-dev é dividido em dois componentes
    • hertz-codec: codifica o áudio em valores latentes e depois o reconstrói de volta em áudio
    • hertz-ar: prevê valores latentes futuros condicionados aos valores latentes passados
  • Os valores latentes de áudio são tratados como representações prévias ricas que podem ser usadas em várias tarefas downstream
  • hertz-codec

    • O hertz-codec é um VAE de áudio convolucional que recebe voz mono em 16kHz e a codifica em uma representação latente de 8Hz
    • Usa bitrate de 1kbps regularizado por KL
    • Para inferência em streaming, usa causal convolution, adicionando funcionalmente padding à esquerda da sequência
    • O codec produz parâmetros gaussianos de média e variância, e faz amostragem de um único valor latente 32-dimensional a cada frame de 125ms
    • Em avaliação subjetiva, o hertz-codec superou Soundstream e Encodec a 6kbps e foi avaliado em nível semelhante ao DAC a 8kbps
    • Como tem menos tokens por segundo do que tokenizers populares, é vantajoso para modelagem de linguagem
    • Configuração de parâmetros
      • Encoder: 5M parâmetros
      • Decoder: 95M parâmetros
    • Checkpoints públicos
  • hertz-ar

    • O hertz-ar é um transformer decoder-only de 40 camadas e 8,4B parâmetros
    • O contexto de entrada é de 2048 tokens, equivalente a cerca de 4,5 minutos
    • Os valores latentes de saída podem ser enviados ao hertz-codec
    • As primeiras 32 camadas recebem o histórico latente como entrada e preveem a projeção quantizada de 15 bits do próximo token latente de áudio
    • Essa parte de 32 camadas é chamada de hertz-lm e pode ser treinada de forma independente ou inicializada a partir de pesos de modelo de linguagem
    • As 8 camadas finais usam o histórico latente e os valores latentes quantizados de 15 bits para prever futuros tokens latentes de áudio
    • O áudio duplex é tratado como uma tarefa de pós-treinamento
      • Dois projection heads são concatenados e depois separados
      • O processamento é feito com dois pipelines de projeção quantizada condicionados ao residual de cada um
    • Checkpoints públicos

Geração de amostras e escolhas de treinamento

  • Para mostrar a capacidade de modelagem de áudio do modelo, são fornecidas amostras de geração em canal único, geração em dois canais e conversas ao vivo entre humano e modelo
  • As amostras interativas incluem um prompt de 9 segundos
  • As principais escolhas de treinamento são as seguintes
    • No hertz-codec, foram usadas Causal ConvNets para decodificação paralela e controle mais refinado da geração latente
    • Os valores latentes quantizados de 15 bits foram treinados inicialmente para carregar informação fonética, levando o modelo a produzir enunciados sintaticamente corretos
    • A quantização é realizada inserindo uma projeção MLP em uma camada Finite Scalar Quantization
    • No hertz-lm, foram feitos experimentos de ablação com duas estratégias de inicialização, e foi apresentado que o modelo aprendeu linguistics de forma eficaz com ou sem inicialização a partir de modelo de texto

Método de inferência em tempo real

  • Durante a inferência ao vivo, o modelo executa 8 forward passes por segundo e continua a geração autorregressiva continuamente
  • A entrada consiste em dois canais separados, mas na conversa apenas um canal é retornado
  • Em cada etapa, o áudio humano é tokenizado em valores latentes e combinado com o último valor latente gerado pelo modelo para entrar no hertz-ar
  • A latência é medida como o tempo médio entre a fala do usuário e a resposta do modelo
  • Em termos computacionais, a latência média é de 62,5ms, incluindo o tempo médio entre uma fala arbitrária e o fim de um token, o tempo de forward pass e a latência de internet de ida e volta
  • Ao rodar localmente em uma RTX 4090, a latência média real costuma ser de 120ms
  • Baixa latência é uma condição para criar um modelo que interaja como uma pessoa, sem parecer uma ligação telefônica atrasada e truncada

Caráter público e posição de uso

  • O hertz-dev é apresentado como o primeiro modelo base público para áudio conversacional
  • Aqui, modelo base significa não um modelo cuja distribuição de geração foi fortemente estreitada por ajuste com aprendizado por reforço, mas um modelo que prevê com precisão a distribuição dos dados de treino
  • Por esse caráter, ele é um bom ponto de partida para fine-tuning em várias tarefas downstream
  • Recursos relacionados

1 comentários

 
GN⁺ 2024-11-04
Comentários no Hacker News
  • Isso é muito legal. Para referência, os mecanismos de síntese de voz open source existentes são bem fracos em comparação com o que aparece aqui, então acho que haveria muita demanda se isso fosse expandido para um formato multimodal que hoje é voz-para-voz, mas que também pudesse aceitar texto.
    Na prática, além de ser um ótimo modelo voz-para-voz, ele também se tornaria um modelo TTS muito bom. Alguém talvez consiga contornar isso fazendo fine-tuning para que saídas como as do Piper sejam reproduzidas com prosódia e entonação mais naturais, mas acho que o recurso de receber texto nativamente seria muito mais útil do que encadear um pipeline texto LLM → Piper → Hertz-dev

    • Se a equipe tem 4 pessoas, acho melhor focar em uma coisa só em vez de se espalhar em várias direções
    • Sim, é exatamente isso. O Piper já é bem bom, e seria ótimo somar este modelo a ele
      Mas talvez não seja algo que essa equipe precise fazer diretamente
  • Dizem que o Hertz é o primeiro, mas o Moshi, lançado no começo deste ano, também é um modelo de voz bidirecional que funciona de modo parecido e roda até em MacBook: https://github.com/kyutai-labs/moshi

    • O Moshi não publicou o modelo-base; publicou só 2 modelos com fine-tuning para conversação. Tirando o codec, também não publicou o código de treinamento
      No Hertz, também só vejo 3 notebooks de inferência e código de modelo cheio de no_grad; não vejo código de treinamento. Também não há artigo, então fica difícil entender como ele foi treinado e qual é a arquitetura. Por isso, a menos que eu esteja deixando passar algo, é meio difícil chamá-lo de amigável à pesquisa
    • LLaMA-Omni https://github.com/ictnlp/LLaMA-Omni é um modelo de fala-linguagem baseado no Llama-3.1-8B-Instruct que gera texto e fala simultaneamente
      moshi https://github.com/kyutai-labs/moshi é um modelo baseado em fala-texto que usa o Mimi, um codec de áudio neural de streaming de última geração, e o Mini-Omni https://github.com/gpt-omni/mini-omni é um LLM multimodal baseado no Qwen2 que oferece entrada e saída de voz. Ichigo https://github.com/homebrewltd/ichigo é um projeto de pesquisa aberto que expande LLMs baseados em texto com capacidade nativa de escuta por meio de técnicas de fusão inicial
    • O Moshi é um bom modelo para criar um app de chat, mas este aqui parece ter sido projetado mais como um modelo-base de fato, com aquela estranheza, naturalidade e amigabilidade à pesquisa típicas de modelagem de base
  • A Tesla excluir inicialmente lidar e outros sensores e focar em direção autônoma puramente baseada em visão parece uma estratégia para tornar a tecnologia mais acessível e escalável
    Ao focar em modelos apenas de visão, a adoção pode acelerar, e a coleta de dados em larga escala também pode tornar as iterações de melhoria mais rápidas. Quando sistemas baseados em visão estiverem maduros o suficiente, talvez a Tesla possa reintegrar dados de sensores como lidar ou radar para tornar seu portfólio de direção autônoma mais robusto e bem-acabado
    Pensei em uma ideia parecida para sistemas de interação por voz. Hoje, a maioria converte fala em texto, gera uma resposta em texto e depois a converte de volta em fala. Mas, se fosse possível treinar para responder diretamente em fala sem passar por texto, talvez as respostas ficassem mais naturais e espontâneas. A fala natural tem sintaxe e ritmo próprios, além de variações de dialeto e tom; então um sistema treinado puramente em fala poderia ser mais humano e interessante
    Fico curioso para saber se os modelos atuais de interação por voz seguem o processo padrão fala→texto→fala ou se já estão explorando processamento voz-para-voz

    • Sou um dos desenvolvedores. Nosso modelo é totalmente voz-para-voz, e foi exatamente por esse motivo que não usamos texto nenhum ao criar o hertz-dev
    • O segundo parágrafo parece descrever o ChatGPT Advanced Voice Mode ou a Realtime API
  • Muito legal. Estou analisando VUI (interface de usuário por voz) agora, então isso pode ser útil
    Talvez eu seja um pouco enviesado, já que fiz doutorado pesquisando como VUIs persuadem pessoas, mas acho que VUI é o futuro da interação com computadores. Mesmo que não seja o futuro, pode abrir novos públicos de usuários, como crianças e idosos

    • Tenho muito interesse em interfaces de usuário por voz. Fico curioso sobre o que você está construindo e se há algum link
    • Sim, e também pessoas com deficiência visual
  • Se houver autores de modelos de voz ou pessoas trabalhando em áreas relacionadas, fico curioso se já sentiram que o som emitido pelo sistema soa assustador ou causa algum efeito fisiológico

  • Dá para pensar nisso como uma espécie de LLM, mas um LLM de áudio, em que o prompt é áudio e a saída gerada também é áudio?

    • Sim. Pelo que vejo, parece funcionar exatamente assim
  • Fico curioso se a ideia de “colapso da distribuição gerativa” já é um tema pesquisado. Se for, gostaria de saber por qual nome ela é conhecida
    Achei interessante a ideia de que modelos-base modelam com precisão a distribuição dos dados de treinamento, enquanto modelos que passaram por um grande ajuste via aprendizado por reforço têm a distribuição gerativa dobrada, de modo que o modelo-base é um ponto de partida melhor para fazer fine-tuning em várias tarefas. Isso também parece ter relação com aprendizado contínuo ou com métodos corretos de fine-tuning

  • Como fazer pré-treinamento do modelo-base hertz-dev em outros idiomas? Fico curioso para saber onde encontrar informações relacionadas

  • A voz soa um pouco distorcida, e há ruído de fundo com frequência. Isso fica especialmente perceptível quando a fala para e esse ruído desaparece
    Fico curioso se isso é uma limitação do modelo ou um problema de qualidade dos dados de treinamento

  • Algum dos autores poderia explicar o que esta frase do texto realmente quer dizer?
    hertz-vae: um decodificador Transformer de 1,8 bilhão de parâmetros que atua como a distribuição a priori aprendida do VAE de áudio. Ele usa 8192 representações latentes amostradas, ou seja, 17 minutos de contexto, e prevê o próximo frame de áudio codificado como uma mistura gaussiana. A informação de quantização de 15 bits do próximo token serve como um suporte semântico que guia a geração de forma compatível com streaming

    • Meu palpite é o seguinte. Primeiro, o codec parece comprimir áudio com sample rate de 16k por convolução para 8 amostras por segundo e depois aplicar quantização vetorial em 128 bits para obter o codec
      Essa quantidade de bits é extremamente insuficiente para representar áudio real e provavelmente serve mais para representar algo como fonemas. O vae parece um modelo de difusão baseado em VAE que usa o codec como prompt, e o dev parece ser um modelo que prevê o próximo codec
      O fluxo completo provavelmente é tokenizar o prompt com o codec; se forem necessários mais s segundos de áudio, prever mais 8 * s tokens com o dev; e então converter isso de volta em áudio com o modelo de difusão vae