TR ▾
stableaudio.top

Ses pipeline'ınız için sansürsüz metin API'si

API anahtarı al

Metinden Sese LLM: Ne Yapabilir ve Ne Yapamaz

Metinden sese LLM genellikle birlikte çalışan iki araçtır: istemi yazan bir dil modeli ve onu sese dönüştüren bir ses modeli. Bu API ilk yarıyı kapsar.

Metin panellerinin ses dalgalarına dönüştüğü, bir LLM'nin ses araçları için istemler yazdığı izometrik illüstrasyon

güncellendi

Temel noktalar

  1. Bu hizmet yalnızca metin içerir ve ses, görüntü veya video oluşturmaz.

  2. Bir ses iş akışındaki görevi, istemleri, şarkı sözlerini, sahne senaryolarını ve meta verileri yazmaktır.

  3. Bunu bir ses aracına bağlamak kısa bir betik ve JSON çıktısı gerektirir.

  4. Yaklaşık 600 token girdisi ve 300 çıktı içeren 1.000 istem yaklaşık $0.24'e mal olur.

Kısa cevap: Bir LLM sesi değil, talimatları yazar

Bir metinden sese LLM aradıklarında, genellikle bir cümleyi okuyan ve bir ses dosyası döndüren tek bir modeli hayal ederler. Büyük dil modelleri bunu yapmaz. Metin okur ve yazar. Ses, metin açıklamasını girdi olarak alan, ses için özel olarak yapılmış ayrı bir modelden gelir.

Bu ayrım faydalıdır, çünkü açıklamanın kalitesi çok önemlidir. "Rahatlatıcı müzik" gibi belirsiz bir istem, bir ses modelinin üzerinde çalışması için çok az şey bırakır. Tür, tempo, enstrümanlar, ruh hali, yapı ve uzunluğu belirten spesifik bir istem ise çok daha fazla malzeme sağlar. Bu spesifik açıklamayı hacim halinde, tutarlı bir formatta yazmak bir dil modeli için iyi bir iştir.

Bu site tam olarak o yarımı sunar: OpenAI uyumlu bir metin API'si. Ses üretme, gömme (embedding) ve ince ayar (fine-tuning) yeteneği yoktur. Sesin kendisine ihtiyacınız varsa, onu ses üreten bir araçla eşleştirin ve bu uç noktasını önündeki yazma adımı olarak kullanın. Herhangi bir ses sağlayıcısıyla bağlantımız yoktur, bu nedenle her aracın kendi girdi kurallarını belgelerinden kontrol edin.

Bir metin modelinin ses hattında nasıl yardımcı olduğu

Uygun görevler çıktısı kelimeler olanlardır:

  • İstem yazımı. Kabaca bir fikri tür, tempo, enstrümantasyon ve ruh hali içeren ayrıntılı bir açıklamaya dönüştürün.
  • Şarkı sözleri ve senaryolar. Bir şarkı için kıtalar ve nakarat, veya bir podcast girişi veya sesli kitap bölümü için bir anlatım senaryosu.
  • Çeşitler. Bir kavramdan on alternatif istem, böylece çeşitli yönleri test edebilirsiniz.
  • Meta veriler. Ses oluştuğunda başlıklar, açıklamalar, etiketler ve parça notları.
  • Revizyon. Sonuç hedefi tutturamadıktan sonra, neyin yanlış gittiğine dair notlarınızı kullanarak bir istemi yeniden yazma.

Buradaki model, yasal yetişkin kullanımında içerik reddi olmadan yanıt verecek şekilde ayarlanmıştır; bu durum karanlık hikâye anlatımı, korku dramaları veya olgun oyun diyalogları gibi yoğun kurgu sesli içerikler için önemlidir, çünkü daha katı bir model mükemmel şekilde makul bir isteği bile reddedebilir. Tek kesin kural, cinsel bağlamda reşit olmayanları içeren hiçbir şeyin izin verilmemesidir ve anahtarlar bunun için değildir.

Video istem sayfamız video araçları için aynı fikri kapsar; önce yapılandırılmış bir açıklama yazıp sonra bunu bir oluşturucuya devretme deseni medyalar arasında geçerlidir.

Çalışan bir örnek: bir fikir girer, yapılandırılmış bir istem çıkar

Aşağıdaki araca veri beslemenin en güvenilir yolu yapılandırılmış bir çıktıdır. JSON modu (response_format: {"type":"json_object"}) modelin bir JSON nesnesi döndürmesini sağlar, böylece betiğiniz paragrafları ayrıştırmak yerine adlandırılmış alanları okuyabilir. Bu uç noktaya OpenAI SDK kullanarak bir Python betiği burada verilmiştir.

import json, os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.stableaudio.top/v1",
    api_key=os.environ["UNCENSORED_API_KEY"],
)

