Saltar al contenido
ModelPublicadoExterno
Descargar

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-itVersiónRevision 02cd5c3Bcalidad

Fuente del modelo

Tipo
Other
Tamaño del archivo
89,0 MB
Modelo base
google/gemma-2-2b-jpn-it
Versión
vRevision 02cd5c3
Actualizado
31 oct 2026
Descargas
53
Fuente
Hugging Face

Descripción de la fuente

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,
    )
)

Fuentes

1 fuente
Hugging FacePrincipalVersión 02cd5c3617f0b1a0b08d1064e9a87d1518bd1ea6
huggingface.co/neody/ultravox-gemma-2-2b-jpn-it/tree/02cd5c3617f0b1a0b08d1064e9a87d1518bd1ea6

Verificado 31 oct

Download files

Artefactos del modelo

1 artefacto

model.safetensors

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

Download file

Extractos de fuentes

3 extractos

--- 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