Transformers documentation

VibeVoice Acoustic Tokenizer

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Este modelo foi publicado no HF papers em 2025-08-26 e contribuído para o Hugging Face Transformers em 2026-02-06.

VibeVoice Acoustic Tokenizer

Visão geral

VibeVoice é um novo framework para sintetizar fala de alta fidelidade e longa duração com múltiplos falantes, empregando uma abordagem de difusão de próximo token dentro de uma estrutura de Large Language Model (LLM). Ele foi projetado para capturar a “vibe” autêntica de conversas e é particularmente adequado para gerar conteúdo de áudio, como podcasts e audiobooks com múltiplos participantes.

Uma característica fundamental do VibeVoice é o uso de dois tokenizadores de áudio contínuos, um para extrair características acústicas e outro para características semânticas.

Um checkpoint do modelo está disponível em microsoft/VibeVoice-AcousticTokenizer

Este modelo foi contribuído por Eric Bezzam.

Arquitetura

A arquitetura é uma estrutura encoder-decoder simétrica por espelhamento. O encoder adota um design hierárquico com 7 estágios de blocos semelhantes ao ConvNeXt, que utilizam convoluções causais 1D profundas para processamento de streaming eficiente. Seis camadas de downsampling alcançam uma taxa de downsampling cumulativa de 3200X a partir de uma entrada de 24kHz, resultando em 7,5 tokens/frames por segundo. Cada componente encoder/decoder possui aproximadamente 340M de parâmetros, totalizando cerca de 680M de parâmetros. O objetivo de treinamento segue o de DAC, incluindo seus designs de discriminador e de perda.

O Acoustic Tokenizer adota os princípios de um Autoencoder Variacional (VAE). O codificador mapeia o áudio de entrada para os parâmetros de uma distribuição latente, a saber, a média. Juntamente com um desvio padrão fixo, um vetor latente é então amostrado usando o truque de reparametrização. Consulte o relatório técnico para mais detalhes.

Uso

Abaixo está um exemplo de uso para codificar e decodificar áudio:

import torch
from scipy.io import wavfile

from transformers import AutoFeatureExtractor, VibeVoiceAcousticTokenizerModel
from transformers.audio_utils import load_audio_librosa


model_id = "microsoft/VibeVoice-AcousticTokenizer"

# load model
feature_extractor = AutoFeatureExtractor.from_pretrained(model_id)
model = VibeVoiceAcousticTokenizerModel.from_pretrained(model_id, device_map="auto")
print("Model loaded on device:", model.device)
print("Model dtype:", model.dtype)

# load audio
audio = load_audio_librosa(
    "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Alice_woman.wav",
    sampling_rate=feature_extractor.sampling_rate,
)

# preprocess audio
inputs = feature_extractor(
    audio,
    sampling_rate=feature_extractor.sampling_rate,
    pad_to_multiple_of=3200,
).to(model.device, model.dtype)
print("Input audio shape:", inputs.input_values.shape)
# Input audio shape: torch.Size([1, 1, 224000])

with torch.no_grad():
    # set VAE sampling to False for deterministic output
    encoded_outputs = model.encode(inputs.input_values, sample=False)
    print("Latent shape:", encoded_outputs.latents.shape)
    # Latent shape: torch.Size([1, 70, 64])

    decoded_outputs = model.decode(**encoded_outputs)
    print("Reconstructed audio shape:", decoded_outputs.audio.shape)
    # Reconstructed audio shape: torch.Size([1, 1, 224000])

# Save audio
output_fp = "vibevoice_acoustic_tokenizer_reconstructed.wav"
wavfile.write(output_fp, feature_extractor.sampling_rate, decoded_outputs.audio.squeeze().float().cpu().numpy())
print(f"Reconstructed audio saved to : {output_fp}")

Streaming

Para ASR ou TTS em streaming, em que é necessário acompanhar os estados em cache, o parâmetro use_cache pode ser usado ao codificar ou decodificar o áudio:

import torch
from scipy.io import wavfile

