ai-sage/GigaChat3.1-Audio-10B-A1.8B

Model

GigaChat Audio 10B (A1.8B)

55

3 commits

1 linked in READMEs

updated Jul 14, 2026

See the code

README

GigaChat Audio 10B (A1.8B)

GigaChat Audio 10B is an audio-native LLM built on top of the GigaChat 3.1 Lightning text model. A Conformer speech encoder and a modality adapter feed audio embeddings directly into a Mixture-of-Experts decoder, so the model keeps the text quality of its base while adding speech understanding.

Capabilities: audio question answering and classification, temporal grounding (localization in long audio, timestamped event descriptions, audio summarization with timestamps), tool-use, and text-only tasks.

The temporal grounding skills are trained on TimeGround-1M โ€” a purpose-built dataset of long-form audio paired with time-aligned annotations.

Evaluation

1. Core audio tasks vs open models

TaskSetMetricGigaChat Audio (10B-A1.8B)Voxtral (3B)Phi-4 (4B)Qwen3-Omni (30B-A3B)
Audio QAMMAUacc โ†‘62.259.868.374.7
Audio QAMMLU-speechacc โ†‘50.338.835.172.2
Audio mathMQAacc โ†‘72.535.342.086.7
Audio QA (ru)RuBQacc โ†‘60.023.42.343.7
Temporal Localizationโ‰ค10mmIoU โ†‘40.33.40.212.9
Temporal Localization20โ€“60mmIoU โ†‘48.30.10.20.1
EmotionDusha crowdacc โ†‘90.043.911.477.2
EmotionDusha podcastacc โ†‘92.479.67.280.7
ASR (ru)Golos crowdWER โ†“14.725.9180.013.1
ASR (ru)Golos farfieldWER โ†“9.730.3188.718.4
ASR (ru)FLEURS ruWER โ†“4.47.8208.53.3
ASR (en)FLEURS enWER โ†“6.54.04.25.0
TranslationFLEURS ruโ†’enBLEU โ†‘33.434.00.133.8
TranslationFLEURS enโ†’ruBLEU โ†‘26.021.419.929.3

2. Timing tasks (detailed)

Full timing metrics across length buckets

TL โ€” temporal localization: find when something is discussed (mIoU vs the reference span). TD โ€” timestamped descriptions of audio events (overall grade 0โ€“5). SUM โ€” long-audio summarization with timestamps; single score = mean of factual accuracy, timing structure and audio coverage with timestamps.

MetricBucketGigaChat Audio (10B-A1.8B)Voxtral (3B)Phi-4 (4B)Qwen3-Omni (30B-A3B)
TL mIoU โ†‘โ‰ค10m40.33.40.212.9
TL mIoU โ†‘10โ€“20m46.80.00.20.0
TL mIoU โ†‘20โ€“60m48.30.10.20.1
TL mIoU โ†‘60โ€“120m48.90.93.74.6
TL mIoU โ†‘AMI meeting30.30.00.00.0
TD overall โ†‘ (0โ€“5)โ‰ค10m3.452.892.623.23
TD overall โ†‘ (0โ€“5)10โ€“20m3.212.332.072.49
TD overall โ†‘ (0โ€“5)20โ€“60m3.272.151.952.17
TD overall โ†‘ (0โ€“5)60โ€“120m3.261.451.211.84
SUM overall โ†‘โ‰ค10m71.664.126.265.7
SUM overall โ†‘10โ€“20m71.458.923.054.8
SUM overall โ†‘20โ€“60m67.950.221.443.8
SUM overall โ†‘60โ€“120m55.440.19.817.3

3. Text quality vs the text base model

Adding the audio modality shifts text quality: some benchmarks regress (MMLU-Pro, IFEval-ru, BBH), others improve (RuBQ, GPQA Diamond).

BenchmarkText 10bAudio 10bฮ”
MMLU_PRO_EN62.0452.86โˆ’9.18
RUBQ (ru)67.4668.91+1.45
IFEVAL (ru)66.2262.35โˆ’3.87
BBH75.7268.46โˆ’7.26
GPQA Diamond39.7340.91+1.18

Quickstart (Transformers)

