Generare de voce din text cu Venice TTS

Ce face

venice-audio-speech transformă text în audio prin endpoint-ul Venice POST /api/v1/audio/speech.

Pe scurt: trimiți text, alegi un model TTS, alegi o voce compatibilă cu acel model și primești audio brut, fie ca fișier, fie ca stream HTTP. Este util pentru narațiune, răspunsuri vocale, UI audio, prototipuri de asistenți vocali și fluxuri unde textul trebuie auzit, nu citit.

Endpoint-ul este compatibil cu stilul OpenAI SDK: audio.speech.create() poate funcționa ca drop-in dacă setezi baseURL către Venice. Formatele disponibile sunt mp3, opus, aac, flac, wav și pcm.

Ghidul acesta face parte din All guides.

Când îmi folosește

Folosește această capabilitate când ai nevoie de:

  • narațiune din text;
  • răspunsuri vocale generate automat;
  • audio pentru interfețe, notificări sau prototipuri;
  • o familie anume de voci: xAI, Kokoro, Qwen 3, Inworld, Chatterbox, Orpheus, ElevenLabs Turbo, MiniMax sau Gemini Flash;
  • streaming audio, adică redare pe măsură ce audio-ul este generat;
  • control de stil sau emoție, unde modelul suportă explicit asta.

Modelul recomandat ca default frontier este tts-xai-v1, cu voci precum eve, ara, rex, sal, leo. Schema OpenAPI are ca default tts-kokoro, dar alegerea corectă depinde de voce, limbă și stil.

Pentru muzică nu folosi acest flux; există capabilitate separată pentru generare audio muzicală. Pentru audio către text, folosește transcrierea.

Cum îl invoc / declanșez

Nu există un trigger conversațional public unic pentru această capabilitate. Invocarea sigură este prin API, cu o cheie Venice validă. Cheia se trimite ca Bearer token și nu trebuie pusă în documente, loguri, capturi sau exemple publice.

Forma minimă:

curl https://api.venice.ai/api/v1/audio/speech \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-xai-v1",
    "voice": "eve",
    "input": "Hello, welcome to Venice Voice.",
    "response_format": "mp3",
    "speed": 1.0,
    "streaming": false
  }' --output hello.mp3

Câmpuri importante:

  • input: obligatoriu, maximum 4096 caractere;
  • model: modelul TTS, de exemplu tts-xai-v1;
  • voice: voce compatibilă cu modelul ales;
  • response_format: mp3, opus, aac, flac, wav sau pcm;
  • speed: între 0.25 și 4.0;
  • streaming: true pentru stream audio chunked;
  • language: hint opțional; forma acceptată depinde de model;
  • prompt, temperature, top_p: funcționează doar pe modelele care le suportă.

Exemplu practic

Pentru un răspuns vocal simplu:

{
  "model": "tts-xai-v1",
  "voice": "eve",
  "input": "Salut. Acesta este un test de voce generată.",
  "response_format": "mp3",
  "speed": 1.0,
  "streaming": false
}

Pentru stil emoțional explicit, folosește Qwen 3:

{
  "model": "tts-qwen3-1-7b",
  "voice": "Vivian",
  "input": "We did it!",
  "prompt": "Excited and energetic.",
  "temperature": 0.9,
  "top_p": 0.95
}

La alte familii, stilul vine în principal din alegerea vocii. prompt, temperature sau top_p pot fi ignorate dacă modelul nu le suportă.

Output / unde aterizează

Răspunsul este audio brut. Content-Type corespunde valorii din response_format.

Cu curl --output hello.mp3, fișierul este salvat în directorul curent, cu numele ales de tine. Cu SDK-ul, primești un buffer audio și îl scrii într-un fișier.

Cu streaming: true, corpul HTTP este un stream audio chunked. Clientul trebuie să îl decodeze pe măsură ce vine. Pentru pipeline-uri audio sau Web Audio API, pcm poate fi util: returnează 24 kHz signed-16 LE.

Output-ul nu se publică, trimite sau atașează automat nicăieri. Dacă îl folosești în produse, mesaje sau materiale publice, verifică manual conținutul și dreptul de utilizare. Nu folosi TTS pentru impersonare înșelătoare sau pentru a face pe cineva să pară că a spus ceva ce nu a spus.

Limite / gotchas

input are limită dură de 4096 caractere. Pentru texte lungi, împarte pe propoziții și concatenează audio-ul client-side.

Vocea este specifică modelului. O combinație greșită model/voice produce 400. Numele vocilor sunt case-sensitive: eve nu este EVE, iar af_sky nu este AF_SKY.

Lista autoritativă de voci se verifică prin GET /models?type=tts; citește model_spec.voices pentru modelul ales. Disponibilitatea modelelor se poate schimba, iar unele pot cere plan sau acces special.

language este doar un hint. Unele modele cer cod ISO 639-1, altele nume complet de limbă, iar valori nesuportate pot fi ignorate sau respinse.

speed extrem, ca 0.25 sau 4.0, poate suna artificial. Pentru narațiune, zona practică este de obicei 0.8–1.3.

Unele SDK-uri OpenAI nu expun bine streaming pentru audio.speech.create(). Pentru streaming real, folosește REST direct.

Erori tipice: 400 parametri greșiți, input prea lung sau voice/model invalid; 401 auth sau model cu acces restricționat; 402 sold insuficient; 429 rate limit; 500 / 503 inferență sau capacitate, caz în care retry cu jitter.