Model reference · open weights

Raon-Speech

LLMs KRAFTON Omni (any→any) 1 build Non-commercial 3k dl/mo

Raon-Speech is an open-weight language model from KRAFTON. Raon-Speech-9B (BF16) weighs 18.1 GB; the smallest configuration that runs it is RTX 4090 24 GB.

  • Raon-Speech is a 9.0B-parameter speech language model developed by KRAFTON that supports speech understanding, answering, and generation in English and Korean.
  • It functions as an end-to-end multimodal model capable of performing speech-to-text, text-to-speech, and spoken question-answering tasks within a single unified architecture.
  • The model is released under the cc-by-nc-4.0 license and is designed for low-latency, real-time speech generation.

Summary of the KRAFTON/Raon-Speech-9B model card, 2026-10-01

What it is

Released byKRAFTON
Released2026-03-30
Parameters9.0B
VRAM18.1 GB for the weights

What it runs on

Memory and cards for Raon-Speech-9B (BF16)

18.1 GBweights, file size
762 MBruntime overhead, at least

How much memory each request adds isn't estimated yet for this architecture. The weights need at least the cards below, plus room for the context.

CardWeights alone
RTX 3060 12 GB … RTX 4060 Ti 16 GB
2 smaller cards
does not fit
RTX 3090 24 GBfits
RTX 4090 24 GBfits
RTX 5090 32 GBfits
L40S 48 GBfits
A100 80 GBfits
H100 80 GBfits
RTX PRO 6000 Blackwell 96 GBfits
DGX Spark (GB10) 128 GB unifiedfits
H200 141 GBfits
B200 180 GBfits

From the model card

What KRAFTON says about Raon-Speech

Read the model card

Raon-Speech is a 9B-parameter speech language model that supports state-of-the-art speech understanding, answering and generation in English and Korean. This model successfully transforms a pre-trained LLM into a SpeechLM to both understand and generate speech without compromising its original language capabilities. It trains on millions of hours of English-Korean speech-text datasets with the following training stages: (1) speech encoder-decoder alignment, (2) end-to-end SpeechLM pre-training, and (3) multi-reward DPO-based post-training.

Key Features

  • End-to-End Speech Language Model: 9B-parameter multimodal model built on Qwen3 (36 layers, 4096 hidden dim), Qwen3OmniMoeAudioEncoder (24 layers), Mimi codec (32 quantizers), and ECAPA-TDNN speaker encoder.
  • Bilingual Support: State-of-the-art speech understanding, answering, and generation in both English and Korean.
  • Multi-Task Capabilities: Supports STT (audio → text), TTS (text → audio), TextQA (text + audio → text), and SpeechChat (audio → text) in a single unified model.
  • Speaker Voice Conditioning: TTS with optional speaker reference audio for voice cloning via ECAPA-TDNN embeddings.
  • TTS Continuation: Generate speech that naturally continues from a reference audio, with prefill-based continuation for seamless prosody.
  • Multi-Reward DPO Post-Training: Three-stage training pipeline — (1) speech encoder-decoder alignment, (2) end-to-end SpeechLM pre-training, and (3) multi-reward DPO-based post-training — for high-quality speech generation.
  • HuggingFace Transformers Integration: Load and run directly via AutoModel.from_pretrained with trust_remote_code=True — no custom package installation required.

Speech Samples

Natural speech generated by Raon-Speech-9B via text-to-speech, synthesized directly from the target transcript.

Korean

후기 근데 후기 어떻게 보면 내가 좀 인터넷으로 사는 거는 좀 믿음이 안가는 거 같애. 좀 하도 뭐라 해야 되지 좀 그렇게 정품이라고 해도

아 근데 어 일단 대전에서만 하는 게 아니라 이제 대전 어차피 그냥 대전 이번 달까지 월세 그거 냈으니까 그냥 있다가

English

I don't want to make it a whole thing, but like, the dishes have been piling up again and I— I don't know, I feel weird bringing it up every single time.

It says it was supposed to arrive yesterday, but it's still just sitting there in transit or whatever, so I don't know, I guess I'll just keep waiting.

Benchmark Results

Raon-Speech is optimized for low-latency, real-time speech generation while maintaining strong performance across ASR, speech generation, spoken QA, audio understanding, and text QA tasks.

Measured with LibriSpeech test-clean samples on single-GPU setups via streaming TTS. All values are averaged.

MetricRTX 6000 ProL40S
RTF0.27 (3.7× real-time)0.45 (2.2× real-time)
TTFT617 ms887 ms
TBT135 ms233 ms
  • RTF (Real-Time Factor): Lower is faster. Values below 1.0 mean faster-than-real-time synthesis.
  • TTFT (Time to First Token): Latency until the first audio chunk is returned.
  • TBT (Time Between Tokens): Average interval between consecutive audio chunks.

Requirements

pip install 'transformers>=4.57.1,<5.0' torch torchaudio soundfile accelerate

# Optional
pip install speechbrain  # for TTS with speaker voice conditioning
pip install gradio       # for Gradio demo

Quick Start

Option 1: Load from Hub (recommended)

No pip install raon needed.

from transformers import AutoConfig
from transformers.dynamic_module_utils import get_class_from_dynamic_module

MODEL_ID = "KRAFTON/Raon-Speech-9B"

config = AutoConfig.from_pretrained(MODEL_ID, trust_remote_code=True)
RaonPipeline = get_class_from_dynamic_module(
    "modeling_raon.RaonPipeline",
    MODEL_ID,
    revision=getattr(config, "_commit_hash", None),
)

pipe = RaonPipeline(MODEL_ID, device="cuda", dtype="bfloat16")

Option 2: With raon package installed

git clone https://github.com/krafton-ai/Raon-Speech.git
cd Raon-Speech/raon
pip install -e .  # or: uv sync
from raon import RaonPipeline

# From Hub (local code + Hub weights)
pipe = RaonPipeline("KRAFTON/Raon-Speech-9B")

# From local path
pipe = RaonPipeline("/path/to/raon-model")

Tasks

STT (Audio → Text)
text = pipe.stt("audio.wav")
TTS (Text → Audio)
# Without speaker conditioning
audio, sr = pipe.tts("Hello, how are you?")
pipe.save_audio((audio, sr), "output.wav")

# With speaker conditioning (requires speechbrain)
audio, sr = pipe.tts("Hello, how are you?", speaker_audio="speaker_ref.wav")
TextQA (Text + Audio → Text)
answer = pipe.textqa("What is the speaker saying?", audio="audio.wav")
SpeechChat (Audio → Text)
answer = pipe.speech_chat("question.wav")
Chat (Multimodal)
messages = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": "audio.wav"},
            {"type": "text", "text": "Transcribe and summarise this audio."},
        ],
    },
]
response = pipe.chat(messages)

Deployment (vLLM-Omni)

1. Clone & Build

git clone https://github.com/krafton-ai/vllm-omni.git
cd vllm-omni
docker build -f docker/Dockerfile.ci -t vllm-omni .

2. Serve

docker run --rm --gpus all \
  --shm-size=16g \
  -p 8000:8000 \
  vllm-omni \
  bash -c "vllm serve KRAFTON/Raon-Speech-9B --omni --port 8000 --trust-remote-code"

3. Test — TTS

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Hello, how are you?",
    "model": "KRAFTON/Raon-Speech-9B",
    "response_format": "wav"
  }' --output output.wav

4. Test — TTS with voice cloning

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Hello, how are you?",
    "model": "KRAFTON/Raon-Speech-9B",
    "ref_audio": "data:audio/wav;base64,'$(ba

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms