Burada sınırsız ve güçlü modeller var, isterseniz kullanabilirsiniz. Ben bunu zamanında bu şekilde kullandım; şu an normal Gemini 3 Pro kullanıyorum. Ayrıca mutlaka çıktıyı kod bloğu içinde yazmasını isteyin, böylece daha düzenli oluyor ve karışıklık olmuyor.

Bu gece yaptığı çeviriyi izleyeceğim galiba. Kaldığı sahneyi hatırlayıp part şeklinde devam ediyor. Ben de SRT dosyasına ekliyorum:

1767998804372.webp


Bitirsin bakalım. Eğer şimdi bunu bitirirse izleyeceğim ve yarın tecrübemi paylaşacağım. Birkaç çevirdiği sahneye de baktım, iyi çeviriyor gibi.
 
Bu gece yaptığı çeviriyi izleyeceğim galiba. Kaldığı sahneyi hatırlayıp part şeklinde devam ediyor. Ben de SRT dosyasına ekliyorum:

Eki Görüntüle 217220

Bitirsin bakalım. Eğer şimdi bunu bitirirse izleyeceğim ve yarın tecrübemi paylaşacağım. Birkaç çevirdiği sahneye de baktım, iyi çeviriyor gibi.
Aynen, Gemini şu an gayet iyi çeviriyor; ciddi anlamda çağ atladı. Muhtemelen Gemini 4 çıkarsa çeviri işi çok daha iyi bir noktaya gelir.
Bu filmi bitirdikten sonra Gemini’ye kısa bir geri bildirim verirsen, sonraki filmde bağlama daha iyi dikkat ediyor. İyi seyirler.
 
Çeviri bittikten sonra dosyayı kaydediyorum (genelde Not Defteri formatında oluyor). Diyelim ki altyazıda 1000 satır var; bunların tamamını tek seferde yapay zekaya atmıyorum. Bunun yerine 100 - 150, en fazla 200 satırlık İngilizce bölümleri alıyorum ve DeepL’in çevirdiği karşılıklarıyla birlikte kopyalıyorum.
Hem orijinal İngilizce SRT dosyasını hem de DeepL API çevirisini de atmanızın nedeni yapay zekaya ekstra veri verip daha iyi bir sonuç almak mı?
 
İlk 30 dakikayı izledim. İnternette bulunan altyazıdan bile çok daha doğru ve uyumlu çevirdiğini not almak istiyorum. Bu altyazıyla bitireceğim. Memnun kalırsam belki SRT dosyalarını internete paylaşır ve serinin diğer filmlerine de Gemini çevirisi ile devam ederim.

Hikayeyle çok uyumlu gidiyor.

1768000911331.webp
 
Selamlar herkese,

Valla konudaki muhabbeti görünce dayanamadım; normalde forumlarda pek aktif değilimdir, genelde "misafir" modunda takılır, okur geçerim ama bu sefer kendi kurduğum sistemi paylaşmadan edemedim. Belki bu işlere meraklı arkadaşlara bir fikir verir.

Altyazı işinde yapay zeka olayı artık bambaşka bir boyuta geçti; doğru ayarları yapınca cidden profesyonel çeviri gibi sonuç veriyor.


1000054397.webp


Ben Proxmox üzerinde 'eve sinema merkezi' kurdum diyebilirim. Fotoğrafta gördüğünüz gibi; Jellyfin, Jellyseerr, Radarr, Sonarr, Bazarr, hatta Prowlarr ve Flaresolverr'a kadar ne ararsanız LXC olarak tıkır tıkır çalışıyor. İşin en cafcaflı kısmı; sunucudaki ekran kartını konteynerlere GPU Passthrough ile bağladım. (sunucu dediğim de aslında kıyıda köşede kalmış, yüzüne bakılmayan eski bir Lenovo laptop :)

