Whisper ses sunucusu nedir, ne işe yarar?
Whisper ses sunucusu, Türkçe konuşmayı yazıya çeviren Whisper'ın (faster-whisper ile) ve Türkçe metni sese çeviren Chatterbox Multilingual'ın kurulu olarak geldiği, size ayrılmış (paylaşımsız) bir GPU sunucudur. İki yönü de tek bir HTTPS adresinden, OpenAI uyumlu /v1/audio/transcriptions ve /v1/audio/speech uç noktalarıyla kullanırsınız. Paket çağrı merkezi kayıtlarının dökümü, toplantı notu, video altyazısı ve e-öğrenme seslendirmesi için hazırlandı. Sunucular İstanbul Bağcılar'daki kendi tesisimizde çalışır, verileriniz Türkiye'de kalır.
Sunucuda neler kurulu, hangi parça ne yapar?
Paket iki ses servisi ve önlerinde duran bir ters vekil sunucudan (reverse proxy) oluşur:
- speaches: OpenAI'nin ses API'siyle uyumlu, MIT lisanslı bir sunucudur. Konuşma tanımada faster-whisper'ı kullanır; dosyadan döküm, akışlı döküm, İngilizceye çeviri ve WebSocket üzerinden Realtime API sunar. Her dökümden önce Silero VAD ile konuşma olmayan bölümleri ayıklar. Boşta kalan modelleri varsayılan olarak 300 saniye sonra bellekten çıkarır, böylece kart boşken bellek başka işlere kalır.
- faster-whisper: Whisper'ı CTranslate2 ile çalıştıran motordur. README'sine göre aynı doğrulukta openai/whisper'dan 4 kata kadar hızlıdır ve daha az bellek kullanır.
- Whisper large-v3 ve large-v3-turbo: İki model de önceden indirilmiş gelir: doğruluk öncelikli
Systran/faster-whisper-large-v3 ve hız öncelikli deepdml/faster-whisper-large-v3-turbo-ct2. İkisi de OpenAI ağırlıklarının MIT lisanslı CTranslate2 dönüşümüdür; istekteki model alanını değiştirerek aralarında geçersiniz.
- Chatterbox Multilingual: Resemble AI'ın MIT lisanslı, 0,5 milyar parametreli seslendirme modelidir. Türkçe dahil 23 dilde konuşur, kısa bir referans kayıttan o sesle okuyabilir (ses klonlama) ve her çıktıya duyulmayan bir Perth filigranı ekler.
- Chatterbox-TTS-Server: Chatterbox'ı bir web arayüzü ve OpenAI uyumlu
/v1/audio/speech uç noktasıyla sunan MIT lisanslı sunucudur. Referans kayıtları arayüzden yükler, ayarları deneyerek sonucu dinlersiniz.
- Caddy: HTTPS'i ve erişim denetimini yönetir.
/v1/audio/speech isteklerini Chatterbox'a, diğer /v1/audio/... isteklerini speaches'e yönlendirir; uygulamanız tek bir taban adres bilir.
speaches seslendirme için Kokoro ve Piper'ı destekler, ama Türkçe için ikisini de kullanmıyoruz: Kokoro'nun ses listesinde Türkçe yok, Piper'ın tek Türkçe sesi ise ticari kullanıma kapalı bir veriyle eğitilmiş (aşağıda). speaches Chatterbox'ı desteklemediği için Chatterbox kendi sunucusuyla ayrı bir konteynerde çalışır.
Konuşmayı yazıya çevirme nasıl çalışır?
Whisper bir kodlayıcı-kod çözücü (encoder-decoder) transformer modelidir. Whisper makalesine göre ses 16.000 Hz'e çevrilir, 30 saniyelik parçalara bölünür ve Mel spektrogramına dönüştürülür. Kodlayıcı sesi bir temsile çevirir, kod çözücü metni parça parça yazar ve her bölüm için başlangıç ve bitiş zamanını tahmin eder. İstekte language=tr verdiğinizde dil tespiti adımı atlanır; kısa kayıtlarda modelin dili yanlış tahmin etmesi önlenir.
Whisper Türkçede ne kadar doğru?
Makalenin ek tablolarında large-v2'nin Türkçe kelime hata oranı (WER) FLEURS'ta %8,4, Common Voice 9'da %14,5'tir. Aynı tablolarda medium model %10,4 ve %17,7'de kalır; Türkçede büyük model seçmenin farkı buradan görülür. openai/whisper README'sindeki dil bazlı grafik, Türkçe dahil dillerde large-v3'ü large-v2 ile Common Voice 15 ve FLEURS üzerinde karşılaştırır.
Bu rakamları okurken üç noktaya dikkat edin:
- Kayıt türü: FLEURS ve Common Voice'ta insanlar hazır cümleleri okur. Dar bantlı telefon sesi, üst üste konuşma ve arka plan gürültüsü hata oranını yükseltir.
- Eklemeli dil: Türkçede tek bir yanlış ek bütün kelimeyi hatalı sayar. "Gönderilmedi" yerine "gönderildi" yazmak tek kelimelik bir hatadır ama anlamı tersine çevirir. Hem WER'e hem karakter hata oranına (CER) bakın, olumsuzluk eklerini ayrıca kontrol edin.
- Uydurma metin: Makale, modelin tekrar döngüsüne girebildiğini ve bazen seste olmayan bir metin üretebildiğini belirtir. speaches'in VAD adımı uzun sessizlikleri çıkararak bu riski azaltır, ama tamamen ortadan kaldırmaz.
Kurum terimleri, ürün ve kişi adları için prompt alanına örnek bir metin, speaches'in ek hotwords alanına da terim listesi verebilirsiniz. Karar vermeden önce kendi kayıtlarınızdan temsili bir örneği elle düzeltip WER ölçün. Kapasite hesabı ve diğer açık modellerle karşılaştırma ses tanıma sayfamızda.
large-v3 mü, large-v3-turbo mu?
Tablodaki değerler openai/whisper README'sinden alındı. Hız, A100 üzerinde İngilizce konuşmayla ölçülmüştür; README de dilin, konuşma hızının ve donanımın sonucu belirgin biçimde değiştirebileceğini yazar. Turbo, large-v3'ün doğrulukta küçük bir kayıpla daha hızlı çalışan sürümü olarak tanımlanır.
Pratik bir ayrım: hukuki tutanak, sağlık ve arşiv dökümü gibi doğruluğun öncelikli olduğu işlerde large-v3; canlı altyazı, yoğun çağrı kuyruğu ve taslak toplantı notunda turbo. Aynı örnek kayıtları iki modelle çevirip farkı kendi verinizde görün.
Hangi GPU yeterli? Whisper kaç GB VRAM ister?
Konuşma modelleri dil modellerine göre küçüktür; kartı çoğu zaman yanında ne çalıştıracağınız belirler. Kaynaklardaki değerler şöyle:
- openai/whisper (PyTorch): large modeller yaklaşık 10 GB, turbo yaklaşık 6 GB.
- faster-whisper README'si: Aynı boyuttaki large-v2, 8 GB'lık RTX 3070 Ti üzerinde 13 dakikalık bir kayıtta fp16 ile 4.525 MB, int8 ile 2.926 MB, fp16 ve 8'li batch ile 6.090 MB kullandı. Batch'li çalışmada kayıt 17 saniyede işlendi.
- Chatterbox Multilingual: Resemble AI, PyTorch sürümü için bir bellek değeri yayımlamıyor. NVIDIA'nın model kartı, 4 bitlik GGUF uyarlaması için yaklaşık 3,5 GB veriyor; sunucuda kurulu PyTorch sürümü daha fazla kullanabilir. Kendi kartınızda
nvidia-smi ile ölçün.
Dil modeli değerleri VRAM hesaplayıcımızdan alındı; kendi bağlam ve eşzamanlılık değerlerinizi hesaplayıcıda deneyin. Toplamı kartın kullanılabilir belleğiyle karşılaştırın: 16 GB'lık kartta yaklaşık 14,7 GB, 24 GB'ta 22,1 GB, 32 GB'ta 29,4 GB kullanılabilir. Uzun süre kesintisiz çalışan döküm kuyruklarında ECC'li bellek istiyorsanız 24 GB'lık RTX A5000 ya da RTX PRO 4000'i seçin.
Toplu işleme mi, canlı yazıya çevirme mi?
Toplu (batch): Kayıtlar bir klasörde birikir, bir betik her dosyayı /v1/audio/transcriptions adresine gönderir ve sonucu veritabanına yazar. Gece çalışan bir kuyruk, gündüz kartı seslendirmeye ya da özete bırakır. Santraliniz müşteriyi ve temsilciyi ayrı kanallara kaydediyorsa kanalları ayrı dosya olarak göndermek, kimin konuştuğunu ayrı bir modele gerek kalmadan verir.
Akışlı döküm: İstekte stream=true verdiğinizde speaches sonuçları ses işlendikçe Server-Sent Events (SSE) ile gönderir; uzun bir kaydın ilk cümlelerini dosyanın tamamı bitmeden görürsünüz.
Canlı (Realtime API): speaches, OpenAI Realtime API'sini WebSocket üzerinden uygular. intent=transcription parametresiyle yalnızca yazıya çevirme moduna geçer, language parametresiyle dili sabitlersiniz. Belgelerine göre gerçek zamanlı performans ancak CUDA ile elde edilir. Whisper 30 saniyelik pencerelerle çalışan bir modeldir, akış için tasarlanmamıştır; gecikme modele, karta ve eşzamanlı oturum sayısına bağlıdır. Canlı altyazı kuracaksanız turbo ile başlayıp gerçekçi bir yük testiyle ölçün.
API ile ses kaydını yazıya dökme
Teslimde gelen adres ve API anahtarıyla, OpenAI SDK'sını kullanan her araç bu sunucuya bağlanır; yalnızca taban adresi değiştirirsiniz.
curl https://SUNUCU-ADRESINIZ/v1/audio/transcriptions \
-H "Authorization: Bearer $API_ANAHTARI" \
-F file=@toplanti.mp3 \
-F model=Systran/faster-whisper-large-v3 \
-F language=tr \
-F response_format=text
Aynı istek Python'da, turbo modeli ve terim ipucuyla:
from openai import OpenAI
client = OpenAI(base_url="https://SUNUCU-ADRESINIZ/v1", api_key="API_ANAHTARI")
with open("cagri-kaydi.wav", "rb") as ses:
dokum = client.audio.transcriptions.create(
model="deepdml/faster-whisper-large-v3-turbo-ct2",
file=ses,
language="tr",
prompt="iade kodu, kargo takip numarası, Bağcılar şubesi",
)
print(dokum.text)
SRT ve VTT altyazı nasıl alınır?
response_format alanı text, json, verbose_json, srt ve vtt değerlerini alır. Videodan önce sesi ayırıp altyazı dosyası isteyin:
ffmpeg -i egitim-videosu.mp4 -vn -ac 1 -ar 16000 egitim-sesi.wav
curl https://SUNUCU-ADRESINIZ/v1/audio/transcriptions \
-H "Authorization: Bearer $API_ANAHTARI" \
-F file=@egitim-sesi.wav \
-F model=Systran/faster-whisper-large-v3 \
-F language=tr \
-F response_format=srt > egitim-videosu.srt
Kelime düzeyinde zaman damgası için response_format=verbose_json ile birlikte timestamp_granularities[]=word gönderin; speaches bu alanı yalnızca verbose_json ile anlamlı sayar. Altyazıyı videoya gömmek ya da videoyu NVENC ile yeniden kodlamak için video transcoding rehberimize ve video işleme sayfamıza bakın. Türkçe konuşmayı İngilizce metne çevirmek için /v1/audio/translations uç noktasını large-v3 ile kullanın; README'ye göre turbo çeviri istendiğinde de metni özgün dilde döndürür.
Metni sese çevirme: Türkçe TTS isteği
Chatterbox sunucusunda voice alanı, web arayüzünden yüklediğiniz referans kaydın dosya adıdır; model metni bu sesle okur. Uzun metinler cümle sınırlarından parçalara bölünüp tek dosyada birleştirilir.
curl https://SUNUCU-ADRESINIZ/v1/audio/speech \
-H "Authorization: Bearer $API_ANAHTARI" \
-H "Content-Type: application/json" \
-d '{
"model": "chatterbox",
"input": "Merhaba, randevunuz yarın saat on dörtte. Değiştirmek için bire basın.",
"voice": "egitmen-onayli.wav",
"language": "tr",
"response_format": "mp3"
}' \
-o duyuru.mp3
Çıktı wav, mp3 ya da opus olabilir. Chatterbox deposundaki öneriler şunlar: referans kaydın dili istekteki dille aynı olsun, yoksa çıktı referansın aksanını taşıyabilir (cfg_weight değerini 0'a çekmek bunu azaltır). Hızlı konuşan referanslarda cfg_weight değerini 0,3 civarına indirin, daha duygulu bir okuma için exaggeration değerini yükseltin. Bu ayarları web arayüzünden ya da sunucunun kendi /tts uç noktasından değiştirirsiniz; OpenAI uyumlu uç nokta kayıtlı varsayılanları kullanır. Depodaki örneklerde yaklaşık 10 saniyelik bir referans klip kullanılır; gürültüsüz ve tek kişinin konuştuğu bir kayıt seçin.
E-öğrenme seslendirmesinde metni bölüm bölüm üretip dinleyerek kontrol edin. Sayıları, kısaltmaları ve yabancı kelimeleri okunduğu gibi yazmak ("2026" yerine "iki bin yirmi altı") okunuşu sizin kontrolünüze bırakır.
Türkçe ses klonlama: izin ve filigran
Ses klonlama kullanışlı ama kötüye kullanıma açık bir özelliktir. Şu kurallarla çalışın:
- Yalnızca yazılı izinle: Bir sesi klonlamadan önce sesin sahibinden yazılı ve amacı belli bir izin alın: hangi metinler, hangi kanallar, ne kadar süre. İzni referans kayıtla birlikte saklayın; izin geri alınırsa referans dosyayı ve üretilmiş sesleri silin.
- Ses kişisel veridir: Kimliği belirlenebilir bir kişinin sesi kişisel veri sayılır. Çalışanların, müşterilerin ya da tanınmış kişilerin sesini izinsiz taklit etmeyin. Genel çerçeve KVKK rehberimizde; bu bölüm hukuki tavsiye değildir.
- Perth filigranı: Chatterbox her çıktıya duyulmayan bir Perth filigranı ekler. Resemble AI'a göre filigran MP3 sıkıştırmasından ve yaygın düzenlemelerden sonra da korunur. Bir dosyanın Chatterbox çıktısı olup olmadığını
perth kütüphanesindeki PerthImplicitWatermarker ile kontrol edebilirsiniz. Filigranı kapatmayın; filigran izin yerine geçmez.
- Dinleyiciye açıklık: Sentetik sesle hazırlanan duyuru, ders ya da sesli yanıt (IVR) mesajlarında sesin yapay zeka ile üretildiğini belirtin.
Toplantı notu için dökümü özetlemek
Toplantı notu çıkaran bir akış iki adımdan oluşur: Whisper kaydı metne çevirir, bir dil modeli de bu metinden özet, kararlar ve sorumlusuyla aksiyon maddeleri çıkarır. Bellek yetiyorsa dil modelini aynı karta kurabilirsiniz; Ollama ile model seçimi ve kullanımı Ollama ve Open WebUI paket sayfasında anlatılıyor. Qwen3 8B int4'te 8K bağlamla 7,1 GB, gpt-oss-20b 13,5 GB ister; Whisper'la birlikte toplam yaklaşık 13,2 ve 19,6 GB eder. İkisi de 24 GB'lık RTX PRO 4000 ya da RTX 3090'a sığar, 32 GB'lık RTX 5090 daha fazla pay bırakır. Modelin bağlam penceresini aşan uzun dökümleri bölümlere ayırın; önce bölüm özetlerini, sonra genel özeti çıkarın. Birden çok konteyneri aynı GPU'da çalıştırmanın ayrıntıları Docker GPU rehberimizde.
Ne kurulmuyor ve neden?
Aşağıdakiler Türkçe konuşabilir ya da işe yarar, ama lisans veya erişim koşulları nedeniyle varsayılan kuruluma eklemiyoruz. Root erişiminiz olduğu için kendi lisans koşullarını kabul ederek kurabilirsiniz.
- XTTS-v2 (Coqui): Türkçe destekler, ancak Coqui Public Model License 1.0.0 modelin ve çıktılarının yalnızca ticari olmayan amaçlarla kullanılmasına izin verir.
- F5-TTS: Kodu MIT lisanslıdır, ancak önceden eğitilmiş ağırlıkları eğitim verisi Emilia nedeniyle CC-BY-NC lisanslıdır; ticari seslendirmede kullanılamaz.
- Piper'ın Türkçe sesi (tr_TR-dfki): Model kartında eğitim verisinin lisansı CC BY-NC-SA 4.0 olarak geçer, yani ticari olmayan kullanımla sınırlıdır. speaches Piper'ı destekler, ama bu sesi indirmiyoruz.
- pyannote speaker-diarization-community-1 (konuşmacı ayrımı): Lisansı CC-BY-4.0'dır ve ticari kullanıma izin verir. Ancak model Hugging Face'te koşul kabulüne bağlıdır: iletişim bilgilerinizi paylaşıp koşulları kendi hesabınızla kabul etmeniz gerekir, bu yüzden önceden indirmiyoruz. speaches'in yeni sürümlerinde (0.9 serisi) bulunan
/v1/audio/diarization uç noktası bu modeli kullanır; model sayfasında koşulları kabul edip bir Hugging Face token'ıyla indirebilirsiniz. Ücretli precision-2 modeli ise pyannoteAI'ın sunucularında çalışır; kullanırsanız kayıtlarınız Türkiye dışına çıkar.