from transformers import AutoFeatureExtractor, VibeVoiceAcousticTokenizerModel
from transformers.audio_utils import load_audio_librosa


model_id = "microsoft/VibeVoice-AcousticTokenizer"

# load model
feature_extractor = AutoFeatureExtractor.from_pretrained(model_id)
model = VibeVoiceAcousticTokenizerModel.from_pretrained(model_id, device_map="auto")
print("Model loaded on device:", model.device)
print("Model dtype:", model.dtype)

# load audio
audio = load_audio_librosa(
    "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Alice_woman.wav",
    sampling_rate=feature_extractor.sampling_rate,
)

# preprocess audio
inputs = feature_extractor(
    audio,
    sampling_rate=feature_extractor.sampling_rate,
    pad_to_multiple_of=3200,
).to(model.device, model.dtype)
print("Input audio shape:", inputs.input_values.shape)
# Input audio shape: torch.Size([1, 1, 224000])

# cache will be initialized after a first pass
encoder_cache = None
decoder_cache = None
with torch.no_grad():
    # set VAE sampling to False for deterministic output
    encoded_outputs = model.encode(inputs.input_values, sample=False, padding_cache=encoder_cache, use_cache=True)
    print("Latent shape:", encoded_outputs.latents.shape)
    # Latent shape: torch.Size([1, 70, 64])

    decoded_outputs = model.decode(encoded_outputs.latents, padding_cache=decoder_cache, use_cache=True)
    print("Reconstructed audio shape:", decoded_outputs.audio.shape)
    # Reconstructed audio shape: torch.Size([1, 1, 224000])

    # `padding_cache` can be extracted from the outputs for subsequent passes
    encoder_cache = encoded_outputs.padding_cache
    print("Number of cached encoder layers:", len(encoder_cache.per_layer_in_channels))
    # Number of cached encoder layers: 34
    decoder_cache = decoded_outputs.padding_cache
    print("Number of cached decoder layers:", len(decoder_cache.per_layer_in_channels))
    # Number of cached decoder layers: 34

# Save audio
output_fp = "vibevoice_acoustic_tokenizer_reconstructed.wav"
wavfile.write(output_fp, feature_extractor.sampling_rate, decoded_outputs.audio.squeeze().float().cpu().numpy())
print(f"Reconstructed audio saved to : {output_fp}")

VibeVoiceAcousticTokenizerConfig

classe transformers.VibeVoiceAcousticTokenizerConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonechannels: int = 1hidden_size: int = 64kernel_size: int = 7rms_norm_eps: float = 1e-05layer_scale_init_value: float = 1e-06initializer_range: float = 0.01num_filters: int = 32downsampling_ratios: list[int] | tuple[int, ...] = (2, 2, 4, 5, 5, 8)depths: list[int] | tuple[int, ...] = (3, 3, 3, 3, 3, 3, 8)hidden_act: str = 'gelu'ffn_expansion: int = 4vae_std: float = 0.625 )

