Ir para o conteúdo
ModelListadosExterno
Baixar

Ultravox Gemma 2 2b Jpn It

import transformers import librosa import torch import numpy as np from typing import Dict, Any

TipoOtherModelo basegoogle/gemma-2-2b-jpn-itVersãoRevision 02cd5c3Bnota

Fonte do modelo

Tipo
Other
Tamanho do arquivo
89,0 MB
Modelo base
google/gemma-2-2b-jpn-it
Versão
vRevision 02cd5c3
Atualizado
31 de out. de 2026
Downloads
53
Fonte
Hugging Face

Descrição da fonte

import transformers
import librosa
import torch
import numpy as np
from typing import Dict, Any

model = transformers.AutoModel.from_pretrained(
    "neody/ultravox-gemma-2-2b-jpn-it", trust_remote_code=True
)
model.to("cuda", dtype=torch.bfloat16)
processor = transformers.AutoProcessor.from_pretrained(
    "neody/ultravox-gemma-2-2b-jpn-it", trust_remote_code=True
)
path = "record.wav"
audio, sr = librosa.load(path, sr=16000)


def preprocess(inputs: Dict[str, Any], device, dtype):
    turns: list = inputs.get("turns", [])

    audio = inputs.get("audio", None)
    # Convert to float32 if needed.
    if isinstance(audio, np.ndarray):
        if audio.dtype == np.float64:
            audio = audio.astype(np.float32)
        elif audio.dtype == np.int16:
            audio = audio.astype(np.float32) / np.float32(32768.0)
        elif audio.dtype == np.int32:
            audio = audio.astype(np.float32) / np.float32(2147483648.0)

    if audio is not None and (len(turns) == 0 or turns[-1]["role"] != "user"):
        prompt = inputs.get("prompt", "<|audio|>")
        if "<|audio|>" not in prompt:
            print(
                "Prompt does not contain '<|audio|>', appending '<|audio|>' to the end of the prompt."
            )

            prompt += " <|audio|>"
        turns.append({"role": "user", "content": prompt})

    text = processor.tokenizer.apply_chat_template(
        turns, add_generation_prompt=True, tokenize=False
    )

    if "sampling_rate" not in inputs and audio is not None:
        print(
            "No sampling rate provided, using default of 16kHz. We highly recommend providing the correct sampling rate."
        )

    output = processor(
        text=text,
        audio=audio,
        sampling_rate=inputs.get("sampling_rate", 16000),
    )
    if "audio_values" in output:
        output["audio_values"] = output["audio_values"].to(device, dtype)
    return output.to(device, dtype)


turns = []
print(
    processor.tokenizer.decode(
        model.generate(
            **preprocess(
                {"audio": audio, "turns": turns, "sampling_rate": sr},
                "cuda",
                torch.bfloat16,
            ),
            max_new_tokens=300,
        ).squeeze(),
        skip_special_tokens=True,
    )
)

Fontes

1 fonte
Hugging FacePrimárioVersão 02cd5c3617f0b1a0b08d1064e9a87d1518bd1ea6
huggingface.co/neody/ultravox-gemma-2-2b-jpn-it/tree/02cd5c3617f0b1a0b08d1064e9a87d1518bd1ea6

Verificado 31 de out.

Download files

Artefatos de modelo

1 artefato

model.safetensors

safetensors · BF16 (unverified) · 89,0 MB · SHA-256 844a3876dbf4…187e · Hugging Face

Download file

Trechos de fonte

3 trechos

--- language: - ja base_model: - google/gemma-2-2b-jpn-it pipeline_tag: audio-text-to-text license: gemma datasets: - fixie-ai/common_voice_17_0 --- ```py import transformers import librosa import torch import numpy as np from typing import Dict, Any model = transformers.AutoModel.from_pretrained( "neody/ultravox-gemma-2-2b-jpn-it", trust_remote_code=True ) model.to("cuda", dtype=torch.bfloat16) processor = transformers.AutoProcessor.from_pretrained( "neody/ultravox-gemma-2-2b-jpn-it", trust_remote_code=True ) path = "record.wav" audio, sr = librosa.load(path, sr=16000) def preprocess(inputs: Dict[str, Any], device, dtype): turns: list = inputs.get("turns", []) audio = inputs.get("audio", None) # Convert to float32 if needed. if isinstance(audio, np.ndarray): if audio.dtype == np.float64: audio = audio.astype(np.float32) elif audio.dtype == np.int16: audio = audio.astype(np.float32) / np.float32(32768.0) elif audio.dtype == np.int32: audio = audio.astype(np.float32) / np.float32(2147483648.0) if audio is not None and (len(turns) == 0 or turns[-1]["role"] != "user"): prompt = inputs.get("prompt", "<|audio|>") if "<|audio|>" not in prompt: print( "Prompt does not contain '<|audio|>', appending '<|audio|>' to the end of the prompt." ) prompt += " <|audio|>" turns.append({"role": "user", "content": prompt}) text = processor.tokenizer.apply_chat_template( turns, add_generation_prompt=True, tokenize=False ) if "sampling_rate" not in inputs and audio is not None: print( "No sampling rate provided, using default of 16kHz. We highly recommend providing the correct sampling rate." ) output = processor( text=text, audio=audio, sampling_rate=inputs.get("sampling_rate", 16000), ) if "audio_values" in output: output["audio_values"] = output["audio_values"].to(device, dtype) return output.to(device, dtype) turns = [] print( processor.tokenizer.decode( model.generate( **preprocess( {"audio": audio, "turns": turns, "sampling_rate": sr}, "cuda", torch.bfloat16, ), max_new_tokens=300, ).squeeze(), skip_special_tokens=True, ) ) ```

Source context: 53 downloads · 1 likes · Pipeline audio-text-to-text · Repo neody/ultravox-gemma-2-2b-jpn-it

Source context: 26 downloads · 1 likes · Pipeline audio-text-to-text · Repo neody/ultravox-gemma-2-2b-jpn-it