import torch
from transformers import AutoModelForCausalLM, AutoProcessor

model_name = "ai-sage/GigaChat3.1-Audio-10B-A1.8B"
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_name, trust_remote_code=True, dtype=torch.bfloat16, device_map="cuda:0",
)

messages = [{"role": "user", "content": [
    {"type": "audio", "path": "90min_lecture.wav"},
    {"type": "text", "text": "When does the speaker mention Star Wars midi-chlorians?"},
]}]
inputs = processor.prepare_for_inference(messages, device=model.device)
output_ids = model.generate(**inputs, max_new_tokens=256)
answer_ids = output_ids[0, inputs["input_ids"].shape[1]:]
print(processor.decode(answer_ids))
# > ... in the interval 01:27:46 to 01:27:53. In this segment they explain ...

vLLM (single GPU, native multimodal)

Both encoder and decoder run inside vLLM. compilation_config disables torch.compile (needed for the Conformer tower); max_num_batched_tokens sizes the audio encoder cache (~90 min is 33k tokens):

import librosa
import os
from transformers import AutoProcessor
from vllm import LLM, SamplingParams

os.environ.setdefault("VLLM_WORKER_MULTIPROC_METHOD", "spawn")

model_name = "ai-sage/GigaChat3.1-Audio-10B-A1.8B"


def main():
    processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
    llm = LLM(
        model=model_name,
        trust_remote_code=True,
        max_model_len=65536,
        max_num_batched_tokens=65536,
        limit_mm_per_prompt={"audio": 1},
        compilation_config={"mode": 0, "cudagraph_mode": "FULL"},
    )

    messages = [{"role": "user", "content": [
        {"type": "audio", "path": "90min_lecture.wav"},
        {"type": "text", "text": "When does the speaker mention Star Wars midi-chlorians?"},
    ]}]
    text, audio_paths = processor.render_prompt(messages)
    wav, _ = librosa.load(audio_paths[0], sr=16000, mono=True)
    out = llm.generate(
        {"prompt": text, "multi_modal_data": {"audio": [(wav, 16000)]}},
        SamplingParams(temperature=0.0, max_tokens=256),
    )
    print(processor.decode(out[0].outputs[0].token_ids))
    # > ... in the interval 01:27:46 to 01:27:53. In this segment they explain ...


if __name__ == "__main__":
    main()

Throughput

Single-request decode speed on one H100 (vLLM 0.18.0, bf16, greedy), by amount of audio held in context:

In-context audioDecode throughput (tok/s)
โ‰ค 10 min242
10โ€“20 min233
20โ€“60 min225
60โ€“120 min211

Audio features (encoder + adapter)

model.encode_audio returns the LLM-space audio embeddings:

spec = processor.feature_extractor.process("audio.wav")   # (frames, 64) log-mel
specs = spec.unsqueeze(0).to(model.device, torch.bfloat16)
lengths = torch.tensor([spec.shape[0]], device=model.device)
feats, feat_lengths = model.encode_audio(specs, lengths)   # (1, tokens, hidden)
  • torch 2.10.0, torchaudio 2.10.0
  • transformers 4.57.6
  • vllm 0.18.0
  • flash-attn 2.8.3

Citation

If you use GigaChat Audio in your research, please cite:

