Back to model library

Voice cloning / MODEL API

ViiTorVoice-NAR

Input $0.1 · Output $0.5 / 1M tokens

OVERVIEW

Model overview

ViiTorVoice-NAR is a non-autoregressive speech generation model for voice cloning, local speech editing, and emotion / paralinguistic speech control.

Specifications

Category
Voice cloning
Input modalities
text, audio
Output modalities
audio

MODEL PRICING

Model API pricing

Voice cloning

USD per 1M tokens
Voice cloning — USD per 1M tokens
ModelInputOutputCache read
ViiTorVoice-NAR$0.1$0.5$0.05

Public platform rates refresh every five minutes. A dash means a rate is not provided; it does not mean free. Check the console for final charges.

BUILT FOR YOUR STACK

API quickstart

Read the docs

Expand connection setup and run the preparation commands first. Then save and run the Python or cURL example.

Connection setup & preparationActual API address, model ID, and environment variables
API address
https://api.ecohash.com/v1
API model ID
viitor-voice-nar

Replace YOUR_API_KEY with the full inference API key issued in the console. Run setup in macOS/Linux or a compatible shell. JSON cURL examples use the Python standard library to build the request body.

Terminal
python -m pip install requests
export GIGACOMMA_API_BASE_URL='https://api.ecohash.com/v1'
export GIGACOMMA_MODEL_ID='viitor-voice-nar'
export GIGACOMMA_API_KEY="YOUR_API_KEY"

GIGACOMMA_API_KEY is the environment variable name. Its value is an inference API key from the console, not an OpenAI API key. Get an API key

Prepare this local audio file before running the example: reference.wav

quickstart.py
import osimport requestsMODEL_ID = os.environ["GIGACOMMA_MODEL_ID"]BASE_URL = os.environ["GIGACOMMA_API_BASE_URL"].rstrip("/")headers = {"Authorization": f"Bearer {os.environ['GIGACOMMA_API_KEY']}"}with open("reference.wav", "rb") as audio:    response = requests.post(        f"{BASE_URL}/audio/voice-clone", headers=headers,        data={"model": os.environ["GIGACOMMA_MODEL_ID"],            "input": "Hello, welcome to GIGACOMMA!"},        files={"reference_audio": audio}, timeout=120,    )response.raise_for_status()with open("audio.wav", "wb") as output:    output.write(response.content)