BeeSTT API, çağrı kayıtlarını BeePanel'in kullandığı ön ödemeli kredilerle kendi yazılımınızdan transkript eder. Transkripti konuşmacı etiketleri, kısa bir özet ve diliyle birlikte tek bir JSON yanıtında döndürür. Pro lisans değil, bir müşteri portalı hesabı ve bir API anahtarı gerektirir.
Tüm istekler HTTPS üzerinden https://beestt.beepanel.io adresine gider.
Başlamadan önce
- BeeSTT kredisi olan bir müşteri portalı hesabı. Bu sitenin üstündeki Portal girişi ile oturum açın. Kredi fiyatları fiyat sayfasındadır.
- Bir API anahtarı. Portalda BeeSTT > API anahtarları'nı açın ve Anahtar oluştur'u seçin; ilk anahtarınızda portal güncel koşulları Kabul et ve anahtar oluştur ile kabul etmenizi ister. Anahtarı hemen kopyalayın: yalnızca bu seferlik gösterilir.
- Kabul edilen biçimlerden birinde kayıtlar: Ogg/Opus, PCM WAV ya da GSM 6.10 WAV (WAV49). BeeSTT biçimi dosyanın içeriğinden okur; dosya adı ve uzantısı önemli değildir.
Kimlik doğrulama
Anahtarı her isteğin Authorization başlığında gönderin:
Authorization: Bearer bstt_...
Anahtar bstt_ ile başlar ve 48 karakterdir. Onu bir parola gibi gizli
tutun. Açığa çıkarsa portalda yanındaki İptal et'i seçin ve yeni bir
anahtar oluşturun; iptal edilen anahtarla daha önce kabul edilmiş işler yine de
ücretlendirilir ve sonuçları o anahtarla artık okunamaz. İptal etmeden önce
süren işlerin bitmesini bekleyin.
Anahtarı denetlemek
GET /v1/balance anahtarın hesap bakiyesini döndürür ve ücretsizdir.
Anahtarın çalıştığını denetlemek için kullanın:
curl https://beestt.beepanel.io/v1/balance \
-H "Authorization: Bearer $BEESTT_API_KEY"
{ "success": true, "data": { "balance_micro_usd": 4250000 } }
balance_micro_usd, ABD dolarının milyonda biri cinsinden bir tamsayıdır.
Bir kaydı transkript etmek
Kaydı multipart/form-data olarak POST /v1/audio/transcriptions
adresine gönderin:
curl https://beestt.beepanel.io/v1/audio/transcriptions \
-H "Authorization: Bearer $BEESTT_API_KEY" \
-F model=beestt-1 \
-F file=@call.wav
| Alan | Zorunlu | Değer |
|---|---|---|
file |
Evet | Kayıt; en fazla 24 saat. İsteğin tamamı en fazla 256 MiB olabilir. |
model |
Evet | Her zaman beestt-1. |
response_format |
Hayır | Tek biçim ve varsayılan olan diarized_json. |
beestt_feedback_code, beestt_feedback_job_id |
Hayır, ama ikisi birlikte ya da hiçbiri | Bkz. Yeni transkript istemek. |
language ya da prompt gibi diğer tüm alanlar yok sayılmaz, hatayla
reddedilir. BeeSTT dili kendisi algılar.
BeeSTT sonuç için en fazla 10 saniye bekler. Bu sürede biten bir kayıt
sonuçla birlikte 200 döndürür. Bir 200, bir 202 ve başarısız bir işin hatası, işin kimliğini
Beestt-Job-Id başlığında taşır.
{
"task": "transcribe",
"language": "tr",
"text": "Aradığınız için teşekkürler. Nasıl yardımcı olabilirim?",
"segments": [
{
"type": "transcript.text.segment",
"start": 0,
"end": 4,
"text": "Aradığınız için teşekkürler. Nasıl yardımcı olabilirim?",
"speaker": "A"
}
],
"beestt": {
"job_id": "01928f6e-6f3c-7a1b-9c2d-3e4f5a6b7c8d",
"result_status": "ok",
"interaction_state": "normal",
"summary": "Temsilci arayanı karşılıyor ve yardım öneriyor.",
"speakers": [{ "id": "A", "name": null }]
}
}
language, kaydın baskın dilinin ISO 639-1 kodudur; belirlenemezseundolur. Başka dillerdeki konuşmalar bu dile çevrilir vebeestt.translated_from_languageso dilleri listeler.segments, metni saniye cinsinden başlangıç ve bitişiyle ve bir konuşmacı etiketiyle (ilk konuşma sırasına göreA,Bvb.) taşır.beestt.speakersbir konuşmacının adını yalnızca kayıtta söyleniyorsa verir; aksi hâldenamedeğerinullolur.beestt.result_statusdeğeriok,partial(bir kısmı eksik ama kullanılabilir metin),no_usable_speech(sessizlik ya da anlaşılmayan konuşma) ya dalanguage_unsupportedolur. Son ikisi metin taşımaz.beestt.interaction_state, modelin görüşmenin nasıl geçtiğine dair tahminidir:positive,normal,tense,problematicya daundetermined. Ticari bir sonuç değil, bir tahmindir.beestt.summary,beestt.speakersvebeestt.translated_from_languagesboşsa yanıtta yer almaz.
Uzun kayıtlar
10 saniye içinde bitmeyen bir kayıt 202 döndürür:
{
"id": "01928f6e-6f3c-7a1b-9c2d-3e4f5a6b7c8d",
"object": "audio.transcription.job",
"status": "processing"
}
Location başlığı işin yolunu, Retry-After ise beklenecek saniyeyi verir.
Kaydı yeniden göndermeyin; bunun yerine işi sorgulayın. Aşağıdaki yanıt
kısaltılmıştır:
curl https://beestt.beepanel.io/v1/jobs/01928f6e-6f3c-7a1b-9c2d-3e4f5a6b7c8d \
-H "Authorization: Bearer $BEESTT_API_KEY"
{
"success": true,
"data": {
"job_id": "01928f6e-6f3c-7a1b-9c2d-3e4f5a6b7c8d",
"status": "completed",
"result_expired": false,
"result": { "task": "transcribe", "language": "tr", "text": "..." }
}
}
statusiş sürerkenreceived,processingya dabilling_pending, sonundacompletedya dafailedolur. Başarısız bir iş hata kodu olmadan yalnızca birfailure_messagetaşır ve ücretlendirilmez.result, bir200yanıtının döndürdüğü nesnenin aynısıdır; iş bitene kadarnullolur.- Sonuç sınırlı bir süre saklanır. Bu süreden sonra iş yine yanıt verir,
ama
result_expireddeğeritrue,resultdeğerinullolur. - İşi sorgulamak ücretsizdir.
Yeni transkript istemek
Bir sonuç hatalıysa aynı kaydı önceki sonuç hakkında geri bildirimle yeniden gönderin:
curl https://beestt.beepanel.io/v1/audio/transcriptions \
-H "Authorization: Bearer $BEESTT_API_KEY" \
-F model=beestt-1 \
-F file=@call.wav \
-F beestt_feedback_code=text_inaccurate \
-F beestt_feedback_job_id=01928f6e-6f3c-7a1b-9c2d-3e4f5a6b7c8d
beestt_feedback_job_id, bu kaydın aynı anahtarla yapılmış önceki
tamamlanmış işidir.
speakers_mixed, text_incomplete, text_inaccurate ve summary_poor
yeni bir transkript üretir ve yeni bir transkript olarak ücretlendirilir.
other ile geri bildirim kaydedilir ve saklanan sonuç, herhangi bir
yeniden gönderim gibi ücretlendirilerek yeniden döndürülür.
Ücretlendirme
partial,no_usable_speechvelanguage_unsupporteddahil her tamamlanan sonuç ücretlendirilir. Fiyatlar ve ücretlendirilen en kısa süre fiyat sayfasındadır.- Başarısız bir iş, reddedilen bir istek ve anahtar için belirlenmiş bir ücretlendirme sınırını aşan bir kayıt ücretlendirilmez.
- Aynı kaydı işi hâlâ sürerken yeniden göndermek ücretsiz olarak aynı işi döndürür. İş bittikten sonra yeniden göndermek yeniden ücretlendirilir: önceki sonuç hâlâ saklanıyorsa BeeSTT aynı sonucu döndürür. Yeni bir transkript için geri bildirim gönderin; bkz. Yeni transkript istemek.
- Bakiye bir kaydı karşılamıyorsa BeeSTT onu transkripsiyona başlamadan
insufficient_balanceile reddeder.
OpenAI istemci kütüphanesi kullanmak
POST /v1/audio/transcriptions, yukarıda listelenen alanlar için OpenAI
Audio API'nin transkripsiyon uç noktasının istek ve yanıt yapısını izler.
Resmî OpenAI Go kütüphanesiyle test edilmiştir; temel adresi ayarlamaya
izin veren diğer OpenAI istemci kütüphanelerinin de aynı şekilde çalışması
beklenir ama test edilmemiştir. Böyle bir kütüphane, BeeSTT
anahtarı, beestt-1 modeli ve diarized_json yanıt biçimiyle
https://beestt.beepanel.io/v1 adresine istek gönderebilir. Şunlara dikkat
edin:
- kütüphane bir
202yanıtını başarı sayabilir; HTTP202durumunu ya daaudio.transcription.jobdeğerliobjectalanını denetleyin, ardından işi sorgulayın; GET /v1/jobs/{job_id}veGET /v1/balanceBeeSTT'nin kendi uç noktalarıdır; onları doğrudan çağırın;beesttnesnesi kütüphanenin tanımayabileceği bir eklemedir; onu ham JSON'dan okuyun;- kütüphane başarısız istekleri kendiliğinden yeniliyorsa, yanıtı kaybolan bir gönderimin yeniden denenmesi yeniden ücretlendirilebilir; gönderimler için otomatik yeniden denemeyi kapatın.
Hatalar
POST /v1/audio/transcriptions hataları şu yapıda döndürür:
{
"error": {
"message": "The requested model does not exist. Submit the generic BeeSTT model.",
"type": "invalid_request_error",
"param": "model",
"code": "model_not_found"
}
}
GET /v1/jobs/{job_id} ve GET /v1/balance ise şu yapıda döndürür:
{
"success": false,
"error": {
"code": "job_not_found",
"message": "No such job exists for this API key."
}
}
Mesajlar İngilizcedir. Mesaj metnine değil, code değerine göre işlem
yapın.
| HTTP | code |
Anlamı ve yapılacak |
|---|---|---|
| 400 | missing_parameter |
Zorunlu bir alan eksik; param onu adlandırır. |
| 400 | unsupported_parameter |
BeeSTT'nin kabul etmediği bir alan gönderildi. Onu kaldırın. |
| 400 | invalid_feedback |
Geri bildirim kodu beş koddan biri değil ya da önceki iş bu kaydın bu anahtarla tamamlanmış bir işi değil. |
| 401 | invalid_api_key |
Anahtar eksik, bozuk ya da tanınmıyor. |
| 402 | insufficient_balance |
Bakiye kaydı karşılamıyor. Portaldan kredi ekleyin. |
| 403 | key_revoked |
Anahtar iptal edildi. Yeni bir anahtar oluşturun. |
| 403 | agreement_required |
Hesap güncel koşulları kabul etmedi. Destekle iletişime geçin. |
| 404 | model_not_found |
model değeri beestt-1 değil. |
| 404 | job_not_found |
Bu anahtar için böyle bir iş yok. |
| 413 | upload_too_large |
İstek 256 MiB'ı aşıyor. |
| 415 | unsupported_media_type |
Kayıt Ogg/Opus, PCM WAV ya da GSM 6.10 WAV değil 24 saatten uzun ya da okunamıyor veya istek multipart/form-data değil. |
| 422 | usage_limit_exceeded |
Kayıt bu anahtar için belirlenen bir ücretlendirme sınırını aşıyor; hiçbir şey ücretlendirilmedi. |
| 429 | rate_limit_exceeded |
Anahtar çok fazla istek gönderdi ya da aynı anda süren çok fazla işi var. Bekleyip yeniden deneyin. |
| 502 | generation_failed |
Transkripsiyon başarısız oldu ve hiçbir şey ücretlendirilmedi. Kaydı yeniden gönderin. |
| 500, 503 | internal_error, service_unavailable, pipeline_unavailable, tariff_unavailable |
BeeSTT şu anda istek alamıyor. Daha sonra yeniden deneyin. |
İlgili makaleler
OpenAI, sahibinin ticari markasıdır. BeeSTT bağımsız bir hizmettir; OpenAI ile bağlantılı değildir ve OpenAI tarafından onaylanmamıştır.