@misc{kutsakov2026_gigachataudio,
  title         = {{GigaChat Audio}: Time-aware Large Audio Language Model},
  author        = {Kutsakov, Aleksandr and
                   Sadovina, Mariia and
                   Gospodinov, Georgii and
                   Maximenko, Alexandr and
                   Kutuzov, Oleg and
                   Bogomolov, Pavel and
                   Minkin, Fyodor},
  year          = {2026},
  eprint        = {2607.10387},
  archivePrefix = {arXiv},
  primaryClass  = {eess.AS},
  url           = {https://arxiv.org/abs/2607.10387},
  note          = {Accepted to Interspeech 2026}
}
audio
audio-understanding
conversational
custom_code
endpoints_compatible
gigachat_audio
multimodal
safetensors
speech
speech-translation
temporal-grounding
text-generation
transformers

Contributors

Alexander4127

3 commits

ai-sage/GigaChat3.1-Audio-10B-A1.8B

Model

GigaChat Audio 10B (A1.8B)

55

3 commits

1 linked in READMEs

updated Jul 14, 2026

See the code

README

GigaChat Audio 10B (A1.8B)

GigaChat Audio 10B is an audio-native LLM built on top of the GigaChat 3.1 Lightning text model. A Conformer speech encoder and a modality adapter feed audio embeddings directly into a Mixture-of-Experts decoder, so the model keeps the text quality of its base while adding speech understanding.

Capabilities: audio question answering and classification, temporal grounding (localization in long audio, timestamped event descriptions, audio summarization with timestamps), tool-use, and text-only tasks.

The temporal grounding skills are trained on TimeGround-1M โ€” a purpose-built dataset of long-form audio paired with time-aligned annotations.

Evaluation

1. Core audio tasks vs open models

TaskSetMetricGigaChat Audio (10B-A1.8B)Voxtral (3B)Phi-4 (4B)Qwen3-Omni (30B-A3B)
Audio QAMMAUacc โ†‘62.259.868.374.7
Audio QAMMLU-speechacc โ†‘50.338.835.172.2
Audio mathMQAacc โ†‘72.535.342.086.7
Audio QA (ru)RuBQacc โ†‘60.023.42.343.7
Temporal Localizationโ‰ค10mmIoU โ†‘40.33.40.212.9
Temporal Localization20โ€“60mmIoU โ†‘48.30.10.20.1
EmotionDusha crowdacc โ†‘90.043.911.477.2
EmotionDusha podcastacc โ†‘92.479.67.280.7
ASR (ru)Golos crowdWER โ†“14.725.9180.013.1
ASR (ru)Golos farfieldWER โ†“9.730.3188.718.4
ASR (ru)FLEURS ruWER โ†“4.47.8208.53.3
ASR (en)FLEURS enWER โ†“6.54.04.25.0
TranslationFLEURS ruโ†’enBLEU โ†‘33.434.00.133.8
TranslationFLEURS enโ†’ruBLEU โ†‘26.021.419.929.3

2. Timing tasks (detailed)

Full timing metrics across length buckets

TL โ€” temporal localization: find when something is discussed (mIoU vs the reference span). TD โ€” timestamped descriptions of audio events (overall grade 0โ€“5). SUM โ€” long-audio summarization with timestamps; single score = mean of factual accuracy, timing structure and audio coverage with timestamps.

MetricBucketGigaChat Audio (10B-A1.8B)Voxtral (3B)Phi-4 (4B)Qwen3-Omni (30B-A3B)
TL mIoU โ†‘โ‰ค10m40.33.40.212.9
TL mIoU โ†‘10โ€“20m46.80.00.20.0
TL mIoU โ†‘20โ€“60m48.30.10.20.1
TL mIoU โ†‘60โ€“120m48.90.93.74.6
TL mIoU โ†‘AMI meeting30.30.00.00.0
TD overall โ†‘ (0โ€“5)โ‰ค10m3.452.892.623.23
TD overall โ†‘ (0โ€“5)10โ€“20m3.212.332.072.49
TD overall โ†‘ (0โ€“5)20โ€“60m3.272.151.952.17
TD overall โ†‘ (0โ€“5)60โ€“120m3.261.451.211.84
SUM overall โ†‘โ‰ค10m71.664.126.265.7
SUM overall โ†‘10โ€“20m71.458.923.054.8
SUM overall โ†‘20โ€“60m67.950.221.443.8
SUM overall โ†‘60โ€“120m55.440.19.817.3

3. Text quality vs the text base model

Adding the audio modality shifts text quality: some benchmarks regress (MMLU-Pro, IFEval-ru, BBH), others improve (RuBQ, GPQA Diamond).

BenchmarkText 10bAudio 10bฮ”
MMLU_PRO_EN62.0452.86โˆ’9.18
RUBQ (ru)67.4668.91+1.45
IFEVAL (ru)66.2262.35โˆ’3.87
BBH75.7268.46โˆ’7.26
GPQA Diamond39.7340.91+1.18

Quickstart (Transformers)

import torch
from transformers import AutoModelForCausalLM, AutoProcessor

model_name = "ai-sage/GigaChat3.1-Audio-10B-A1.8B"
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_name, trust_remote_code=True, dtype=torch.bfloat16, device_map="cuda:0",
)