Parâmetros

  • channels (int, opcional, padrão 1) — Número de canais de entrada.
  • hidden_size (int, opcional, padrão 64) — Dimensão das representações latentes.
  • kernel_size (int, opcional, padrão 7) — Tamanho do kernel para as camadas convolucionais.
  • rms_norm_eps (float, opcional, padrão 1e-05) — O epsilon usado pelas camadas de normalização rms.
  • layer_scale_init_value (float, opcional, padrão 1e-06) — Escala a ser usada nas camadas de autoatenção. 0.1 para base, 1e-6 para grande. Defina 0 para desativar a escala da camada.
  • initializer_range (float, opcional, padrão 0.01) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos.
  • num_filters (int, opcional, padrão 32) — Número de filtros na camada convolucional inicial, e dobra após cada downsampling.
  • downsampling_ratios (List[int], opcional, padrão [2, 2, 4, 5, 5, 8]) — Razões de downsampling para cada camada.
  • depths (List[int], opcional, padrão [3, 3, 3, 3, 3, 3, 8]) — Número de blocos ConvNeXt em cada estágio.
  • hidden_act (str, opcional, padrão gelu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo, "gelu", "relu", "silu", etc.
  • ffn_expansion (int, opcional, padrão 4) — Fator de expansão para redes feed-forward.
  • vae_std (float, opcional, padrão 0.625) — Desvio padrão da Gaussiana da qual a escala de ruído por amostra é extraída quando o ruído é adicionado aos latentes do codificador (sample=True).

Esta é a classe de configuração para armazenar a configuração de um VibeVoiceAcousticTokenizerModel. Ela é usada para instanciar um modelo Vibevoice Acoustic Tokenizer de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do microsoft/VibeVoice-1.5B

Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.

Exemplo:

>>> from transformers import VibeVoiceAcousticTokenizerModel, VibeVoiceAcousticTokenizerConfig

>>> # Initializing a VibeVoice Acoustic Tokenizer configuration
>>> configuration = VibeVoiceAcousticTokenizerConfig()

>>> # Initializing a model (with random weights)
>>> model = VibeVoiceAcousticTokenizerModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

VibeVoiceAcousticTokenizerEncoderConfig

classe transformers.VibeVoiceAcousticTokenizerEncoderConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonechannels: int = 1hidden_size: int = 64kernel_size: int = 7rms_norm_eps: float = 1e-05layer_scale_init_value: float = 1e-06initializer_range: float = 0.01num_filters: int = 32downsampling_ratios: list[int] | tuple[int, ...] = (2, 2, 4, 5, 5, 8)depths: list[int] | tuple[int, ...] = (3, 3, 3, 3, 3, 3, 8)hidden_act: str = 'gelu'ffn_expansion: int = 4vae_std: float = 0.625 )

Parâmetros

  • channels (int, opcional, padrão 1) — Número de canais de entrada.
  • hidden_size (int, opcional, padrão 64) — Dimensão das representações latentes.
  • kernel_size (int, opcional, padrão 7) — Tamanho do kernel para as camadas convolucionais.
  • rms_norm_eps (float, opcional, padrão 1e-05) — O epsilon usado pelas camadas de normalização rms.
  • layer_scale_init_value (float, opcional, padrão 1e-06) — Escala a ser usada nas camadas de autoatenção. 0.1 para base, 1e-6 para grande. Defina 0 para desativar a escala da camada.
  • initializer_range (float, opcional, padrão 0.01) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos.
  • num_filters (int, opcional, padrão 32) — Número de filtros na camada convolucional inicial, e dobra após cada downsampling.
  • downsampling_ratios (List[int], opcional, padrão [2, 2, 4, 5, 5, 8]) — Razões de downsampling para cada camada.
  • depths (List[int], opcional, padrão [3, 3, 3, 3, 3, 3, 8]) — Número de blocos ConvNeXt em cada estágio.
  • hidden_act (str, opcional, padrão gelu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo, "gelu", "relu", "silu", etc.
  • ffn_expansion (int, opcional, padrão 4) — Fator de expansão para redes feed-forward.
  • vae_std (float, opcional, padrão 0.625) — Desvio padrão da gaussiana da qual a escala de ruído por amostra é extraída quando o ruído é adicionado aos latentes do codificador (sample=True).

Esta é a classe de configuração para armazenar a configuração de um VibeVoiceAcousticTokenizerModel. Ela é usada para instanciar um modelo Vibevoice Acoustic Tokenizer de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do microsoft/VibeVoice-1.5B

Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.

VibeVoiceAcousticTokenizerDecoderConfig

classe transformers.VibeVoiceAcousticTokenizerDecoderConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonechannels: int = 1hidden_size: int = 64kernel_size: int = 7rms_norm_eps: float = 1e-05layer_scale_init_value: float = 1e-06initializer_range: float = 0.01num_filters: int = 32downsampling_ratios: list[int] | tuple[int, ...] = (2, 2, 4, 5, 5, 8)depths: list[int] | tuple[int, ...] = (3, 3, 3, 3, 3, 3, 8)hidden_act: str = 'gelu'ffn_expansion: int = 4vae_std: float = 0.625 )

Parâmetros

  • channels (int, opcional, padrão 1) — Número de canais de entrada.
  • hidden_size (int, opcional, padrão 64) — Dimensão das representações latentes.
  • kernel_size (int, opcional, padrão 7) — Tamanho do kernel para as camadas convolucionais.
  • rms_norm_eps (float, opcional, padrão 1e-05) — O epsilon usado pelas camadas de normalização rms.
  • layer_scale_init_value (float, opcional, padrão 1e-06) — Escala a ser usada nas camadas de autoatenção. 0.1 para base, 1e-6 para grande. Defina 0 para desativar a escala da camada.
  • initializer_range (float, opcional, padrão 0.01) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos.
  • num_filters (int, opcional, padrão 32) — Número de filtros na camada convolucional inicial, e dobra após cada downsampling.
  • downsampling_ratios (List[int], opcional, padrão [2, 2, 4, 5, 5, 8]) — Razões de downsampling para cada camada.
  • depths (List[int], opcional, padrão [3, 3, 3, 3, 3, 3, 8]) — Número de blocos ConvNeXt em cada estágio.
  • hidden_act (str, opcional, padrão gelu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo, "gelu", "relu", "silu", etc.
  • ffn_expansion (int, opcional, padrão 4) — Fator de expansão para redes feed-forward.
  • vae_std (float, opcional, padrão 0.625) — Desvio padrão da gaussiana da qual a escala de ruído por amostra é extraída quando o ruído é adicionado aos latentes do codificador (sample=True).

Esta é a classe de configuração para armazenar a configuração de um VibeVoiceAcousticTokenizerModel. Ela é usada para instanciar um modelo Vibevoice Acoustic Tokenizer de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do microsoft/VibeVoice-1.5B

Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.

VibeVoiceAcousticTokenizerFeatureExtractor

classe transformers.VibeVoiceAcousticTokenizerFeatureExtractor

< >

( feature_size = 1sampling_rate = 24000padding_value = 0.0normalize_audio = Truetarget_dB_FS = -25eps = 1e-06pad_to_multiple_of = 3200**kwargs )

Parâmetros

  • feature_size (int, opcional, padrão 1) — O número de canais.
  • sampling_rate (int, opcional, padrão 24000) — A taxa de amostragem na qual a forma de onda de áudio deve ser digitalizada, expressa em hertz (Hz).
  • padding_value (float, opcional, padrão 0.0) — O valor utilizado para preenchimento.
  • normalize_audio (bool, opcional, padrão True) — Se deve normalizar o áudio para um valor alvo em dB FS.
  • target_dB_FS (float, opcional, padrão -25) — dB FS alvo para normalização.
  • eps (float, opcional, padrão 1e-06) — Um valor pequeno para evitar divisão por zero durante a normalização.
  • pad_to_multiple_of (int, opcional, padrão 3200) — Preenche o áudio até um múltiplo deste valor, que deve corresponder ao comprimento do salto (hop length) do tokenizador acústico, ou seja, ao fator de redução de amostragem (downsampling) do seu codificador.

Constrói um extrator de recursos VibeVoiceAcousticTokenizer.

__call__

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]sampling_rate: int | None = Nonepadding: bool | str | transformers.utils.generic.PaddingStrategy | None = Truepad_to_multiple_of: int | None = Nonemax_length: int | None = Nonereturn_attention_mask: bool | None = Truereturn_tensors: str | None = 'pt'**kwargs )

Parâmetros

  • audio (np.ndarray, torch.Tensor, list[np.ndarray], list[torch.Tensor] — A sequência ou lote de sequências a serem processadas. Cada sequência pode ser um array numpy, um tensor torch, uma lista de arrays numpy ou uma lista de tensors torch.
  • sampling_rate (int, opcional) — A taxa de amostragem na qual a entrada de audio foi amostrada. É fortemente recomendável passar sampling_rate na chamada de forward para evitar erros silenciosos.
  • padding (bool, str ou PaddingStrategy, opcional, padrão é True) — Selecione uma estratégia para aplicar padding às sequências retornadas (de acordo com o lado de padding e o índice de padding do modelo) entre:
    • True ou 'longest': Preenche até a sequência mais longa do lote (ou não aplica preenchimento se apenas uma sequência for fornecida).
    • 'max_length': Preenche até o comprimento máximo especificado com o argumento max_length ou até o comprimento máximo aceitável de entrada para o modelo, caso esse argumento não seja fornecido.
    • False ou 'do_not_pad' (padrão): Sem padding (ou seja, pode gerar um lote com sequências de comprimentos diferentes).
  • pad_to_multiple_of (int, opcional) — Se definido, a sequência será preenchida até um múltiplo do valor fornecido. O padrão é self.pad_to_multiple_of se não for fornecido.

VibeVoiceAcousticTokenizerModel

classe transformers.VibeVoiceAcousticTokenizerModel

< >

( config: VibeVoiceAcousticTokenizerConfig )

Parâmetros

  • config (VibeVoiceAcousticTokenizerConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

VibeVoice, um tokenizador acústico com um codificador e um decodificador para tokens acústicos contínuos.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

encode

< >

( input_valuespadding_cache = Noneuse_cache = Nonesample = True )

Parâmetros

  • input_values (torch.FloatTensor de forma (batch_size, channels, sequence_length)) — Forma de onda de áudio de entrada a ser codificada em representação latente.
  • padding_cache (VibeVoiceAcousticTokenizerConv1dPaddingCache, opcional) — Objeto de cache para o modo de streaming, usado para manter os estados de convolução entre as camadas.
  • use_cache (bool, opcional) — Se deve usar cache para os estados de convolução.
  • sample (bool, opcional) — Indica se deve adicionar ruído gaussiano aos latentes (σ-VAE: a escala do ruído é extraída por item do lote de N(0, config.vae_std)). Se for False, a saída do codificador é retornada como está.

decode

< >

( latentspadding_cache = Noneuse_cache = False )

Parâmetros

  • latents (torch.FloatTensor de forma (batch_size, channels, sequence_length)) — Representação latente de entrada a ser decodificada de volta para áudio.
  • padding_cache (VibeVoiceAcousticTokenizerConv1dPaddingCache, opcional) — Objeto de cache para o modo de streaming, usado para manter os estados de convolução entre as camadas.
  • use_cache (bool, opcional) — Se deve usar cache para os estados de convolução.

forward

< >

( input_valuespadding_cache = Noneuse_cache = Falsesample = True**kwargs )

Parâmetros

  • input_values (torch.FloatTensor de forma (batch_size, channels, sequence_length)) — Forma de onda de áudio de entrada a ser codificada em representação latente.
  • padding_cache (VibeVoiceAcousticTokenizerConv1dPaddingCache, opcional) — Objeto de cache para o modo de streaming, usado para manter os estados de convolução entre as camadas. Observe que é utilizado apenas pelo decodificador.
  • use_cache (bool, opcional) — Se deve usar cache para os estados de convolução.
  • sample (bool, opcional) — Indica se deve adicionar ruído gaussiano aos latentes (σ-VAE: a escala do ruído é extraída por item do lote de N(0, config.vae_std)). Se for False, a saída do codificador é retornada como está.

O método forward do VibeVoiceAcousticTokenizerModel substitui o método especial __call__.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de Module em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

VibeVoiceAcousticTokenizerEncoderModel

classe transformers.VibeVoiceAcousticTokenizerEncoderModel

< >

( config: VibeVoiceAcousticTokenizerEncoderConfig )

forward

< >

( hidden_statespadding_cache = Noneuse_cache = False**kwargs )

VibeVoiceAcousticTokenizerDecoderModel

classe transformers.VibeVoiceAcousticTokenizerDecoderModel

< >

( config: VibeVoiceAcousticTokenizerDecoderConfig )

forward

< >

( hidden_statespadding_cache = Noneuse_cache = False**kwargs )

Update on GitHub