Geliştirici rehberi

API Dokümanı

İki şey yapabilirsiniz: metinden ses üretmek (HTTP API) ve santralinizi bağlayıp çağrıları yapay zeka operatörüne açtırmak (SIP trunk).

1 · Ses üretme API'si 2 · Santral entegrasyonu 3 · Hata kodları

1 · Ses üretme API'si

Kimlik doğrulama

Her istekte X-API-Key başlığı gönderin. Anahtarınızı panelde Konuşma Üret → API anahtarı bölümünden alırsınız; her kullanıcının kendi anahtarı vardır ve ürettiği ses kendi kullanımına yazılır.

X-API-Key: vsk_u_xxxxxxxxxxxxxxxxxxxxxxxx

Sesleri listele

GET /api/voices — kullanabileceğiniz sesleri döner (hazır sesler + kendi klonladıklarınız).

curl -H "X-API-Key: $CORALSPEAK_KEY" https://api-coralSpeak.coralmesh.io/api/voices
[
  { "id": 1, "name": "Selin", "gender": "kadin", "provider": "local",  "available": true },
  { "id": 11,"name": "Aylin",  "gender": "kadin", "provider": "cloud",  "available": true }
]

provider sesin hangi motorda üretildiğini söyler: local (kendi GPU'muzda üretilir, ses klonlama yapılabilir) veya cloud (yönetilen motor, hazır sesler). Kullanım açısından ikisi de aynı şekilde çağrılır.

Ses üret (WAV)

POST /api/tts — tüm sesi tek parça audio/wav olarak döner. Kısa metinler için en basit yol.

curl -X POST https://api-coralSpeak.coralmesh.io/api/tts \
  -H "X-API-Key: $CORALSPEAK_KEY" \
  -H "Content-Type: application/json" \
  -d '{"voice_id": 1, "text": "Merhaba, size nasıl yardımcı olabilirim?"}' \
  --output ses.wav
AlanZorunluAçıklama
voice_idevet/api/voices listesinden ses kimliği
textevetSeslendirilecek metin (en fazla 500 karakter)
speedhayırKonuşma hızı, 0.5–2.0 (varsayılan 1.0)
exaggerationhayırDuygu/stil, 0–1 — yalnız local seslerde
cfg_weighthayırStabilite, 0–1 — yalnız local seslerde
temperaturehayırÇeşitlilik, 0.1–1.5 — yalnız local seslerde
Parametre vermezseniz sesin kendi doğal (varsayılan) ayarı uygulanır — en iyi kaliteyi almanın en kolay yolu budur. cloud seslerinde yalnız speed etkilidir.

Ses üret (akış — düşük gecikme)

POST /api/tts/stream — ses cümle cümle üretilip akıtılır. İlk cümle, metnin tamamı bitmeden gelmeye başlar; uzun metinlerde beklemezsiniz. Canlı telefon operatörünün kullandığı yolun aynısıdır.

Dikkat: dönen içerik WAV değil, ham PCM'dir — 24000 Hz, 16-bit little-endian, tek kanal. Oynatıcınıza bu formatı bildirin ya da baytların başına 44 baytlık WAV başlığı ekleyip .wav yapın.
import requests

r = requests.post(
    "https://api-coralSpeak.coralmesh.io/api/tts/stream",
    headers={"X-API-Key": KEY},
    json={"voice_id": 1, "text": "Merhaba. Faturanızı üç yoldan ödeyebilirsiniz."},
    stream=True,
)
with open("ses.pcm", "wb") as f:
    for parca in r.iter_content(4096):   # geldikçe çal ya da yaz
        f.write(parca)

# çalmak için:  ffplay -f s16le -ar 24000 -ac 1 ses.pcm

Node.js örneği

const res = await fetch("https://api-coralSpeak.coralmesh.io/api/tts", {
  method: "POST",
  headers: { "X-API-Key": process.env.CORALSPEAK_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ voice_id: 1, text: "Merhaba, size nasıl yardımcı olabilirim?" }),
});
const wav = Buffer.from(await res.arrayBuffer());
require("fs").writeFileSync("ses.wav", wav);