system = (
    "You write prompts for text-to-audio tools. Return a JSON object with keys: "
    "genre, tempo_bpm, instruments (list), mood, structure, duration_seconds, prompt. "
    "The prompt field is one paragraph, no more than 60 words."
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": system},
        {"role": "user", "content": "A tense chase scene in a rain-soaked neon city."},
    ],
    response_format={"type": "json_object"},
    temperature=0.8,
)

spec = json.loads(resp.choices[0].message.content)
print(spec["prompt"])

Sistem mesajınızda JSON kelimesini koruyun ve istediğiniz anahtarları listeleyin. Modelin böylece net bir hedefi olur. Sonucu ileri göndermeden önce doğrulayın: tempo_bpm'in bir sayı olup olmadığını ve instruments'in bir liste olup olmadığını kontrol edin ve değilse bir kez yeniden deneyin.

Hızlı bir kontrol için kullanışlı olan aynı istek curl ile şöyle görünür:

curl https://api.stableaudio.top/v1/chat/completions \
  -H "Authorization: Bearer $UNCENSORED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Return JSON with keys mood and prompt for a text-to-audio tool."},
      {"role": "user", "content": "A quiet morning in a mountain village."}
    ]
  }'

Ses modelinin kullanabileceği istemleri yazmak

Bir dil modeli, ne isterseniz o şekilde istem yazar, bu yüzden asıl iş şekli belirlemektir. Birkaç kural çoğu ses aracında geçerliliğini korur.

Aracın istediğini, istediği sırada söyleyin

Ses aracının belgelerini okuyun ve sözlüğünü kopyalayın. Köşeli parantezli bölüm etiketlerine veya virgülle ayrılmış tanımlayıcılardan oluşan bir stil satırına yanıt veriyorsa, o tam formatın bir örneğini sistem mesajınıza ekleyin. Modeller örnekleri yakından taklit eder.

Somut isimler verin

"Seyrek piyano, fırçalı davullar, upright bas, vinil cızırtısı" ifadesi "hoş caz havası"ndan daha iyidir. Modele enstrümanları, tempo aralığını ve dokuyu adlandırmayı ve dolgu sıfatlarını kullanmamayı söyleyin.

Talimatta uzunluk sınırları belirleyin

Birçok ses aracı istem uzunluğunu sınırlar. Sınırı sistem mesajına ekleyin ("60 kelimeyi geçmemeli") ve kodda da uygulayın. Modeller kelime sayılarında kayar, bu yüzden kontrol başarısız olduğunda kısaltın veya yeniden deneyin.

Geri bildirim döngüsü kurun

Bir sonucu duyduktan sonra notunuzu geri besleyin: "İkinci yarıda çok kalabalık, davullar çok yüksek, tonu koru." İkinci bir çağrı, bu notu bağlamda kullanarak önceki istemi revize edebilir. 100,000 token penceresi, modelin neyi sürekli reddettiğinizi öğrenmesini istiyorsanız, uzun bir deneme geçmişini taşımanıza olanak tanır.

Modeli bir ses oluşturucuya bağlamak

Yapıştırma kodu kısadır. Özellik dosyasını oluşturun, doğrulayın, ardından prompt alanını kullandığınız herhangi bir ses hizmetine iletin. Ses çağrısı, her satıcının arayüzü farklı olduğu için bir yer tutucu olarak gösterilmiştir; parametrelerini onların belgelerinden alın.

def make_spec(idea: str) -> dict:
    r = client.chat.completions.create(
        model="uncensored",
        messages=[
            {"role": "system", "content": system},
            {"role": "user", "content": idea},
        ],
        response_format={"type": "json_object"},
    )
    return json.loads(r.choices[0].message.content)

ideas = ["Lo-fi study beat", "Epic orchestral trailer hit", "Haunted music box"]
for idea in ideas:
    spec = make_spec(idea)
    # send spec["prompt"] to your audio generator here
    print(idea, "->", spec["prompt"][:80])

Bunu paralel bir liste üzerinde çalıştırıyorsanız, sınırlara dikkat edin. Tam bir anahtar 8 eşzamanlı istek ve dakikada 300 izin verir; deneme anahtarı 2 ve 60 izin verir. concurrency ile 429 yanıtı aynı anda çok fazla istek olduğunu, rate_limited dakikada çok fazla istek olduğunu ve Retry-After: 5 başlığı beş saniye beklemeniz ve tekrar denemeniz gerektiğini gösterir. Sınırınıza göre boyutlandırılmış küçük bir iş parçacığı havuzu ve bir yeniden deneme yeterlidir.

API belgeleri temperature, top_p, stop ve seed dahil olmak üzere desteklenen parametreleri listeler. Sistem mesajını ayarlarken tekrarlanabilir istemler istediğinizde sabit bir seed yardımcı olur.

Ölçeklenebilir şarkı sözleri, anlatım ve üst veri