messages = [{"role": "user", "content": [
    {"type": "audio", "path": "90min_lecture.wav"},
    {"type": "text", "text": "When does the speaker mention Star Wars midi-chlorians?"},
]}]
inputs = processor.prepare_for_inference(messages, device=model.device)
output_ids = model.generate(**inputs, max_new_tokens=256)
answer_ids = output_ids[0, inputs["input_ids"].shape[1]:]
print(processor.decode(answer_ids))
# > ... in the interval 01:27:46 to 01:27:53. In this segment they explain ...

vLLM (single GPU, native multimodal)

Both encoder and decoder run inside vLLM. compilation_config disables torch.compile (needed for the Conformer tower); max_num_batched_tokens sizes the audio encoder cache (~90 min is 33k tokens):

import librosa
import os
from transformers import AutoProcessor
from vllm import LLM, SamplingParams

os.environ.setdefault("VLLM_WORKER_MULTIPROC_METHOD", "spawn")

model_name = "ai-sage/GigaChat3.1-Audio-10B-A1.8B"


def main():
    processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
    llm = LLM(
        model=model_name,
        trust_remote_code=True,
        max_model_len=65536,
        max_num_batched_tokens=65536,
        limit_mm_per_prompt={"audio": 1},
        compilation_config={"mode": 0, "cudagraph_mode": "FULL"},
    )

    messages = [{"role": "user", "content": [
        {"type": "audio", "path": "90min_lecture.wav"},
        {"type": "text", "text": "When does the speaker mention Star Wars midi-chlorians?"},
    ]}]
    text, audio_paths = processor.render_prompt(messages)
    wav, _ = librosa.load(audio_paths[0], sr=16000, mono=True)
    out = llm.generate(
        {"prompt": text, "multi_modal_data": {"audio": [(wav, 16000)]}},
        SamplingParams(temperature=0.0, max_tokens=256),
    )
    print(processor.decode(out[0].outputs[0].token_ids))
    # > ... in the interval 01:27:46 to 01:27:53. In this segment they explain ...


if __name__ == "__main__":
    main()

Throughput

Single-request decode speed on one H100 (vLLM 0.18.0, bf16, greedy), by amount of audio held in context:

In-context audioDecode throughput (tok/s)
โ‰ค 10 min242
10โ€“20 min233
20โ€“60 min225
60โ€“120 min211

Audio features (encoder + adapter)

model.encode_audio returns the LLM-space audio embeddings:

spec = processor.feature_extractor.process("audio.wav")   # (frames, 64) log-mel
specs = spec.unsqueeze(0).to(model.device, torch.bfloat16)
lengths = torch.tensor([spec.shape[0]], device=model.device)
feats, feat_lengths = model.encode_audio(specs, lengths)   # (1, tokens, hidden)
  • torch 2.10.0, torchaudio 2.10.0
  • transformers 4.57.6
  • vllm 0.18.0
  • flash-attn 2.8.3

Citation

If you use GigaChat Audio in your research, please cite:

@misc{kutsakov2026_gigachataudio,
  title         = {{GigaChat Audio}: Time-aware Large Audio Language Model},
  author        = {Kutsakov, Aleksandr and
                   Sadovina, Mariia and
                   Gospodinov, Georgii and
                   Maximenko, Alexandr and
                   Kutuzov, Oleg and
                   Bogomolov, Pavel and
                   Minkin, Fyodor},
  year          = {2026},
  eprint        = {2607.10387},
  archivePrefix = {arXiv},
  primaryClass  = {eess.AS},
  url           = {https://arxiv.org/abs/2607.10387},
  note          = {Accepted to Interspeech 2026}
}
audio
audio-understanding
conversational
custom_code
endpoints_compatible
gigachat_audio
multimodal
safetensors
speech
speech-translation
temporal-grounding
text-generation
transformers

Contributors

Alexander4127

3 commits