Süreç bende şöyle işliyor:
Jellyseerr üzerinden bir film isteği atıyorum, gerisine dokunmuyorum. Radarr/Sonarr uygun release'i buluyor, qBittorrent'e paslıyor ve indirme işini o hallediyor. Eğer indikten sonra Bazarr piyasada hazır Türkçe altyazı bulamazsa hemen benim 'gizli silah' devreye giriyor. Önce videoyu Whisper AI (Large-v3) ile GPU üzerinden dinletiyorum. Ekran kartının gücüyle koca film 1-2 dakikada hatasız İngilizce metne dönüşüyor.

Sonra bu metni Gemini 2.0 Flash API'sine yolluyorum. Gemini'nin olayı bağlamı çok iyi kavraması; filmin başındaki olayı sonunda unutmuyor. Karakterler arasındaki hitap şeklini (sen/siz) bile filmin havasına göre harika ayarlıyor. Google Translate gibi robotik değil; bildiğin argo kullanımına, yerel deyimlere kadar hakim, çok doğal bir Türkçe çıkıyor ortaya.

Bir de Tailscale olayı var ki büyük rahatlık. Dışarıdayken VPN falan uğraşmadan eve bağlanıyorum. GPU sağ olsun, 4K içeriği bile mobil cihazın gücüne göre anlık transcoding yapıp takılmadan izlettiriyor. Şu an sistem tamamen 'kur ve unut' modunda; ben sadece butona basıyorum, qBittorrent indiriyor, sistem altyazıyı halledip Jellyfin'e hazır ediyor. Gemini API şu an kuruş istemiyor kalite zirve ama maliyet sıfır. :)

Proxmox tarafında GPU'yu geçirmek ve bu kadar servisi ayağa kaldırmak biraz terletti ama şu anki konfor paha biçilemez.
1000054399.webp


1000054398.webp
 
Allah aşkına şuna bakar mısınız? :D Yalvarttı sonra da finalde bana İngilizce çeviriyi geri verdi. :D
(Bir cevapta küfür bulunuyor.)

Eki Görüntüle 217203

ChatGPT dışında yapay zekâ tavsiyesi olan var mı? Bu işe uygun hiç uğraşan var mı aranızda? :)
Böyle koda benzer şeyleri yapay zeka destekli IDE içerisinde yapmak bence daha mantıklı hocam.
 
Sonra bu metni Gemini 2.0 Flash API'sine yolluyorum. Gemini'nin olayı bağlamı çok iyi kavraması; filmin başındaki olayı sonunda unutmuyor.
Google yapay zekâsının hiç süre saptırdığını gördünüz mü? Maalesef dün 1:36:04 itibariyle ses 22 saniye kaydırdı. Ama onun dışında söylediğiniz gibi çok kaliteli çeviri yaptı. :) Hikayeye de hâkim. (Belli ki yapay zekâ altyazı çevirmenlik mesleğini bitirdi.)

Bozulduğu yer itibariyle orijinal İngilizce SRT'yi geri kopyaladım. IDE ile açıp sadece İngilizce kısımları tekrar vermeyi planlıyorum.

1768042141612.webp
 
Google yapay zekâsının hiç süre saptırdığını gördünüz mü? Maalesef dün 1:36:04 itibariyle ses 22 saniye kaydırdı. Ama onun dışında söylediğiniz gibi çok kaliteli çeviri yaptı. :) Hikayeye de hâkim. (Belli ki yapay zekâ altyazı çevirmenlik mesleğini bitirdi.)

Bozulduğu yer itibariyle orijinal İngilizce SRT'yi geri kopyaladım. IDE ile açıp sadece İngilizce kısımları tekrar vermeyi planlıyorum.

Eki Görüntüle 217284
Hocam gemini bazen iki kısa satırı daha iyi olur diye tek satıra birleştiriyor. O bir satır eksilince, tüm süreler yukarı kaymaya başlıyor ve filmin sonunda o 22 saniyelik fark oluşuyor. :)
Çözümü Gemini'ye altyazı dosyasını komple vermeyerek çözdüm. Sadece metinleri yollayıp çevirtiyorum, timestamp orijinal dosyada sabit tutup sonra birleştiriyor.
Bu şekilde katı bir kural ekliyorum.

