Sakhanda Wire
NVDA — MSFT — GOOGL — META — AMZN —
← Към новините

Gradium пусна с отворен код Phonon — TTS модел за устройства с 31 млн. параметъра под Apache 2.0

Gradium публикува с отворен код Phonon — семейство от малки модели за преобразуване на текст в реч, създадени за работа на самото устройство. Моделът Gradium Phonon за локално TTS преобразуване се предлага във версии с 31 млн. и 40 млн. параметъра. Английският Phonon 31m се разпространява под лиценза Apache 2.0 и се побира във файл с размер 64,5 MB. Разработчиците получават естествена реч без облачно обръщение, без GPU и без такса за всеки символ.

Накратко

  • Размер: 31 млн. параметъра (без аудио токенизатора), 64,5 MB q8 GGUF, моно изход с честота 24 kHz. Phonon 40m: 40 млн. параметъра, 74,6 MB.
  • Работи на: процесори, телефони, Raspberry Pi 5, браузъри (WASM, WebGPU) и NVIDIA GPU. GPU не е необходим.
  • Производителност: най-висок Elo резултат на английски сред отворените модели, тествани от Gradium; около 7 ms до първото аудио на CPU.
  • Най-добър резултат: 1,70% WER върху труден набор от 500 изречения спрямо 3,50% за Kokoro (оценка на Gradium).
  • Най-слаб резултат: 0,51% WER на Seed-TTS LLM, зад Kokoro (0,45%) и Magpie (0,46%).

Какво представлява Gradium Phonon?

Phonon е семейство модели за TTS с отворени тегла от Gradium — парижка компания за гласов изкуствен интелект, отделила се от Kyutai. То генерира реч локално на телефони, лаптопи, едноплаткови компютри и в браузъри.

Семейството включва три модела:

  • Phonon 31m: само на английски, 37 вградени гласа, Apache 2.0.
  • Phonon 40m: по един модел за всеки език (английски, френски, немски, испански, португалски), CC BY-NC 4.0.
  • Phonon 40m multilingual: всичките 5 езика в един модел, 102 гласа, CC BY-NC 4.0.

Как работи Phonon?

Phonon използва причинно-следствен трансформаторен гръбнак. Префиксът му комбинира вграждания на текста и говорещия. Токенизатор SentencePiece с речник от 4000 токена обработва необработен текст без преобразуване към фонеми.

Гръбнакът генерира по един латентен вектор за всеки кадър от 80 ms. Глава за flow matching превръща този вектор плюс шум в аудио вграждане с една-единствена стъпка. След това по-малък вариант на декодера Mimi на Kyutai извежда PCM аудио с честота 24 kHz. Отделна глава за края на речта определя кога да спре.

Phonon 31m използва 6 трансформаторни слоя, ширина 512 и 8 глави за внимание. Phonon 40m използва 9 слоя със същата ширина. И двата модела са дестилирани от по-голям учителски модел Phonon. Обучението е проведено върху клъстер NVIDIA H100 с NCCL и CUDA Graphs.

Работата се основава на изследванията на Kyutai върху Continuous Audio Language Models и Pocket TTS.

