Memperluas generative AI ke modalitas lain: text-to-image dengan Stable Diffusion 3.5 & FLUX.1, TTS/STT dengan Whisper, dan vision lewat VLM. Episode ini juga memandu membangun pipeline multimodal lengkap — input gambar menjadi deskripsi, lalu menjadi voice output.

Selama 13 episode, fokus kalian adalah teks — token, prompt, RAG, agent. Episode ini membuka cakrawala yang membuat generative AI 2026 begitu berbeda: multimodal. Model sekarang tidak hanya menulis, tetapi juga membuat gambar, mendengarkan suara, memahami video, dan bahkan menggabungkan semuanya dalam satu pipeline.
Mengapa penting? Karena produk AI produksi jarang murni teks: aplikasi bantu aksesibilitas butuh text-to-speech, customer support butuh transkripsi audio, dan content pipeline butuh membuat ilustrasi dari deskripsi. Di 2026, multimodal adalah default — dan engineer yang bisa merangkai modalitas adalah yang paling dicari.
Dasar teoretisnya sudah kita petakan di episode 1: diffusion model belajar membalik proses noise. Di 2026, dua ekosistem dominan:
| Model | Karakter | Penggunaan |
|---|---|---|
| Stable Diffusion 3.5 | Open-weight, kontrol prompt kuat, fleksibel | Self-host, fine-tune gaya |
| FLUX.1 | Kualitas foto/teks terbaik, cepat (schnell/dev) | Kualitas tertinggi, produksi |
| Ideogram / DALL·E / Imagen | API managed, teks dalam gambar bagus | Tanpa urusan GPU |
Praktik dengan Hugging Face Diffusers — self-host, tanpa API ketiga:
pip install diffusers accelerate safetensors transformersfrom diffusers import FluxPipeline
import torch
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
torch_dtype=torch.bfloat16,
)
pipe.enable_model_cpu_offload()
image = pipe(
"Ilustrasi peta kota futuristik, gaya flat vector, palet biru",
guidance_scale=0.0, # schnell tidak butuh guidance tinggi
max_sequence_length=256,
num_inference_steps=4,
).images[0]
image.save("peta-kota.png")Poin kunci praktik text-to-image:
Whisper (OpenAI) adalah STT andalan — akurat untuk banyak bahasa, bisa di-self-host lewat whisper.cpp atau API. Berguna untuk transkripsi meeting, customer support call, atau subtitle.
from openai import OpenAI
client = OpenAI()
with open("meeting.wav", "rb") as audio:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio,
language="id", # paksa bahasa Indonesia
)
print(transcript.text)Untuk self-host hemat GPU, faster-whisper adalah pilihan produksi yang umum:
pip install faster-whisperfrom faster_whisper import WhisperModel
model = WhisperModel("small", device="cpu", compute_type="int8")
segments, info = model.transcribe("meeting.wav", language="id")
print("bahasa terdeteksi:", info.language)
for seg in segments:
print(f"[{seg.start:.0f}s] {seg.text}")compute_type="int8" memungkinkan berjalan di CPU dengan kualitas lumayan — modalitas ini bisa dijalankan tanpa GPU, berbeda dari text-to-image.
Kebalikan dari Whisper: TTS menghasilkan audio dari teks. Pilihan managed (OpenAI TTS, ElevenLabs) dan open-weight (XTTTS, Kokoro):
resp = client.audio.speech.create(
model="gpt-4o-mini-tts",
voice="alloy",
input="Selamat datang di panduan audio kami.",
)
resp.stream_to_file("welcome.mp3")VLM memahami gambar — deskripsi, ekstraksi teks dari foto (OCR alami), menjawab pertanyaan visual, hingga grounding (menunjuk objek). Di episode 8 kita sudah memakai vision untuk RAG; di sini kita lihat kemampuannya lebih luas:
import base64
def b64(path):
with open(path, "rb") as f:
return base64.b64encode(f.read()).decode()
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": [
{"type": "text", "text": "Deskripsikan gambar ini dalam 3 kalimat, "
"lalu tebak merek & suasana tempatnya."},
{"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{b64('kafe.png')}"}},
]}],
)
print(resp.choices[0].message.content)VLM juga jadi tulang punggung vision RAG (episode 8) dan pengujian UI (screenshot → deskripsi bug).
Sekarang rangkai semuanya: gambar masuk → deskripsi teks → voice output. Ini pipeline yang sangat nyata untuk aplikasi aksesibilitas atau konten otomatis.
import base64
def image_to_voice(image_path):
# 1. VISION: gambar → deskripsi
with open(image_path, "rb") as f:
b64img = base64.b64encode(f.read()).decode()
desc = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": [
{"type": "text", "text": "Deskripsikan gambar untuk audio guide "
"dalam 2 kalimat bahasa Indonesia."},
{"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{b64img}"}},
]}],
).choices[0].message.content
# 2. TTS: deskripsi → audio
audio = client.audio.speech.create(
model="gpt-4o-mini-tts",
voice="alloy",
input=desc,
)
audio.stream_to_file("guide.mp3")
# 3. (opsional) STT untuk verifikasi
with open("guide.mp3", "rb") as f:
check = client.audio.transcriptions.create(
model="whisper-1", file=f, language="id")
return desc, "guide.mp3", check.text
desc, file, transcript = image_to_voice("museum.jpg")
print("DESKRIPSI:", desc)
print("VERIFIKASI STT:", transcript)Pipeline seperti ini — vision → LLM → TTS — adalah pola dasar dari audio description, asisten visual, dan konten otomatis.
Note
Perhatikan pola yang berulang: setiap modalitas adalah "alat" yang bisa dipanggil. Dalam arsitektur agent (episode 10-11), vision, STT, TTS bisa di-expose sebagai tools — model yang memutuskan kapan melihat gambar, kapan mendengar audio. Multimodal dan agentic bertemu di titik ini.
language="id".Inti yang harus dibawa pulang:
Di episode 15 selanjutnya kita akan masuk ke Evaluasi LLM & LLMOps — groundedness, faithfulness, hallucination, LLM-as-judge (RAGAS, DeepEval, LangSmith), prompt versioning, dataset evaluation, dan regression testing. Sampai jumpa di episode 15!