Ses ve katalog
GET /v1/chat/catalog genel modelleri, sesleri ve güncel kredi fiyatlarını listeler. Yazılı sohbette POST /v1/chat/completions; konuşma aşağıdaki uç noktaları kullanır.
Modeller ve fiyatlar
Model kataloğu yükleniyor…
Metne konuşma
POST /v1/chat/transcribe, { "audio": "data:audio/webm;base64,..." }'i kabul eder. Düz base64 de desteklenir, 10MB'ye kadar kodu çözülür. text ve language'i döndürür.
Metinden konuşmaya
Model kataloğu yükleniyor…
Etkinleştirilmiş seslerini görmek için bir modeli genişletin. Yöneticiler ses adlarını ve açıklamalarını değiştirebilir. Devre dışı bırakılan sesler katalogdan çıkarılır ve yeni sentez istekleri için kullanılamaz; Geçerli ayarları görmek için bu sayfayı yenileyin. Bir modeli devre dışı bırakmak aynı zamanda tüm seslerini belgelerden ve katalog ses listelerinden kaldırır ve yeni sentez isteklerini reddeder. Bir modelin yeniden etkinleştirilmesi bireysel ses ayarlarını korur. Varsayılan ses veya modeli devre dışı bırakılırsa bunun yerine başka bir etkin modelden etkinleştirilmiş bir ses seçilir.
POST /v1/chat/speech, { "text": "Hello", "voice": "speech-light:af_bella" }'i kabul eder (en fazla 2,000 karakteri). Yapılandırılmış varsayılan için voice'i atlayın. Katalogdan voices[].id'i kullanın; modelId konuşma modelini ve hızını tanımlar. Aileler: Konuşma Standardı, Konuşma Işığı, Konuşma Pro ve İfade Edici Konuşma. Konuşma ve sohbet modelleri bağımsızdır.
Yanıt, audio (MP3 veri URI'si, data:audio/mpeg;base64,...), voice ve billing: { model, credits, characters, price, unit: "1000_characters" }'i içerir. Konuşma Pro dahil tüm sesler MP3'i döndürür. audio'i bir ses öğesinin src'ine atayın veya virgülden sonra 64 tabanının kodunu çözün ve .mp3 olarak kaydedin. Konuşma Pro, istemci tarafında dönüştürme gerektirmez; Ses kimlikleri ve karakter bazlı fiyatlandırma değişmedi. Çalıştırılabilir Python örneğine bakın.
Konuşma akışı
"stream": true'i aynı POST /v1/chat/speech uç noktasına gönderin. Speech Standard, Speech Light, Speech Pro ve Speech Expressive desteği akışı; katalog speechModels[].streaming'i ortaya çıkarıyor. stream'in atlanması veya false olarak ayarlanması yukarıdaki JSON yanıtını korur.
{ "text": "Hello. How was your day?", "voice": "speech-pro:Ashley", "stream": true }Yanıt, JSON, base64 veya SSE değil, Content-Type: audio/mpeg ile sürekli bir MP3 ikili akışıdır. Proxy sesi geldiği anda iletir; Konuşma Pro, artımlı olarak MP3'e dönüştürülür. Bu, bir modelin oluşturma gecikmesini garanti etmez. Metin, otomatik cümle bölme işlemi yapılmadan tek bir istek olarak gönderilir.
curl ve FFmpeg kuruluyken, bu örnek geldiğinde ses çalar:
curl --fail --no-buffer https://api.coldstart.win/v1/chat/speech \
-H "Authorization: Bearer $COLDSTART_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello. How was your day?","voice":"speech-pro:Ashley","stream":true}' \
| ffplay -nodisp -autoexit -f mp3 -i pipe:0Sesli arama istemcisi için yanıt gövdesini aşamalı olarak kullanın ve kalıcı bir MP3 kod çözücü/oynatıcıyı besleyin. Bir tarayıcıda, akış oynatma uygulamasıyla response.body.getReader()ı kullanın; response.blob(), arrayBuffer() ve json() yanıtın tamamını bekleyin. Ağ parçaları, bağımsız MP3 dosyaları değil, isteğe bağlı bayt aralıklarıdır. Kullanıcı araya girdiğinde veya telefonu kapattığında getirmeyi/okuyucuyu iptal edin. Tarayıcıda oynatma, sesin kilidini açmak için hâlâ olağan kullanıcı etkileşimini gerektirir.
Yanıt başlıkları X-Speech-Voice'i (URL kodlu genel ses kimliği), X-Speech-Credits, X-Speech-Characters ve X-Speech-Usage-Id'i açığa çıkarır. Kredi tutarı ilk borçtur; Tamamlanan istekler, akış dışı isteklerle aynı karakter bazlı fiyatı kullanır. Başarısız bir akış veya sunucu işlemi tamamlamadan önce bağlantının kesilmesi, isteğin iadesini yapar ve başarısız kullanımı kaydeder. Sunucu tamamlandıktan sonra yapılan iptal, başarılı bir ödemeyi geri almaz.
Ses başlamadan önce hatalar normal HTTP durumunu ve JSON hata gövdesini kullanır. Ses başladıktan sonra bir arıza nedeniyle bağlantı aniden kesilir; tamamlanmamış çıktıyı atın ve nihai faturalandırma sonucu için Görev geçmişini kontrol edin. HTTP 200'i veya ilk parçayı almayı başarılı tamamlanmanın kanıtı olarak görmeyin. Ek proxy'ler bu yol için yanıt arabelleğe almayı ve sıkıştırmayı devre dışı bırakmalıdır; API, X-Accel-Buffering: no ve Cache-Control: no-store, no-transform'i gönderir.
Konuşma metni içerik politikası tarafından açıkça reddedilirse, her iki yanıt modu da ses başlamadan önce content_policy_violation hata koduyla birlikte HTTP 400'i döndürür. Ücret iade edilir. Aynı metni otomatik olarak yeniden denemeyin; İçerik politikasına uyacak şekilde revize edin. Akış desteği içerik kısıtlamalarını kaldırmaz.
Konuşma talepleri bağımsızdır; İstenilen genel ses kimliğini açıkça iletin. Konuşma JSON'u, ses verileri URI'sini ve faturalandırmayı içerir; akış ses baytlarını döndürür.
Konuşma kredisi = normalleştirilmiş metnin faturalandırılabilir karakter sayısı × model fiyatı / 1,000, yukarı 8 ondalık basamağa yuvarlanır. Speech Light, Speech Pro ve Speech Expressive, seçilen modele göre UTF-16 kod birimlerini sayar: sıradan Çince/İngilizce karakterler bir olarak sayılır ve 😀 gibi tamamlayıcı bir karakter iki olarak sayılır. Konuşma Standardı Unicode kod noktalarını kullanır. Kataloğun speechModels[].characterCounting'i ve yanıtın billing.character_counting'i sayma kuralını tanımlar (utf16_code_units veya unicode_codepoints); billing.characters faturalanan miktardır. Sentez ve saymadan önce biçimlendirme ve aşama yönleri kaldırılır. Başarısız veya boş sentez iade edilir. Her sentez talebi faturalandırılır; döndürülen sesin yeniden oynatılmasının hiçbir maliyeti yoktur. Konsol, geçerli sayfa oturumu için sesi mesaja ve sese göre önbelleğe alır.