</span> <div class="st"><span class="n">СТЪПКА 2</span><b>SentencePiece</b></div><span class="arr"></span> <div class="st"><span class="n">СТЪПКА 3</span><b>Причинно-следствен трансформатор</b></div><span class="arr"></span> <div class="st"><span class="n">СТЪПКА 4</span><b>Глава за flow matching</b></div><span class="arr"></span> <div class="st"><span class="n">СТЪПКА 5</span><b>Декодер Mimi</b></div> </div> <div class="detail" id="how-d"></div> <div class="frames" id="frames"></div> <div class="ctl"> <button class="btn ghost" id="prev">◀ Назад</button> <button class="btn" id="next">Следваща стъпка </button> <button class="btn ghost" id="play">Поток от кадри</button> <span class="cap">Всяка лента е 1 латентен кадър = 80 ms аудио с честота 24 kHz</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 ms</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 ms до първото аудио на процесор MacBook Air M5</li> <li>3,7 пъти спрямо реалното време на 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>Само на английски при 31 млн. параметъра; моделите 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 с 4000 токена. Няма преобразуване към фонеми, така че добавянето на нови езици е по-лесно.', 'Причинно-следствен трансформатор (6 слоя, ширина 512, 8 глави при 31m) генерира авторегресивно по 1 латентен вектор за всеки кадър от 80 ms.', 'Глава за flow matching превръща всеки латентен вектор плюс шум в непрекъснато аудио вграждане с една-единствена стъпка. Глава за края на речта определя кога да спре.', 'По-малък вариант на декодера Mimi на Kyutai преобразува вгражданията в PCM аудио с честота 24 kHz, което се предава поточно, докато генерирането продължава.']; 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 посочва 1,5% за Phonon 31m; блогът посочва 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 оценители, 8290 гласа. Лентите започват от 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, LLM-подпомогнат WER. Тук 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 ms','29.9x','Блог на Gradium'], ['M5 + KleidiAI + Accelerate','4 нишки','5.4 ms','46.7x','Блог на Gradium'], ['Raspberry Pi 5','CPU','38 ms','3.7x','Блог на Gradium'], ['Snapdragon 8 Elite Gen 5','Oryon CPU','7.5 ms','24x','Gradium с Qualcomm'], ['Arm CPU + KleidiAI','Измерено от Arm','28 ms','15x','Измерено от Arm'], ['NVIDIA L40S','CUDA backend','5 ms','Не е разкрито','Прессъобщение на 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 проведе слепи тестове за слушане по двойки с 1189 оценители и 17 270 гласа. На американски английски Phonon 40m постигна 2117 Elo, а Phonon 31m — 2098. Kokoro постигна 2043, NeuTTS — 2034, а Magpie — 1939.

Точността беше тествана върху публичен набор от трудни изречения. Той съдържа по 500 изречения на език, изпълнени с телефонни номера, имейли и пощенски кодове. Phonon 31m постигна 1,70% WER спрямо 3,50% за Kokoro и 8,71% за NeuTTS Nano.

Вграденото нормализиране на текста е основен фактор за тази разлика.

При по-лесния набор Seed-TTS разликата се свива. Phonon 31m постигна 0,51% LLM WER, докато Kokoro постигна 0,45%.

Колко бърз е Phonon на CPU?

На процесор MacBook Air M5 с 4 нишки Phonon 31m достига до първото аудио за 6,9 ms. Той работи 29,9 пъти по-бързо от реалното време. Kokoro се нуждае от 517 ms, тъй като не предава резултата поточно. С Arm KleidiAI и Apple Accelerate Phonon 31m достига 46,7 пъти спрямо реалното време.

На Raspberry Pi 5 Phonon 31m стартира за 38 ms и работи 3,7 пъти по-бързо от реалното време. Според Gradium на Kokoro са му нужни 7 секунди, за да стартира там.

На Snapdragon 8 Elite Gen 5 Phonon стартира за 7,5 ms и работи 24 пъти по-бързо от реалното време. На NVIDIA L40S CUDA достига до първата реч за 5 ms. Процесор AMD EPYC 7413 се нуждае от 43 ms според прессъобщението.

Сравнение: Phonon срещу Kokoro, NeuTTS Nano и Kitten TTS

ХарактеристикаPhonon 31mPhonon 40m multilingualKokoro-82MNeuTTS NanoKitten TTS v0.8
РазработчикGradiumGradiumhexgradNeuphonicKittenML
Параметри31 млн. (без токенизатора)40 млн.82 млн.~228,7 млн. общо, ~116,8 млн. активни15 млн. / 40 млн. / 80 млн.
Тегла64,5 MB (q8)74,6 MB (q8)Не е разкритоНе е разкрито25 до 80 MB
ЕзициАнглийскиEN, FR, DE, ES, PT8 (v1.0)Английски (колекцията добавя ES, FR, DE)Английски
ЛицензApache 2.0CC BY-NC 4.0Apache 2.0NeuTTS Open License 1.0Apache 2.0
WER при труден набор, EN (оценка на Gradium)1,70%2,11%3,50%8,71%7,40% (вариантът не е посочен)
Elo на английски (оценка на Gradium)2098209720432034Не е тестван
Seed-TTS LLM WER, EN (оценка на Gradium)0,51%0,48%0,45%0,62%Не е тестван
Първо аудио, M5 CPU, 4 нишки6,9 ms8,8 ms (архитектура 40m)517 msНе е разкритоНе е разкрито

Редовете с бенчмаркове са взети от блога на 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 е английски TTS модел с 31 млн. параметъра и размер 64,5 MB под лиценз Apache 2.0.
  • Той отчита 1,70% WER при труден текст спрямо 3,50% за Kokoro.
  • Първото аудио пристига за 6,9 ms на процесор MacBook Air M5.
  • Работи 3,7 пъти по-бързо от реалното време на Raspberry Pi 5.
  • Съществуват многоезични модели 40m, но те са под лиценз, който не позволява търговска употреба.

Разгледайте техническия блог, картата на модела, средата за изпълнение в GitHub и набора от трудни изречения. Всички заслуги са на изследователя на този проект. Също така можете да ни последвате в Twitter и не забравяйте да се присъедините към нашия SubReddit за машинно обучение с над 150 хил. членове и да се абонирате за нашия бюлетин. Чакайте! В Telegram ли сте? Вече можете да се присъедините към нас и в Telegram.

Имате нужда от партньор за популяризирането на вашето GitHub хранилище, страница в Hugging Face, продуктово представяне, уебинар и др.? Свържете се с нас

Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.

Първоначално публикувано от MarkTechPost на

Прочетете оригинала в MarkTechPost ↗

Текстът и изображенията са собственост на MarkTechPost и са възпроизведени тук с посочване на авторството и връзка към оригиналната публикация.

← Към новините

Още новини

Всички последни новини