İstemler bir ses projesinin ihtiyaç duyduğu tek metin türü değildir. Hattı çalıştırdıktan sonra, aynı uç nokta etrafındaki diğer parçaları yazabilir ve önceki betikten istemci nesnesini yeniden kullanabilirsiniz.

Anlatım senaryoları

Konuşma sesi için, paragraflar arasında bir duraklama işareti ve konuşmacının yavaşlaması gerektiğinde bir not gibi sabit bir gösterimle sahne talimatları içeren bir senaryo isteyin. Hedef okuma süresini modele söyleyin. Yaygın bir kural, bir anlatıcının dakikada yaklaşık 150 kelime okuduğudur, bu yüzden iki dakikalık bir parça için yaklaşık 300 kelime gerekir; bu rakamı isteyin ve kodda kelimeleri sayın.

Sabit yapıda şarkı sözleri

Adlandırılmış bölümler, bir kafiye düzeni ve satır başına bir hece aralığı isteyin. Bir model "dört satır, ABAB, her biri sekiz ila on hece" ifadesini "güzel kafiyeli bir nazım" ifadesinden çok daha iyi takip eder. Ardından kodda bir kontrol çalıştırın ve yalnızca başarısız olan bölümün yeniden yazılmasını isteyin.

Başlıklar, etiketler ve açıklamalar

Ses oluştuğunda, son istemi ve şarkı sözlerini modele geri gönderin ve üç başlık seçeneği, beş etiket ve iki cümlelik bir açıklama isteyin. Bu ucuz, tekrarlayan bir iştir ve bir metin modeli için uygundur.

Hikayeler ve oyunlar

Kurgu sesli içerikler, örneğin bir korku dizisi, interaktif bir hikaye veya bir oyun için diyaloglar genellikle karanlık veya olgun temalar içerir. Model, yasal yetişkin kullanımı için içerik reddi olmadan yanıt verecek şekilde ayarlanmıştır, bu nedenle türle ilgili bir istek bir dersle karşılanmaz. Reşit olmayanların dahil olduğu cinsel içerik kuralı mutlak olarak geçerlidir.

Uzun metrajlı betikleri ekrana akıyorsanız, stream: true ayarını yapın ve parçaları geldikçe okuyun; kullanım akışın sonunda raporlanır.

Bin istem yazmanın maliyeti

Metin, ses adımına kıyasla ucuzdur. Oran, 1M giriş token'ı başına $0.15 ve 1M çıktı token'ı başına $0.50'dir; fatura ön ödemeli krediden, abonelik olmadan kesilir.

Her istek yaklaşık 600 token (sistem mesajı ve fikir) gönderip yaklaşık 300 token JSON döndürüyorsa. 1.000 istek için:

  • Giriş: 600.000 token x $0,15 / 1M = $0,09
  • Çıktı: 300.000 token x $0,50 / 1M = $0,15
  • Toplam: $0,24

Yani bin tamamlanmış istem yaklaşık yirmi dört sente mal olur ve başarısız olan veya reddedilen istekler için ücret alınmaz. Yeni bir hesap, anahtar sayfası üzerindeki tek bir tıklamayla $0,50 deneme kredisi talep edebilir; kart gerekmez, 7 gün boyunca geçerlidir ve yukarıdaki boyutta yaklaşık iki bin isteme bedeldir. Bundan sonra yüklemeler $20'den başlar; bonus aşamaları ve ödeme seçenekleri için fiyatlandırma sayfasına bakın. İstemler eğitim için kullanılmaz.

Sorular ve cevaplar

Metin LLM ses üretebilir mi?

Hayır. Bir dil modeli metin üretir. Ses ayrı bir ses modelinden gelir ve LLM'nin rolü, bu modele gereken metin, şarkı sözleri veya senaryoyu yazmaktır.

Bu API müzik veya konuşma üretir mi?

Hayır. Sadece metin içerir, ses, görüntü veya video üretimi yoktur. Bir ses aracının önündeki yazma adımı olarak tasarlanmıştır.

Bir senaryoya besleyebileceğim yapılandırılmış istemleri nasıl alırım?

response_format'ı json_object olarak ayarlayarak JSON modunu kullanın, anahtarları sistem mesajınızda adlandırın ve kodda ayrıştırılan sonucu doğrulayın.

Çok sayıda istem üretmenin maliyeti nedir?

1M giriş token'ı başına $0,15 ve 1M çıktı token'ı başına $0,50 ile, yaklaşık 600 token giriş ve 300 token çıktı olan 1.000 istem yaklaşık $0,24'e mal olur.

Bunu denemek için ücretsiz bir yol var mı?

Yeni kullanıcılar, kayıt olduktan sonra tek bir tıklama ile $0,50 deneme kredisi talep edebilir. Kart gerekmez ve 7 gün boyunca geçerlidir.

Anahtarınız tek bir formun uzağında

Bir hesap oluşturun, anahtarı kopyalayın ve base URL'yi değiştirin. Kurulum bu kadar basit.

API anahtarı al