Gradium відкрила код Phonon — TTS-моделі для пристроїв із 31 млн параметрів під Apache 2.0
Gradium відкрила вихідний код Phonon — сімейства невеликих моделей перетворення тексту на мовлення, створених для роботи безпосередньо на пристрої. Модель Gradium Phonon для локального синтезу мовлення доступна у версіях на 31 і 40 млн параметрів. Англомовна Phonon 31m поширюється за ліцензією Apache 2.0 і займає 64,5 МБ. Розробники отримують природне мовлення без звернення до хмари, графічного процесора та оплати за кожен символ.
Коротко
- Розмір: 31 млн параметрів (без аудіотокенізатора), 64,5 МБ у форматі q8 GGUF, монофонічний вихід 24 кГц. Phonon 40m: 40 млн параметрів, 74,6 МБ.
- Працює на: процесорах, телефонах, Raspberry Pi 5, у браузерах (WASM, WebGPU) та на графічних процесорах NVIDIA. GPU не потрібен.
- Продуктивність: найвищий показник Elo серед відкритих моделей англійською мовою, протестованих Gradium; близько 7 мс до першого аудіо на CPU.
- Найкращий результат: 1,70% WER на складному наборі з 500 речень проти 3,50% у Kokoro (оцінювання Gradium).
- Найгірший результат: 0,51% WER Seed-TTS LLM, що поступається Kokoro (0,45%) і Magpie (0,46%).
Що таке Gradium Phonon?
Phonon — це сімейство моделей синтезу мовлення з відкритими вагами від Gradium, паризької компанії у сфері голосового ШІ, створеної на базі Kyutai. Воно генерує мовлення локально на телефонах, ноутбуках, одноплатних комп’ютерах і в браузерах.
Сімейство має три моделі:
- Phonon 31m: лише англійська мова, 37 вбудованих голосів, Apache 2.0.
- Phonon 40m: по 1 моделі для кожної мови (англійська, французька, німецька, іспанська, португальська), CC BY-NC 4.0.
- Phonon 40m multilingual: усі 5 мов в 1 моделі, 102 голоси, CC BY-NC 4.0.
Як працює Phonon?
Phonon використовує причинно-наслідкову трансформерну основу. Її префікс поєднує текстові та голосові ембеддинги. Токенізатор SentencePiece зі словником на 4 000 токенів обробляє необроблений текст без перетворення на фонеми.
Основа генерує 1 латентний вектор на кожен 80-мілісекундний кадр. Голова flow matching перетворює цей вектор разом із шумом на аудіоембеддинг за один крок. Потім менший варіант декодера Mimi від Kyutai виводить PCM-аудіо з частотою 24 кГц. Окрема голова завершення мовлення визначає, коли зупинитися.
Phonon 31m використовує 6 трансформерних шарів, ширину 512 і 8 голів уваги. Phonon 40m використовує 9 шарів за тієї самої ширини. Обидві моделі дистильовані з більшої моделі-вчителя Phonon. Навчання проводилося на кластері NVIDIA H100 із використанням NCCL і CUDA Graphs.
Ця робота спирається на дослідження Kyutai під назвою Continuous Audio Language Models і Pocket TTS.
Назад</button>
<button class="btn" id="next">Наступний крок </button>
<button class="btn ghost" id="play">Потокове відтворення кадрів</button>
<span class="cap">Кожна смуга — це 1 латентний кадр = 80 мс аудіо з частотою 24 кГц</span>
</div>
</div>
<div class="panel" id="p-bench">
<div class="seg" id="bseg">
<button class="on" data-b="wer">WER на складному наборі (менше — краще)</button>
<button data-b="elo">Elo англійською (більше — краще)</button>
<button data-b="seed">WER Seed-TTS</button>
</div>
<div id="bars"></div>
<div class="note" id="bnote"></div>
</div>
<div class="panel" id="p-speed">
<div class="hw" id="hw"></div>
<div class="gauge">
<div class="gc"><div class="k">Час до першого аудіо</div><div class="val" id="g1">6.9 мс</div><div class="src" id="g1s"></div></div>
<div class="gc"><div class="k">Швидкість у порівнянні з реальним часом</div><div class="val" id="g2">29.9x</div><div class="src" id="g2s"></div></div>
</div>
<div class="note">Рядки з блогу Gradium стосуються Phonon 31m; у рядках партнерів і пресрелізу варіант моделі не зазначено. Вище значення «x у реальному часі» означає більше секунд аудіо на секунду обчислень. Вимірювання Gradium і партнерів під час запуску.</div>
</div>
<div class="panel" id="p-trade">
<div class="to">
<div class="tc p"><h4>У чому Phonon 31m має перевагу</h4><ul>
<li>1,70% WER на складному наборі проти 3,50% у Kokoro</li>
<li>6,9 мс до першого аудіо на CPU MacBook Air M5</li>
<li>3,7x у реальному часі на Raspberry Pi 5</li>
<li>Ваги, токенізатор і голоси за ліцензією Apache 2.0</li></ul></div>
<div class="tc c"><h4>У чому модель поступається</h4><ul>
<li>0,51% WER Seed-TTS, позаду Kokoro з результатом 0,45%</li>
<li>Лише англійська мова у версії 31M; моделі 40m мають ліцензію CC BY-NC</li>
<li>На довгих текстах просодія скидається між реченнями</li>
<li>Усі бенчмарки проведені Gradium</li></ul></div>
</div>
</div>
<div class="ft"><span>Джерела: gradium.ai/blog, huggingface.co/gradium · числа, повідомлені розробниками</span><span class="brand">Створено Marktechpost</span></div>
</div>
<script>
(function(){
var R=document.getElementById('mtp-phonon');
function send(){try{parent.postMessage({mtpFrameHeight:R.offsetHeight+40,id:'mtp-phonon'},'*')}catch(e){}}
R.querySelectorAll('.tab').forEach(function(t){t.addEventListener('click',function(){
R.querySelectorAll('.tab').forEach(function(x){x.classList.remove('on')});t.classList.add('on');
R.querySelectorAll('.panel').forEach(function(p){p.classList.remove('on')});
R.querySelector('#p-'+t.dataset.t).classList.add('on');
if(t.dataset.t==='bench')drawBars(cur);
setTimeout(send,60);});});
R.querySelectorAll('.mc').forEach(function(c){c.addEventListener('click',function(){
R.querySelectorAll('.mc').forEach(function(x){x.classList.remove('on')});c.classList.add('on');
document.getElementById('fam-d').textContent=c.dataset.d;setTimeout(send,30);});});
var steps=['Введіть текст і голосовий ембеддинг. Голос може бути вбудованим, клонованим або створеним у Gradium Studio, після чого він працює локально.',
'Необроблений текст перетворюється на токени за допомогою словника SentencePiece на 4 000 токенів. Перетворення на фонеми не використовується, тому додавати нові мови простіше.',
'Причинно-наслідковий трансформер (6 шарів, ширина 512, 8 голів у версії 31m) авторегресійно генерує 1 латентний вектор на кожен 80-мілісекундний кадр.',
'Голова flow matching перетворює кожен латентний вектор разом із шумом на безперервний аудіоембеддинг за один крок. Голова завершення мовлення визначає, коли зупинитися.',
'Менший варіант декодера Mimi від Kyutai перетворює ембеддинги на PCM-аудіо з частотою 24 кГц, яке передається потоково під час продовження генерації.'];
var si=0,sts=R.querySelectorAll('.st');
function setStep(i){si=(i+5)%5;sts.forEach(function(s,k){s.classList.toggle('on',k===si)});document.getElementById('how-d').textContent=steps[si];}
setStep(0);
document.getElementById('next').onclick=function(){setStep(si+1)};
document.getElementById('prev').onclick=function(){setStep(si-1)};
var F=document.getElementById('frames');for(var i=0;i<24;i++){var d=document.createElement('div');d.className='fr';F.appendChild(d);}
var tm=null;document.getElementById('play').onclick=function(){
var fr=F.children,k=0;clearInterval(tm);setStep(2);
for(var j=0;j<fr.length;j++){fr[j].classList.remove('live');fr[j].style.height='20%';}
tm=setInterval(function(){if(k>=fr.length){clearInterval(tm);setStep(4);return;}
fr[k].classList.add('live');fr[k].style.height=(30+Math.round(Math.abs(Math.sin(k*1.3))*65))+'%';
if(k===8)setStep(3);k++;},110);};
var B={wer:{max:9,u:'%',rows:[['Phonon 31m',1.70,1],['Phonon 40m multi',2.11,1],['Phonon 40m',2.22,1],['Kokoro',3.50],['Kitten TTS',7.40],['NeuTTS Nano',8.71]],
n:'500 складних англійських речень (номери телефонів, електронні адреси, поштові індекси). Magpie набрала 27,51%, тому її немає на цій шкалі. На сторінці Hugging Face для Phonon 31m зазначено 1,5%; у блозі — 1,70%.'},
elo:{max:2150,min:1900,u:'',rows:[['Phonon 40m',2117,1],['Phonon 31m',2098,1],['Phonon 40m multi',2097,1],['Pocket TTS 100m',2056],['Kokoro',2043],['NeuTTS',2034],['Magpie',1939]],
n:'Сліпі попарні тести прослуховування, американська англійська: 468 оцінювачів, 8 290 голосів. Стовпці починаються з 1900 Elo.'},
seed:{max:0.7,u:'%',rows:[['Phonon 40m',0.45,1],['Kokoro',0.45],['Magpie',0.46],['Phonon 40m multi',0.48,1],['Phonon 31m',0.51,1],['NeuTTS',0.62]],
n:'Речення англійською мовою з набору Seed-TTS, оцінювання WER за допомогою LLM. Тут Phonon 31m поступається Kokoro і Magpie.'}};
var cur='wer';
function drawBars(k){cur=k;var b=B[k],h='';b.rows.forEach(function(r){h+='<div class="bar'+(r[2]?' me':'')+'"><span class="lb">'+r[0]+'</span><div class="tr"><div class="fl" data-w="'+(((r[1]-(b.min||0))/(b.max-(b.min||0)))*100).toFixed(1)+'"></div></div><span class="v">'+(k==='elo'?r[1]:r[1].toFixed(2)+b.u)+'</span></div>'});
document.getElementById('bars').innerHTML=h;document.getElementById('bnote').textContent=b.n;
setTimeout(function(){R.querySelectorAll('#bars .fl').forEach(function(f){f.style.width=f.dataset.w+'%'})},40);setTimeout(send,80);}
R.querySelectorAll('#bseg button').forEach(function(x){x.onclick=function(){R.querySelectorAll('#bseg button').forEach(function(y){y.classList.remove('on')});x.classList.add('on');drawBars(x.dataset.b);}});
drawBars('wer');
var H=[['MacBook Air M5 CPU','4 потоки, без KleidiAI','6.9 мс','29.9x','Блог Gradium'],
['M5 + KleidiAI + Accelerate','4 потоки','5.4 мс','46.7x','Блог Gradium'],
['Raspberry Pi 5','CPU','38 мс','3.7x','Блог Gradium'],
['Snapdragon 8 Elite Gen 5','CPU Oryon','7.5 мс','24x','Gradium спільно з Qualcomm'],
['Arm CPU + KleidiAI','Виміряно Arm','28 мс','15x','Виміряно Arm'],
['NVIDIA L40S','Бекенд CUDA','5 мс','Не розголошується','Пресреліз Gradium']];
var hw=document.getElementById('hw'),hh='';H.forEach(function(r,i){hh+='<div class="hwc'+(i?'':' on')+'" data-i="'+i+'"><b>'+r[0]+'</b><small>'+r[1]+'</small></div>'});hw.innerHTML=hh;
function count(el,txt){var m=txt.match(/[\d.]+/);if(!m){el.textContent=txt;return;}var end=parseFloat(m[0]),dec=(m[0].split('.')[1]||'').length,suf=txt.slice(m.index+m[0].length),t0=null;
function f(ts){if(!t0)t0=ts;var p=Math.min((ts-t0)/600,1);el.textContent=(end*p).toFixed(dec)+suf;if(p<1)requestAnimationFrame(f);}requestAnimationFrame(f);}
function pick(i){var r=H[i];R.querySelectorAll('.hwc').forEach(function(c){c.classList.toggle('on',+c.dataset.i===i)});
count(document.getElementById('g1'),r[2]);count(document.getElementById('g2'),r[3]);
document.getElementById('g1s').textContent=r[4];document.getElementById('g2s').textContent=r[4];}
R.querySelectorAll('.hwc').forEach(function(c){c.onclick=function(){pick(+c.dataset.i)}});
pick(0);
window.addEventListener('load',send);window.addEventListener('resize',send);setTimeout(send,300);
})();
</script>
</body>
</html>
" style="width:100%;height:600px;border:0;display:block;background:transparent;" loading="lazy" scrolling="no">
Як Phonon показує себе в бенчмарках?
Gradium провела сліпі попарні тести прослуховування за участю 1 189 оцінювачів і 17 270 голосів. В американській англійській Phonon 40m отримала 2117 Elo, а Phonon 31m — 2098. Kokoro отримала 2043, NeuTTS — 2034, а Magpie — 1939.
Точність перевіряли на загальнодоступному наборі складних речень. Він містить по 500 речень для кожної мови, наповнених номерами телефонів, електронними адресами та поштовими індексами. Phonon 31m показала WER 1,70% проти 3,50% у Kokoro та 8,71% у NeuTTS Nano.
Вбудована нормалізація тексту значною мірою пояснює цю різницю.
На простішому наборі Seed-TTS розрив скорочується. Phonon 31m показала 0,51% LLM WER, тоді як Kokoro — 0,45%.
Наскільки швидко Phonon працює на CPU?
На CPU MacBook Air M5 із 4 потоками Phonon 31m генерує перше аудіо за 6,9 мс. Вона працює у 29,9 раза швидше за реальний час. Kokoro потребує 517 мс, оскільки не підтримує потокову передачу. З Arm KleidiAI та Apple Accelerate Phonon 31m досягає швидкості у 46,7 раза вищої за реальний час.
На Raspberry Pi 5 Phonon 31m запускається за 38 мс і працює у 3,7 раза швидше за реальний час. За словами Gradium, Kokoro потребує там 7 секунд для запуску.
На Snapdragon 8 Elite Gen 5 Phonon запускається за 7,5 мс зі швидкістю у 24 рази вищою за реальний час. На NVIDIA L40S CUDA генерує перше мовлення за 5 мс. Процесору AMD EPYC 7413 потрібно 43 мс, згідно з даними пресрелізу.
Порівняння: Phonon проти Kokoro, NeuTTS Nano та Kitten TTS
| Функція | Phonon 31m | Phonon 40m multilingual | Kokoro-82M | NeuTTS Nano | Kitten TTS v0.8 |
|---|---|---|---|---|---|
| Розробник | Gradium | Gradium | hexgrad | Neuphonic | KittenML |
| Параметри | 31M (без токенізатора) | 40M | 82M | ~228,7M загалом, ~116,8M активних | 15M / 40M / 80M |
| Ваги | 64,5 МБ (q8) | 74,6 МБ (q8) | Не розголошується | Не розголошується | 25–80 МБ |
| Мови | Англійська | EN, FR, DE, ES, PT | 8 (v1.0) | Англійська (колекція також містить ES, FR, DE) | Англійська |
| Ліцензія | Apache 2.0 | CC BY-NC 4.0 | Apache 2.0 | NeuTTS Open License 1.0 | Apache 2.0 |
| WER на складному наборі, EN (оцінювання Gradium) | 1,70% | 2,11% | 3,50% | 8,71% | 7,40% (варіант не зазначено) |
| Elo англійською (оцінювання Gradium) | 2098 | 2097 | 2043 | 2034 | Не тестувалася |
| Seed-TTS LLM WER, EN (оцінювання Gradium) | 0,51% | 0,48% | 0,45% | 0,62% | Не тестувалася |
| Перше аудіо, CPU M5, 4 потоки | 6,9 мс | 8,8 мс (архітектура 40m) | 517 мс | Не розголошується | Не розголошується |
Рядки бенчмарків взято з блогу Gradium і сторінки моделі. Дані про розмір, мови та ліцензію взято з власних сторінок кожної моделі.
Як розробники можуть розгорнути Phonon?
Середовище виконання поширюється за ліцензією MIT або Apache-2.0. Воно підтримує Rust, Python (pip install ptts), Swift, C, C++ і браузер через phonon-tts. Також доступні сервер, сумісний з OpenAI, і сервер WebSocket.
Phonon завантажується в Transformers, MLX-Audio, Ollama та LM Studio. Клонування і дизайн голосу виконуються в Gradium Studio, після чого голос працює локально.
Основні висновки
- Phonon 31m — це англомовна модель синтезу мовлення на 31 млн параметрів і 64,5 МБ за ліцензією Apache 2.0.
- Вона демонструє WER 1,70% на складному тексті проти 3,50% у Kokoro.
- Перше аудіо з’являється за 6,9 мс на CPU MacBook Air M5.
- На Raspberry Pi 5 вона працює у 3,7 раза швидше за реальний час.
- Мультимовні моделі 40m існують, але поширюються за некомерційною ліцензією.
Ознайомтеся з технічним блогом, сторінкою моделі, середовищем виконання на GitHub та набором складних речень. Усі права на згадування належать досліднику цього проєкту. Також підписуйтеся на нас у Twitter і не забудьте приєднатися до нашого сабреддіту про машинне навчання зі 150 тисячами+ учасників та підписатися на нашу розсилку. Стривайте! Ви є в Telegram? Тепер ви також можете приєднатися до нас у Telegram.
Потрібно співпрацювати з нами для просування вашого репозиторію GitHub, сторінки на Hugging Face, релізу продукту, вебінару тощо? Зв’яжіться з нами
Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.