"Sadece metni çevir, zaman damgalarına ve satır sayılarına asla dokunma, formatı bozma"
 
Manus.ai yapay zekâ, istek işlerken bazen kullandığı scriptleri gösteriyor. Kendisinden çeviri yapmasını istedim. Arka planda OpenAI Pro API kullanan bir Python kodu yazıp ardından çalıştırdı. Sonucunda da bana çeviri verdi.

1768065716434.webp


Python:
import os
import re
from openai import OpenAI

client = OpenAI()

def translate_text(text_list):
    prompt = "Aşağıdaki İngilizce altyazı metinlerini anlamı bozmadan, doğal bir Türkçe ile çevir. Her satırı ayrı bir satır olarak döndür. Sadece çeviriyi ver, başka açıklama yapma.\n\n"
    prompt += "\n".join(text_list)
   
    response = client.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[
            {"role": "system", "content": "Sen profesyonel bir film altyazı çevirmenisin. Metinleri doğal ve akıcı bir Türkçeye çeviriyorsun."},
            {"role": "user", "content": prompt}
        ]
    )
    translated = response.choices[0].message.content.strip().split('\n')
    # Ensure we have the same number of lines
    if len(translated) != len(text_list):
        # Fallback or simple logging if mismatch occurs
        print(f"Warning: Mismatch in translation count. Expected {len(text_list)}, got {len(translated)}")
    return translated

def process_srt(input_path, output_path):
    with open(input_path, 'r', encoding='utf-8-sig') as f:
        content = f.read()

    # Split by double newline to get blocks
    blocks = re.split(r'\n\s*\n', content.strip())
   
    translated_blocks = []
    batch_size = 40
   
    all_texts = []
    block_structures = []

    for block in blocks:
        lines = block.split('\n')
        if len(lines) >= 3:
            index = lines[0]
            timestamp = lines[1]
            text = " ".join(lines[2:]) # Join multiple lines in one block
            block_structures.append((index, timestamp))
            all_texts.append(text)
        else:
            # Handle empty or malformed blocks
            block_structures.append(None)
            all_texts.append("")

    total = len(all_texts)
    print(f"Total blocks to translate: {total}")

    final_translations = []
    for i in range(0, total, batch_size):
        batch = all_texts[i:i+batch_size]
        print(f"Translating batch {i//batch_size + 1}/{(total//batch_size)+1}...")
        translated_batch = translate_text(batch)
       
        # If mismatch, try to fix or pad
        if len(translated_batch) < len(batch):
            translated_batch.extend([""] * (len(batch) - len(translated_batch)))
        elif len(translated_batch) > len(batch):
            translated_batch = translated_batch[:len(batch)]
           
        final_translations.extend(translated_batch)

    with open(output_path, 'w', encoding='utf-8') as f:
        for i in range(len(block_structures)):
            struct = block_structures[i]
            if struct:
                index, timestamp = struct
                text = final_translations[i]
                f.write(f"{index}\n{timestamp}\n{text}\n\n")

if __name__ == "__main__":
    process_srt('/home/ubuntu/upload/en.srt', '/home/ubuntu/tr.srt')


"Sadece metni çevir, zaman damgalarına ve satır sayılarına asla dokunma, formatı bozma"
Çok teşekkürler, Azkaban Tutsağı'nda deneyeceğim. Süreleri sürekli saptırıp duruyor.

Verdiğin ek notu Manus'a verdim. Python3 dosyasındaki ChatGPT isteğini değiştirdi.

model="gpt-4.1-mini",
messages=[
{"role": "system", "content": "You are a professional subtitle translator. Translate the following English subtitle text to Turkish. Maintain the tone and context. Do not translate names like Hedwig, Harry Potter, Dobby, Hogwarts, etc. Keep the formatting (like leading dashes or multiple lines) exactly as is. Only provide the translated text."},
{"role": "user", "content": text}
],
 
Son düzenleme: