İçeriğe geç

PatientDesk Alania ve Duyu (Türkçe ses)

Alania ve Duyu, PatientDesk tarafından Türkçe için geliştirilmiş iki ses modelidir. Alania metni sese çevirir, Duyu ses kaydını yazıya döker. Modellerin teknik ayrıntıları ve ölçüm sonuçları geliştiricinin kendi sitesinde yer alır: speech.patientdesk.ai.

İki model de 25 Ekim 2026'ya kadar ücretsizdir ve bu tarihte kullanımdan kalkar (bkz. Emeklilik).

Model İş Uç nokta
patientdesk/alania-v1 Metinden sese (TTS) POST /v1/audio/speech
patientdesk/duyu-1 Sesten metne (STT) POST /v1/audio/transcriptions
Terminal window
curl "$LLMTR_BASE_URL/v1/audio/speech" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "patientdesk/alania-v1",
"input": "Randevunuz yarın saat 14:05 için oluşturuldu. Lütfen on dakika önce gelin.",
"voice": "alania",
"response_format": "mp3"
}' \
--output randevu.mp3
Alan Zorunlu Açıklama
model Evet patientdesk/alania-v1
input Evet Okunacak metin, en fazla 5.000 karakter. Daha uzun metni birden fazla isteğe bölün.
voice Hayır Tek ses vardır: alania (varsayılan).
response_format Hayır wav (varsayılan; 24 kHz, mono, 16 bit), mp3, opus, flac, aac veya pcm (başlıksız 16 bit; örnekleme hızı Content-Type içinde gelir: audio/L16; rate=24000).
temperature Hayır Varsayılan 0,30. Yükseltmek okuyuşu çeşitlendirir, sesin tutarlılığını azaltır.
seed Hayır Sağlayıcıya iletilir. Aynı metin ve aynı seed aynı sesi garanti etmez.

Yanıt ses dosyasının kendisidir; Content-Type seçtiğiniz biçimi söyler (audio/wav, audio/mpeg vb.). Ses, üretimi bitince tek parça döner; stream alanı dikkate alınmaz. Bekleme süresi metnin uzunluğuyla artar ve uzun metinlerde dakikalar sürebilir; istemcinizin okuma zaman aşımını buna göre ayarlayın.

Her yanıtta X-Disclosure: ai-generated başlığı bulunur. Sesin yapay zekâ ile üretildiğini dinleyicilerinize bildirmek size aittir.

Ses, JSON gövdesinde base64 olarak gönderilir:

Terminal window
AUDIO_B64=$(base64 < kayit.m4a | tr -d '\n')
printf '{"model":"patientdesk/duyu-1","audio_format":"m4a","language":"tr","audio_base64":"%s"}' \
"$AUDIO_B64" > istek.json
curl "$LLMTR_BASE_URL/v1/audio/transcriptions" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
--data @istek.json
{ "text": "Randevumuz yarın saat 14.05 için oluşturuldu. Lütfen 10 dakika önce gelin." }
Alan Zorunlu Açıklama
model Evet patientdesk/duyu-1
audio_base64 Evet Base64 ile kodlanmış ses. İstek başına yaklaşık 9 MB sesle sınırlıdır.
audio_format Hayır wav, mp3, m4a, webm, ogg veya flac. Gönderilmezse dosyanın ilk baytlarından anlaşılır; anlaşılamazsa istek 400 ile reddedilir.
language Hayır tr (varsayılan) veya auto. Model Türkçe içindir.
prompt Hayır Yazım ipucu: ilaç adları, kişi adları, kimlik numarası biçimi gibi terimler doğruluğu artırır.
response_format Hayır json (varsayılan), text, verbose_json, srt veya vtt.
timestamp_granularities Hayır ["segment"], ["word"] veya ikisi. Yalnızca verbose_json ile.
temperature Hayır 0 ile 1 arası, varsayılan 0.

file_id bu modelde kabul edilmez; OpenAI SDK'nın dosya yüklemeli (multipart) çağrısı da bu uç noktada çalışmaz, isteği yukarıdaki gibi JSON olarak gönderin.

verbose_json, timestamp_granularities: ["word"] ile:

