Entegrasyon rehberleri · 2026-08-28
Gemini 2.5 Pro Preview TTS: uzun metin, telaffuz ve maliyet
Gemini 2.5 Pro Preview TTS ile uzun Türkçe metinleri parçalama, telaffuzu düzenleme, sesleri doğru birleştirme ve gerçek token kullanımından maliyet değerlendirme rehberi.
Uzun metni bir üretim planına dönüştürün
Gemini 2.5 Pro Preview TTS ile uzun metin seslendirirken metni anlamlı parçalara ayırın, her parçayı aynı voice ve kısa anlatım notuyla üretin, çözümlenen sesleri ortak biçimde birleştirin. Maliyeti karakter sayısından değil, her isteğin gerçek metin girdisi ve ses çıktısı token kullanımından değerlendirin.
28 Ağustos 2026'da kontrol edilen Google model kartı 8.192 giriş ve 16.384 çıkış token sınırı bildiriyor. Bunlar karakter veya dakika sınırı değildir. Anlatım talimatları da giriş bütçesine dahildir; yalnızca metnin girişe sığması bütün seslendirmenin tamamlanacağını garanti etmez.
Türkçe telaffuzu konuşma metninde hazırlayın
Google Türkçeyi desteklenen diller arasında listeliyor; bu, bütün özel adların doğru okunacağı garantisi değildir. İ, ı, ş ve ğ harflerini koruyun. Kaynak metni değiştirmek yerine ayrı bir seslendirme kopyasında tarih, sayı, kısaltma ve marka okunuşlarını düzenleyin.
Örneğin 28.08.2026 ifadesini yirmi sekiz Ağustos iki bin yirmi altı olarak, TL kısaltmasını Türk lirası olarak açabilirsiniz. Anlamı değiştirmediğinizi kontrol edin. Kısa bir telaffuz sözlüğünde seçtiğiniz okunuşları tutun; yalnız ilgili terimlerin notlarını parçaya ekleyin. Notları okunacak metinden ayırın ve sonuçta notların seslendirilmediğini dinleyerek doğrulayın.
Parça sınırlarını cümle ve konuya göre seçin
Önce başlık ve paragraf sınırlarını kullanın; uzun paragrafı tamamlanmış cümlelerden bölün. Sabit karakter sayısında kesmek özel adı, ondalık sayıyı veya cümleyi ortadan ayırabilir. Her parçaya sıra numarası verin ve kaynak metindeki hangi bölümü karşıladığını uygulamanızda izleyin.
Önceki cümleyi sonraki parçaya tekrar okunacak metin olarak eklemeyin; birleşimde tekrar oluşur. Ortak ton notu kısa kalsın. Bütün parçalar için aynı model kimliğini ve voice değerini koruyun; bunların tek başına kusursuz ses tutarlılığı sağlamadığını kabul kontrolüne dahil edin.
| Bilgi | Kontrol | Amaç |
|---|---|---|
| Sıra ve metin sürümü | Eksik veya yinelenen bölüm yok | Anlatının tamamlığını korumak |
| Model ve voice | Bütün parçalarda aynı değer | Ses seçiminin değişmesini önlemek |
| MIME ve ses özellikleri | Çözümleme sonrası ortak biçim | Geçerli bir dosya üretmek |
| İstek kimliği ve kullanım | Başarılı ve yeniden üretilen işleri izlemek | Teşhis ve maliyet değerlendirmesi |
LLMTR üzerinden parçaları sırayla gönderin
LLMTR'de POST /v1/audio/speech için model, input ve bu Google modeliyle voice gönderilir. LLMTR_BASE_URL değişkenini okuyucunun yapılandırdığı tam API taban adresi olarak kullanın; /v1 bölümünü tekrar eklemeyin. Anahtar LLMTR_API_KEY içinden okunur ve sunucuda kalır.
Örnek iki kısa Türkçe parçayı sırayla gönderir; çalıştırmanız ücret oluşturabilir, burada canlı çalıştırılmadı. Ses baytları biçim belirlenene kadar .bin olarak saklanır; MIME ve X-Request-Id ayrı kaydedilir. Mevcut çıktı klasöründe durması kasıtlıdır: kaldığınız yerden devamı değerlendirip tamamlanan parçaları tekrar göndermeyin.
Aynı sesle sıralı istekler; otomatik yeniden deneme veya biçim dönüşümü yok
import json
import os
from pathlib import Path
from urllib.request import Request, urlopen
base = os.environ["LLMTR_BASE_URL"].rstrip("/")
key = os.environ["LLMTR_API_KEY"]
parts = [
"Kurulum tamamlandı. Şimdi günlük kullanım adımlarını inceleyelim.",
"Hata alırsanız işlem kimliğini saklayın. Gizli bilgileri paylaşmayın.",
]
direction = (
"Türkçe, sakin ve tutarlı bir tempoyla seslendir. "
"Yalnızca METİN bölümünü oku.\nMETİN:\n"
)
output = Path("tts-parts")
output.mkdir() # Existing output requires an explicit resume decision.
for number, part in enumerate(parts, start=1):
payload = {
"model": "google/gemini-2.5-pro-preview-tts",
"input": direction + part,
"voice": "Kore",
}
request = Request(
base + "/audio/speech",
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
headers={
"Authorization": "Bearer " + key,
"Content-Type": "application/json",
},
method="POST",
)
with urlopen(request, timeout=180) as response:
mime = response.headers.get("Content-Type", "")
request_id = response.headers.get("X-Request-Id")
audio = response.read()
if not mime.lower().startswith("audio/") or not audio:
raise RuntimeError("Expected non-empty audio; inspect the request ID.")
(output / f"{number:03d}.bin").write_bytes(audio)
metadata = {"part": number, "mime_type": mime, "request_id": request_id}
(output / f"{number:03d}.json").write_text(
json.dumps(metadata, ensure_ascii=False), encoding="utf-8"
)
WAV başlıklarını değil, ses karelerini birleştirin
LLMTR'nin Google ses yanıtında otomatik MP3 dönüşümü varsaymayın. response_format alanına mp3 yazmak bu yolda dönüştürme garantisi vermez; dönen Content-Type ile dosya içeriğini birlikte inceleyin. Ham PCM, WAV kapsayıcısı değildir ve yalnız uzantısını değiştirmek onu WAV yapmaz.
Ham PCM için örnekleme hızı, kanal sayısı, örnek genişliği ve bayt sırasını doğrulayın; bilgi eksikse tahminle açmayın. WAV parçalarını çözüp örnek özelliklerini eşitleyin, ses karelerini sırayla birleştirin ve tek yeni WAV başlığı yazın. WAV dosyalarını başlıklarıyla doğrudan eklemek hatalıdır. MP3 gerekiyorsa birleştirilmiş ses verisini son aşamada bir kez kodlayın.
Maliyeti gerçek metin ve ses kullanımından hesaplayın
Google fiyatlandırmasında TTS'nin metin girdisi ile ses çıktısı ayrı kalemlerdir. Gemini 2.5 Pro sohbet modelinin metin çıktı fiyatını kullanmayın. Milyon token başına tarifede hesap, giriş tokenı × geçerli giriş fiyatı + ses çıkış tokenı × geçerli ses fiyatı toplamının 1.000.000'a bölünmesidir.
LLMTR'nin ikili ses gövdesinde JSON usage alanı aramayın; kullanım raporundaki gerçek token ve ücret kayıtlarını kontrol edin, istek kimliğini teşhis için saklayın. Tekrarlanan anlatım notları ve yeniden üretilen parçalar da toplamı etkiler. Karakter sayısından kesin ücret veya saniyeden sabit ses tokenı türetmeyin. Kullanım görünmüyorsa sıfır maliyet varsaymayın; eksik kaydı araştırın.
Yayın öncesi birleşimleri dinleyin
Her parçanın ilk ve son cümlesini kaynakla karşılaştırın; düşen kelime, tekrar, yanlış sayı ve yarım bitiş arayın. Parça geçişlerinde tempo, ses seviyesi ve gereksiz sessizlikleri dinleyin. Hatalı parçayı düzeltip yalnız onu yeniden üretin; tekrar denemenin maliyetini kaydedin.
Üretim günlüklerine metni, müşteri içeriğini veya anahtarı yazmayın. Ses dosyalarının da metnin içeriğini taşıdığını unutmayın; erişim ve saklama süresini buna göre sınırlandırın.
Sık sorulan sorular
Uzun bir metni tek çağrıda gönderebilir miyim?
Giriş sınırına sığması tek başına yeterli değildir; ses çıktısı da ayrı bütçeye tabidir. Parçalama, eksik veya sorunlu bölümün tüm metni yeniden üretmeden düzeltilmesini sağlar.
Aynı voice bütün parçalarda aynı tonu garanti eder mi?
Hayır. Aynı model, voice ve kısa anlatım notunu kullanın; yine de birleşim noktalarında ton ve tempo kontrolü yapın.
WAV dosyalarını bayt olarak art arda eklemek yeterli mi?
Hayır. Dosyaları çözümleyin, ses özelliklerini eşitleyin ve karelerden tek bir kapsayıcı oluşturun. Her parçanın WAV başlığını art arda eklemeyin.
Kaç karakterin kaç dolara mal olacağını kesin söyleyebilir miyim?
Hayır. Gerçek metin ve ses token kullanımını ilgili modelin geçerli fiyatlarıyla hesaplayın; yeniden üretimleri de hesaba katın.