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
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
| Alan | Zorunlu | Açıklama |
|---|---|---|
voice_id | evet | /api/voices listesinden ses kimliği |
text | evet | Seslendirilecek metin (en fazla 500 karakter) |
speed | hayır | Konuşma hızı, 0.5–2.0 (varsayılan 1.0) |
exaggeration | hayır | Duygu/stil, 0–1 — yalnız local seslerde |
cfg_weight | hayır | Stabilite, 0–1 — yalnız local seslerde |
temperature | hayır | Çeşitlilik, 0.1–1.5 — yalnız local seslerde |
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.
.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 | Örnek | Ne işe yarar |
|---|---|---|
| Sunucu / port | sip.coralmesh.io:5060 | Trunk hedefi (UDP) |
| SIP kullanıcı adı | vsp3 | Trunk kimliği — her müşteriye özel |
| SIP şifresi | panelde gösterilir | Kimlik doğrulama (şifresiz bağlantı kabul edilmez) |
| Agent dahilileri | 9003 → Mahi Destek | Hangi numaranın hangi agent'ı açacağı |
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
- Santralde trunk'ın Registered göründüğünü kontrol edin
(
pjsip show registrations/sofia status gateway coralSpeak). - Dahili bir telefondan agent dahilisini (ör.
9003) arayın. - Karşılama cümlesini duymalısınız; konuşun, operatör cevap versin.
- Panelde Kullanım sayfasında çağrının işlendiğini görün.
3 · Hata kodları
| Kod | Anlamı | Ne yapmalı |
|---|---|---|
401 | Geçersiz API anahtarı | X-API-Key başlığını ve anahtarın aktifliğini kontrol edin |
402 | Ücretsiz deneme kotası doldu | Hesabınızı yükseltin ya da bizimle iletişime geçin |
404 | Ses bulunamadı | voice_id size görünen bir ses olmalı (/api/voices) |
429 | Çok fazla istek | Bir süre bekleyip tekrar deneyin |
503 | Seç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.