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.

Gemini 2.5 Pro Preview TTS: uzun metin, telaffuz ve maliyet konusu için üç ayrı bilgi kutusunu karşılaştıran veya sıralayan açıklayıcı LLMTR rehber şeması.

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.

Parça bazında kontrol edilecek bilgiler
BilgiKontrolAmaç
Sıra ve metin sürümüEksik veya yinelenen bölüm yokAnlatının tamamlığını korumak
Model ve voiceBütün parçalarda aynı değerSes seçiminin değişmesini önlemek
MIME ve ses özellikleriÇözümleme sonrası ortak biçimGeçerli bir dosya üretmek
İstek kimliği ve kullanımBaşarılı ve yeniden üretilen işleri izlemekTeş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.

İlgili yazılar