2 · Santral entegrasyonu (SIP)

Santraliniz coralSpeak'e bir SIP trunk ile bağlanır. Her agent (Satış, Destek…) bir dahili numara alır; santralde o dahiliye gelen çağrıyı trunk üzerinden coralSpeak'e yönlendirirsiniz, çağrıyı yapay zeka operatörü karşılar.

Panelden alacağınız bilgiler

Telefon Bağlantısı sayfasında hazır durur:

BilgiÖrnekNe işe yarar
Sunucu / portsip.coralmesh.io:5060Trunk hedefi (UDP)
SIP kullanıcı adıvsp3Trunk kimliği — her müşteriye özel
SIP şifresipanelde gösterilirKimlik doğrulama (şifresiz bağlantı kabul edilmez)
Agent dahilileri9003 → Mahi DestekHangi numaranın hangi agent'ı açacağı
Codec: G.711 a-law (PCMA) kullanın — Türkiye PSTN standardıdır. Şifreniz sızarsa panelden "şifre yenile" ile anında değiştirebilirsiniz.

Asterisk (pjsip)

; /etc/asterisk/pjsip.conf
[coralSpeak]
type=registration
transport=transport-udp
outbound_auth=coralspeak-auth
server_uri=sip:sip.coralmesh.io:5060
client_uri=sip:vsp3@sip.coralmesh.io:5060

[coralspeak-auth]
type=auth
auth_type=userpass
username=vsp3
password=PANELDEN_ALDIGINIZ_SIFRE

[coralSpeak]
type=endpoint
context=from-internal
disallow=all
allow=alaw,ulaw
outbound_auth=coralspeak-auth
aors=coralspeak-aor

[coralspeak-aor]
type=aor
contact=sip:sip.coralmesh.io:5060

; /etc/asterisk/extensions.conf — her agent kendi dahilisiyle
exten => 9003,1,Dial(PJSIP/9003@coralSpeak)   ; Mahi Destek
exten => 9004,1,Dial(PJSIP/9004@coralSpeak)   ; Selin Satış

FreeSWITCH

<!-- /etc/freeswitch/sip_profiles/external/coralSpeak.xml -->
<include>
  <gateway name="coralSpeak">
    <param name="proxy"    value="sip.coralmesh.io:5060"/>
    <param name="username" value="vsp3"/>
    <param name="password" value="PANELDEN_ALDIGINIZ_SIFRE"/>
    <param name="register" value="true"/>
    <param name="codec-prefs" value="PCMA,PCMU"/>
  </gateway>
</include>

<!-- dialplan -->
<extension name="coralspeak-9003">
  <condition field="destination_number" expression="^9003$">
    <action application="bridge" data="sofia/gateway/coralSpeak/9003"/>
  </condition>
</extension>

Bağlantıyı doğrulama

  1. Santralde trunk'ın Registered göründüğünü kontrol edin (pjsip show registrations / sofia status gateway coralSpeak).
  2. Dahili bir telefondan agent dahilisini (ör. 9003) arayın.
  3. Karşılama cümlesini duymalısınız; konuşun, operatör cevap versin.
  4. Panelde Kullanım sayfasında çağrının işlendiğini görün.
Çağrı düşüyorsa ilk bakılacak yer codec (alaw açık olmalı) ve santralinizin çıkış IP'sidir — panelde IP izin listesine eklenmiş olmalıdır.

3 · Hata kodları

KodAnlamıNe yapmalı
401Geçersiz API anahtarıX-API-Key başlığını ve anahtarın aktifliğini kontrol edin
402Ücretsiz deneme kotası dolduHesabınızı yükseltin ya da bizimle iletişime geçin
404Ses bulunamadıvoice_id size görünen bir ses olmalı (/api/voices)
429Çok fazla istekBir süre bekleyip tekrar deneyin
503Seçilen ses motoru yapılandırılmamışcloud sesi seçtiyseniz yöneticinizin bulut bağlantısını tamamlaması gerekir

Buradaki uçlar API'nin tamamıdır; başka bir şey kullanmanız gerekmez. Sorunuz olursa panelden bize ulaşın.