David Deutsch'un The Beginning of Infinity kitabını İngilizce sesli kitap olarak dinlemek yerine Türkçe dinleyebilir miyim diye düşündüm. Elimde 21 parçaya bölünmüş bir MP3 seti var. Hedef yalnızca konuşmayı kelime kelime çevirmek değil; Deutsch'un bilim felsefesindeki kavramlarını ve kitabın anlatı bütünlüğünü koruyarak yeni bir Türkçe sesli kitap üretmek. Bir de mümkün olduğunca kendi bilgisayarımda çalışsın istiyorum.
Test makinesi: Core i5-10600KF, 32 GB RAM, GeForce RTX 3060 Ti 8 GB, Windows 11 ve PowerShell 7.6.9. Bu yazı, ilk beş dakikalık örnekle başlayan maceranın ilk bölümü.
1. İngilizce MP3'ten metne: Faster-Whisper
Önce 46 dakika 33 saniyelik ilk MP3'ten FFmpeg ile beş dakikalık örnek çıkardım:
ffmpeg -ss 00:00:00 -i "David Deutsch - The Beginning Of Infinity 01-21.mp3" -t 00:05:00 -map 0:a:0 -c:a copy "Deutsch_Sample_5min.mp3"
Ardından Python sanal ortamına Faster-Whisper kurdum. Model olarak large-v3, GPU hesaplama türü olarak float16 seçtim. Python 3.14 kurulumum bozuk çıktığı için çalışan Python 3.13'ü doğrudan kullandım. CTranslate2 sürümü 4.8.5 idi.

2. Sıradan bir kurulum olmayacağı belliydi
Önce PyAV ile Faster-Whisper birbirine girdi: av.open() got an unexpected keyword argument 'metadata_errors'. PyAV 19'un kaldırdığı bir parametreye Faster-Whisper'ın kurulu sürümü hâlâ başvuruyordu. Çözüm olarak sanal ortamda av==18.1.0 kullandım.
Sonra CUDA kendini gösterdi: cublas64_12.dll is not found or cannot be loaded. Meğer NVIDIA sürücüsünün CUDA 13.5 desteğini göstermesi, CUDA çalışma kütüphanelerinin kurulu olduğu anlamına gelmiyormuş. cuBLAS/cuDNN paketinden CUDA 12 için cuBLAS ve cuDNN 9 DLL'lerini alıp C:\AI\FasterWhisper\cuda klasörüne koydum. Sistemin PATH'ini kalıcı değiştirmek yerine sadece o PowerShell oturumuna ekledim:
$env:PATH = "C:\AI\FasterWhisper\cuda;$env:PATH"
Bu kez GPU gerçekten çalışmaya başladı.

3. Whisper'ın yarım dakikalık halüsinasyonu
İlk transkriptte 01:55–02:25 arasında İngilizce cümlelerin yerini anlamsız sözcükler, Arapça ve Japonca karakterler aldı. Garip olan, ses kaydında o bölümün gayet anlaşılır konuşma olmasıydı. Whisper bazen yanlış bir devamı kendi kendine büyütebiliyor. Ayrıca Frederick Soddy adını Frederick Sade diye yazmıştı.
Önce MP3'ü 16 kHz mono PCM WAV'a dönüştürdüm. Ardından vad_filter=False, condition_on_previous_text=False ve beam_size=8 ile problemli 40 saniyeyi tekrar çözdüm. Sonuç temizdi. Aynı ayarlarla beş dakikalık örneği sıfırdan çalıştırdım; bu kez o bölüm de düzgündü. İki ayarı aynı anda değiştirdiğim için iyileşmeyi yalnızca birine bağlayamam.

Performans da hiç fena değil: Beş dakikalık kayıt, RTX 3060 Ti üzerinde 51,8 saniyede çözüldü. Bu yaklaşık 5,8 kat gerçek zaman hızı. Tüm 21 dosyanın aynı karakterde olduğunu varsayarsam yalnızca transkripsiyon için birkaç saatlik GPU işi var.
4. Çeviri: Kelime karşılığı yetmez
İngilizce metni Türkçeye çevirirken kitap boyunca tutarlı bir terim sözlüğü gerektiği hemen ortaya çıkıyor. Örneğin good explanations için “iyi açıklamalar”, the reach of explanations için “açıklamaların erişim alanı”, transmutation için “element dönüşümü” karşılıklarını tercih ettim. Elbette insan gözüyle kontrol şart: Ses tanıma hatasını olduğu gibi çevirirsek seslendirme onu daha da kalıcı hâle getiriyor.
Bir not: Beş dakikalık örnek kaydın başı cümlenin ortasına, sonu da devam eden bir paragrafa denk geliyor. Bunları uydurma cümlelerle tamamlamadım.
5. İlk Türkçe ses: Microsoft Edge TTS
Seslendirmede ilk denemeyi edge-tts ile yaptım. Türkçe Ahmet ve Emel sesleri kullanılabiliyor. tr-TR-AhmetNeural sesini %5 yavaşlatarak tüm örneği MP3'e çevirdim. Sonuç 5 dakika 11 saniye sürdü. Ahmet fena değil; dinlenebilir bir ses.
Fakat burada işlem benim GPU'da değil, Microsoft'un çevrimiçi TTS hizmetinde yapılıyor. Yirmi saatlik bir kitapta internet hizmetine ve olası erişim sınırlarına bağımlı olmak pek hoşuma gitmedi.

Ses örneği 1 — Edge TTS / Ahmet (5:11)
Ahmet ses kaydını Google Drive'da aç
6. Bulut yerine RTX 3060 Ti: Coqui XTTS v2
İkinci aday Coqui XTTS v2. Onu C:\AI\XTTS altında ayrı bir Python ortamına kurdum. PyTorch 2.11.0+cu128, CUDA 12.8, Coqui ve gerekli bağımlılıklar kuruldu. Başta eksik six modülü gibi küçük pürüzler vardı; sonunda GPU testi geçti.
Hazır konuşmacılardan Eugenio Mataracı ile kısa bir Türkçe cümle denedim. Seslendirme doğrudan RTX 3060 Ti üzerinde çalıştı ve oldukça iyi çıktı. Bu örnek yaklaşık 11 saniye.

Ses örneği 2 — Coqui XTTS v2 / Eugenio Mataracı (0:11)
Coqui ses kaydını Google Drive'da aç
7. Tam bölüme geçince yeni sınır: 226 karakter
Kısa test başarılıydı ama beş dakikalık Türkçe metni XTTS'ye verince şu uyarı çıktı: The text length exceeds the character limit of 226 for language 'tr'. split_sentences=True tek başına yeterli değil; Deutsch'un bazı cümleleri 226 karakterden uzun. Sesin kesilme ihtimali var.
Burada Part 1'i noktalıyorum. Part 2'de metni anlamlı duraklardan 180 karakterlik parçalara ayırıp her parçayı yerel GPU'da seslendiren, gerektiğinde kaldığı yerden devam edebilen bir sistem kuracağım. Sonra 21 dosyanın tamamı sırada.
Kullandığım araçlar: FFmpeg, Faster-Whisper large-v3, CTranslate2, CUDA 12/cuDNN 9, Python, edge-tts, Coqui XTTS v2, PyTorch ve RTX 3060 Ti.