O áudio e a linguagem falada são fontes ricas de dados para capturar intenções do usuário, registrar informações sobre o mundo ao nosso redor e entender problemas específicos a serem resolvidos. A partir do Gemma 3n, é possível usar dados de áudio nas tarefas de comando e geração com o Gemma. Ele pode ser usado em várias tarefas de análise e interpretação de áudio, e foi treinado para lidar com as seguintes tarefas de processamento de fala em mais de 100 idiomas falados:
- Conversão de voz em texto (STT): também conhecido como reconhecimento automático de fala (ASR), usa dados de áudio da linguagem falada e os transcreve para texto no mesmo idioma. Saiba mais
- Tradução automática de fala (AST): também conhecida como conversão de voz em texto traduzido (S2TT), pega dados de áudio falados em um idioma e os traduz para texto em outro idioma. Saiba mais
Você pode usar esses recursos em vários aplicativos, como:
- Como criar interfaces de aplicativos controlados por voz
- Criar serviços de transcrição para reuniões ou palestras
- Ativar a funcionalidade de pesquisa por voz em ambientes multilíngues
Este guia fornece uma visão geral dos recursos de processamento de áudio do Gemma 3n, incluindo considerações sobre dados, exemplos de uso e práticas recomendadas.
Dados de áudio
Os dados de áudio digital podem ter vários formatos e níveis de resolução. Os formatos de áudio que você pode usar com a Gemma, como MP3 e WAV, são determinados pelo framework escolhido para converter dados de som em tensores. Confira algumas considerações específicas para preparar dados de áudio para processamento com a Gemma:
- Custo do token:cada segundo de áudio custa 6,25 tokens.
- Canais de áudio:os dados de áudio são processados como um único canal. Se você estiver usando áudio multicanal, como canais esquerdo e direito, considere reduzir os dados para um único canal removendo ou combinando os dados de som em um único canal.
- Duração do clipe:recomenda-se usar clipes de áudio de até 30 segundos, mas é possível processar durações maiores, até o tamanho da janela de contexto do modelo, subtraindo os tokens de saída solicitados.
- Taxa de amostragem:a taxa de processamento de áudio para o tokenizador é de 16 kHz com frames de 32 milissegundos.
- Profundidade de bits:o tokenizador de áudio usa dados de ponto flutuante de 32 bits para cada frame no intervalo [-1, 1] em cada amostra de áudio.
Se os dados de áudio que você planeja processar forem significativamente diferentes do processamento de entrada, principalmente em termos de canais, taxa de amostragem e profundidade de bits, considere reamostrar ou cortar os dados de áudio para corresponder à resolução de dados processada pelo modelo.
Codificação de áudio
Ao codificar dados de áudio com sua própria implementação de código para uso com a Gemma
3n, siga o processo de conversão recomendado. Se você estiver trabalhando
com arquivos de áudio codificados em um formato específico, como dados codificados em MP3 ou WAV,
primeiro decodifique-os em amostras usando uma biblioteca como ffmpeg. Depois que os dados forem decodificados, converta o áudio em formas de onda de ponto flutuante de 16 kHz de canal único float32 no intervalo [-1, 1]. Por exemplo, se você estiver trabalhando com arquivos WAV PCM de 16 bits assinados estéreo a 44,1 kHz, siga estas etapas:
- Fazer uma nova amostragem dos dados de áudio para 16 kHz
- Fazer o downmix de estéreo para mono calculando a média dos dois canais
- Converta de int16 para float32 e divida por 32768, 0 para dimensionar para o intervalo [-1, 1].
Conversão de voz em texto
A Gemma 3n é treinada para reconhecimento de fala multilíngue, permitindo transcrever entradas de áudio em vários idiomas para texto. Os exemplos de código a seguir mostram como solicitar ao modelo que transcreva texto de arquivos de áudio usando o Hugging Face Transformers:
import torch
from transformers import AutoProcessor, AutoModelForImageTextToText
GEMMA_MODEL_ID = "google/gemma-3n-E4B-it"
processor = AutoProcessor.from_pretrained(GEMMA_MODEL_ID, device_map="auto")
model = AutoModelForImageTextToText.from_pretrained(
GEMMA_MODEL_ID, torch_dtype="auto", device_map="auto")
messages = [
{
"role": "user",
"content": [
{"type": "audio", "audio": "http://localhost/recording_01.wav"},
{"type": "audio", "audio": "http://localhost/recording_02.wav"},
{"type": "audio", "audio": "http://localhost/recording_03.wav"},
{"type": "text", "text": "Transcribe these audio files in order"},
]
}
]
input_ids = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True, return_dict=True,
return_tensors="pt",
)
input_ids = input_ids.to(model.device, dtype=model.dtype)
outputs = model.generate(**input_ids, max_new_tokens=64)
text = processor.batch_decode(
outputs,
skip_special_tokens=False,
clean_up_tokenization_spaces=False
)
print(text[0])
Para um exemplo de código mais completo, incluindo a instalação da biblioteca, consulte a documentação Executar o Gemma com o Hugging Face Transformers, seção de áudio.
Tradução simultânea de fala
A Gemma 3n foi treinada para tarefas de fala multilíngue para tradução, permitindo que você traduza áudio falado diretamente para outro idioma. Os exemplos de código a seguir mostram como pedir ao modelo para traduzir áudio falado em texto usando os Transformers do Hugging Face:
import torch
from transformers import AutoProcessor, AutoModelForImageTextToText
GEMMA_MODEL_ID = "google/gemma-3n-E4B-it"
processor = AutoProcessor.from_pretrained(GEMMA_MODEL_ID, device_map="auto")
model = AutoModelForImageTextToText.from_pretrained(
GEMMA_MODEL_ID, torch_dtype="auto", device_map="auto")
messages = [
{
"role": "user",
"content": [
{"type": "audio", "audio": "https://ai.google.dev/gemma/docs/audio/roses-are.wav"},
{"type": "text", "text": "Transcribe this audio into English, and then translate it into French."},
]
}
]
input_ids = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True, return_dict=True,
return_tensors="pt",
)
input_ids = input_ids.to(model.device, dtype=model.dtype)
outputs = model.generate(**input_ids, max_new_tokens=64)
text = processor.batch_decode(
outputs,
skip_special_tokens=False,
clean_up_tokenization_spaces=False
)
print(text[0])
Para um exemplo de código mais completo, incluindo a instalação da biblioteca, consulte a documentação Executar o Gemma com o Hugging Face Transformers, seção de áudio.