{
"task": "transcribe",
"language": "tr",
"duration": 8.533,
"text": "Randevumuz yarın saat 14.05 için oluşturuldu. Lütfen 10 dakika önce gelin.",
"segments": [
{ "id": 0, "start": 0.0, "end": 8.288, "text": "Randevumuz yarın saat 14.05 için oluşturuldu. Lütfen 10 dakika önce gelin." }
],
"words": [
{ "word": "Randevumuz", "start": 0.0, "end": 0.968, "probability": 0.872 },
{ "word": "yarın", "start": 0.968, "end": 2.888, "probability": 0.995 }
]
}

srt:

1
00:00:00,000 --> 00:00:08,288
Randevumuz yarın saat 14.05 için oluşturuldu. Lütfen 10 dakika önce gelin.

text düz metin, vtt WebVTT altyazı döndürür.

İki model de 25 Ekim 2026'ya kadar bakiyenizden ücret düşmeden çalışır. Bu dönemde kullanıcı başına günlük sınır vardır:

Model Günlük sınır
patientdesk/alania-v1 20.000 karakter
patientdesk/duyu-1 30 dakika ses

Sınırlar her gün 00:00'da (İstanbul) sıfırlanır. Alania'da metnin uzunluğu baştan bilindiği için sınırı aşacak istek gönderilmeden reddedilir. Duyu'da kaydın süresi ancak işlendikten sonra bilinir: sınır dolmadığı sürece istek kabul edilir ve kaydın tamamı sayılır, sınır dolduktan sonraki istekler reddedilir.

Reddedilen istek 429 döner. Retry-After başlığı ve error.details.resetAt alanı ne zaman yeniden deneyebileceğinizi söyler:

{
"error": {
"message": "This request would exceed your free daily allowance for this model (20,000 characters). 1,200 characters remain today. It resets at 00:00 Europe/Istanbul (2026-09-26 21:00 UTC).",
"type": "rate_limit_error",
"details": {
"reason": "free_quota_exhausted",
"scope": "user",
"resetAt": "2026-09-26T21:00:00.000Z",
"retryAfterSeconds": 3600
}
}
}

Kendi sınırınıza ulaşmadan da 429 alabilirsiniz: ücretsiz dönemde tüm kullanıcılar için ortak bir günlük toplam vardır. Bu durumda scope alanı pool olur ve sıfırlanma zamanı aynıdır.

25 Ekim 2026 00:00 (İstanbul) itibarıyla iki model de istekleri 410 model_retired ile yanıtlar. Hata gövdesi, aynı uç noktada çalışan ücretli bir modeli önerir. İstekleriniz sessizce başka bir modele yönlendirilmez; model kimliğini siz değiştirene kadar hesabınızdan ücret çıkmaz.

  • Metinden ses için xai/grok-voice-tts: language alanı zorunludur (ör. "tr"), ses biçimini response_format değil output_format alanından okur ve kendi sesleri vardır; alania sesi bu modelde yoktur.
  • Sesten metin için xai/grok-voice-stt: aynı audio_base64 isteğini kabul eder, yanıtı her zaman JSON olarak verir (text, srt, vtt yoktur).

İsteğinizdeki metin ve ses, işlenmek üzere PatientDesk'e iletilir. PatientDesk'in gizlilik politikasına göre ses bellekte işlenir ve yanıttan hemen sonra silinir, transkriptler saklanmaz; model Hollanda'da (AB) çalışır. Politika, Alania'ya seslendirilmek üzere gönderilen metnin saklanıp saklanmadığını belirtmez. LLMTR bu modellerde metni, sesi ve transkripti kullanım kaydına yazmaz; kayıtta karakter sayısı ve ses süresi tutulur.

Durum Ne zaman
400 invalid_request input 5.000 karakteri aşıyor, bilinmeyen voice, desteklenmeyen audio_format / language / response_format, biçimi anlaşılamayan veya çözülemeyen ses.
400 unsupported_input Duyu'ya file_id gönderildi.
413 Ses dosyası modelin kabul ettiği boyutu ya da süreyi (2 saat) aşıyor. Kaydı bölün.
429 rate_limit_error Günlük ücretsiz sınır doldu. Retry-After sıfırlanmaya kalan süreyi saniye olarak verir.
503 model_unavailable Model geçici olarak meşgul veya kullanılamıyor. Retry-After varsa o süre sonra tekrar deneyin.
410 model_retired 25 Ekim 2026 00:00 (İstanbul) sonrası.

Genel hata biçimi için Hatalar sayfasına bakın.