Voice agent teams keep hitting the same wall. The catalog holds 400 voices and the brief asks for the one that is not in it: a Quebecoise receptionist for a Montreal dealership, a narrator in his sixties with lecture hall authority. Briefs outnumber any catalog, and cloning closes the gap one speaker at a time, each carrying sourcing, consent and a licence.
Gradium, the Paris-based voice AI company spun out of the Kyutai research lab, has shipped a different answer. Voice Design reads a written description and returns complete new voices in a few seconds. No reference audio, no speaker, no rights to clear.
Is it deployable? Yes, Voice Design is live in the Gradium API and in Studio, free on every plan including the free tier, and a kept voice runs on the same streaming Text-to-Speech endpoint as any catalog voice, at the same latency and output formats.
The casting brief is the API
The description is the only input the model gets. Gradium’s documentation lists the attributes it responds to, and they read like a casting call: gender, age band, accent or origin, pitch, pace, energy, timbre and resonance, register and manner, and the job the voice is doing. Descriptions run 1 to 500 characters in English, French, Spanish, Portuguese or German. Gradium advises ending with the intended use, because it steers delivery and register rather than only the colour of the voice.
One request returns 1 to 5 candidates, typically ready in 3 to 5 seconds. They are variations on a single character, so a different character means a different description, not more samples.
From candidate to production voice
The flow is four calls. POST /voice-generator/generate mints candidate ids with ready: false. GET /voice-generator/embeddings polls until they flip. Each candidate auditions through the ordinary TTS endpoint, using the candidate id as voice_id. POST /voices/from-embedding promotes the one you keep.
Candidates carry three restrictions converted voices do not: audition text is capped at 100 characters, they are REST only, and the TTS WebSocket and Speech-to-Speech reject them. Unconverted candidates are deleted after 30 days. Converting is free, clears the expiry, and uses one custom voice slot shared with clones. The free tier holds 5, paid plans 1,000.
Sampling is deliberately non-deterministic. Gradium team expands the description first, and that expansion varies per request, so the same prompt with a fixed seed still yields a different voice.
‘
‘ + bars(14) + ‘
‘ +
‘
‘ + id + ‘
‘ +
‘
‘ + (ready ? ‘ready: true’ : ‘ready: false’) + ‘
‘;
}
document.getElementById(‘gen’).addEventListener(‘click’, function(){
made = [];
for(var i=0;i
‘
‘ + r[0] + ‘
‘ +
” +
‘
‘ + r[1].toFixed(suffix===’%’?1:2) + suffix + ‘
‘;
}).join(”);
var fls = el.querySelectorAll(‘.fl’);
var go = function(){
[].slice.call(fls).forEach(function(f,i){
var w = f.getAttribute(‘data-w’) + ‘%’;
if(reduce){ f.style.width = w; }
else { setTimeout(function(){ f.style.width = w; }, 90*i); }
});
};
requestAnimationFrame(go);
post();
}
var mode=”human”;
function drawChart(){
var el = document.getElementById(‘chart’);
if(mode===’human’){
paint(el, human, 100, ‘%’);
document.getElementById(‘parNote’).textContent=”50 percent is par. Win rate is wins plus half of ties, over all comparisons.”;
} else {
paint(el, llm, 5, ”);
document.getElementById(‘parNote’).textContent=”Mean rating over 50 accent prompts. 5 means every requested accent detail is audibly present.”;
}
}
document.getElementById(‘tHuman’).addEventListener(‘click’, function(){
mode=”human”;
this.setAttribute(‘aria-pressed’,’true’);
document.getElementById(‘tLlm’).setAttribute(‘aria-pressed’,’false’);
drawChart();
});
document.getElementById(‘tLlm’).addEventListener(‘click’, function(){
mode=”llm”;
this.setAttribute(‘aria-pressed’,’true’);
document.getElementById(‘tHuman’).setAttribute(‘aria-pressed’,’false’);
drawChart();
});
function drawAccents(){ paint(document.getElementById(‘chart2’), accents, 100, ‘%’); }
renderBrief();
post();
})();


