DEV Community

Dokuz sanal sunucu, üç platform, bir kota duvarı: karakter videosu hattını kurmak (Bölüm 2)

Birinci bölümde bir haber sitesinin yayın akışını ajana devrettiğimi yazmıştım. O yazıdan sonra sistemin en kırılgan yerini kurdum: sosyal medyaya konuşan sanal sunucular. Dokuz kategorinin dokuz karakteri var, her biri kendi videosuyla kendi bölümünü tanıtıyor. Bu yazı o hattın kurulum günlüğü. İçinde çalışan kod da var, çöpe giden yedi deneme de. Neden karakter? Statik bir yazı linkini X'e atınca ölçüm net: kart önizlemesi görünür, kimse durmaz. Dikey videoda konuşan bir insan varsa akış duruyor. Elimde gerçek sunucu yok, o yüzden karakterleri üretiyoruz: Elif (bilim, psikoloji), Arda (oyun), Doruk (doğa ve kamp), Dr. Sinan (tıp), Defne (kitap), Süreyya (tarot), Meriç (dünya basını), Elvan (arkeoloji), Duru (güzellik). Kural basit ve sabit: kategori → karakter eşlemesi değişmez. Aynı etiket her zaman aynı yüz ve aynı sesle geliyor. Takipçi ikinci videoda karakteri tanıyor. Üretim hattı şöyle: konu seçimi → yazı yayını → başlangıç karesi (t2i) → konuşma metni (4 kısa cümle) → i2v video (12 sn, ses dahil) → Whisper doğrulama (eşik 0,80) → kafa1milyon.com etiketi (ffmpeg drawtext) → X + Instagram + YouTube kuyruğu Kritik yer dördüncü satır. Onu anlatayım. Telaffuz savaşı: modelin metni "düzeltmesi" Video modeline Türkçe bir cümle verip "bunu oku" dediğinizde, model okumakla kalmıyor. Metni kendi kendine yeniden yazıyor. Bir inek videosu altı kez çöpe gitti. Model "bilim insanları ile birlikte de bilim insanları" diye kelimeyi tekrarladı. Tıp videosunda "insülin" kelimesini "insülün" diye söyledi ve cümleyi kendi kendine "Tip 1 diyabette beta hücreleri..." diye temkinli bilim diline çevirdi. Bir başkasında "eureka" kelimesi "ürika" oldu. Yedi denemeden sonra kural dosyasına şunlar girdi: - Konuşma metni en fazla 4 cümle, cümle başına 4-7 kelime. - Yabancı kökenli ve teknik kelime yok. "İnsülin" yerine "şekeri ayarlayan hücreler". - İddialı cümle yok. Model abartıyı düzeltmeye çalışıp metni bozuyor; cümleyi baştan dürüst kurmak gerekiyor. - Prompt'a "do not reword or rephrase anything, read the text exactly as written", "no stutter, no repeated words" gibi maddeler eklendi. - Süre 10 saniye değil 12 saniye seçiliyor. Dört cümle 10 saniyeye sıkışınca kelimeler yutuluyor. En ilginç maddeyi en sona bıraktım. Bir kamp videosunda "İstanbul'a yakın bir yayla var" cümlesindeki "yayla" kelimesi 0,26 saniyeye sıkıştı ve "aile" gibi duyuldu. Anahtar kelime cümlenin başına gelince model üzerinden hızlı geçiyor. Kural: konunun anahtar kelimesi cümlenin ortasına, çevresinde nefes olacak şekilde konur. "Bu yayla İstanbul'a çok yakın" gibi. Doğrulama kapısı: kulakla değil olasılıkla "Kulağıma tuhaf geldi" ölçüt değil. Her klip üretimden sonra transkripsiyona giriyor ve kelime bazlı olasılıklara bakıyoruz: from faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cpu", compute_type="int8") segments, _ = model.transcribe(ses, language="tr", word_timestamps=True) for s in segments: for w in s.words: if w.probability kaggle kernels output -p . İlk tur sessizce öldü: log'da traceback yoktu, model yükleme mesajlarından sonra çıktı bitiyordu. Traceback olmadan ölmek genelde tek bir şey demek, bellek. İkinci turda bellek kipleri sırayla deniyor ve her denemenin dönüş kodu basılıyor; -9 görürsem tanı kesinleşecek. Sonucu bir sonraki bölümde yazacağım. Çalışırsa hat tarayıcıdan tamamen kurtulacak; çalışmazsa onu da yazacağım. Bu seride kod kadar başarısız denemeleri de tutuyorum, çünkü altı ay sonra "bunu neden böyle yaptık" sorusunun cevabı orada duruyor. Top comments (0)

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.