Strojový překlad · Anglický originál
Modely řeči-to- řeči
Soniqo podporuje dvě rodné rodiny modelů MLX pro konverzační řeč-to- řeč: PersonaPlex 7B a VoiceChat 11B. Oba konzumovat řeč a generovat model audio přímo, ale používají různé duplexní architektury a runtime kontrakty.
Vyberte si model
| Vzor | Konverzační model | Nejlepší uložení |
|---|---|---|
| PersonaPlex 7B | Simultánní plný duplex se Moshi, Depformer a Mimi | Překrývající se chování poslechu / řeči a 18 volitelných hlasů |
| VoiceChat 11B | Kontinuální, framesynchronní duplex s FastConformer, Nemotron- H, Ear- TTS a neurální kodek | 80 ms streaming rámce, textové / funkční události, a checkpoint-rodné řeči |
Tohle jsou konverzační modely řeči k řeči. Hibiki také mapuje řeč přímo na řeč, ale jeho úkolem je streaming řeči překlad, takže je dokumentována samostatně.
PersonaPlex 7B
Full- duplex speech- to- speak dialog model založený na architektuře Moshi (Kyutai). PersonaPlex 7B generuje hlasité odpovědi přímo z mluveného vstupu - není zapotřebí mezitextový plynovod. Model lodí s hlasovými přednastaveními 18 a je k dispozici v 8-bit (doporučeno) a 4- bit kvantifikace. 8-bit je výchozí - je to 30% rychlejší a vytváří soudržné odpovědi, zatímco 4-bit degraduje kvalitu výstupu.
VoiceChat 11B
Duplex speech- to- speak reference: SALM- Duplex: Efektivní a přímé Duplex Modeling pro Speech- to- Speech Language Model (Interspeak 2025), citováno na kartě NVIDIA na vzestupu od VoiceChat.
M5 Pro, 48 GB, uvolnění, 80 ms live cadence, protected-head INT5: tři řízené jízdy měřené celotělové potrubí RTF 0.94, 0.92, a 0.92, s asi 8.70 GB vrchol RSS. První mluvené text dorazil 44.3–46.7 ms a první přehrávatelný zvuk v 74.0–76.4 Ms. To jsou horké výpočty čísla, nenaučil turn-beroucí latence; optimalizován INT8 Výkon nebyl dosud přeměřen.
VoiceChat je druhý rodák MLX Proslov-to- Proslov runtime in speech-swiftKombinuje kauzální vnímání FastConformer, duplexní textové / funkční kanály Nemotron- H, samostatné textové-stabilizované EAR-TTS a 22.05 kHz neurální kodek. 16 kHz mono audio nepřetržitě a vrací textové události plus jeden 1,764-Vzorek výstupní rámeček každý 80 ms.
Použití VoiceChatModel.load(from:), start a VoiceChatSession, a krmit audio s pushAudio. Kompletní svazek musí obsahovat encoder/, llm/, a tts/; starší chápání - pouze svazky jsou zamítnuty.
INT5 udržuje agregovanou kapacitu uvedenou níže RTF 1 na zkoušeném M5 Pro. Všechny tři běhy také držel celkem / rám p95 níže 80 ms, at 76.2–78.6 ms; termín headroom proto zůstává úzký. Treat model turn nástup a hardware výpočet latence jako samostatné měření.
Živý VoiceChat CLI
Promluvte si s Soniqo použití celé chráněné hlavy INT5 svazek, poháněný NVIDIA Nemotron VoiceChat 11B. Příkaz udržuje zachycení a přehrávání na jednom AVAudioEngine pro Apple AEC, proudí na paměti uživatele RNN-T svazku a hraje 22.05 KHz model audio při pokračování v poslechu.
Výchozí příkaz Soniqo je capability- uzemněn: tato CLI může konverzovat a odpovídat na otázky, ale nemůže mít přístup ke kalendářům, upomínkám, aplikacím, účtům, zařízením nebo externím službám. Pro tyto požadavky Soniqo jasně říká, že nemůže provést akci, nežádá o potvrzení, které nemůže splnit, a stručně naznačuje, co uživatel může udělat místo toho.
speech voice-chat
speech voice-chat --input question.wav --output response.wav
Konfigurovatelné nástroje MCP
MCP je zakázán, pokud --mcp-config je dodáván. Provider- neutrální JSON soubor může spustit jakýkoliv stdio MCP server a explicitně vybere, které nalezené nástroje dosáhnou VoiceChat. Záměrně úzký Apple Reminders příklad zobrazí seznam, vytvořit a aktualizovat pracovní toky; vlastní konfigurace může povolit jiné serverové nástroje:
speech voice-chat \
--mcp-config Examples/VoiceChatMCP/apple-reminders.json
Shromážděný příklad připíná poskytovatele EventKit- zálohovaného za apple-reminders-eventkit adaptér. VoiceChat vystavuje pouze kanonický list_reminders, create_reminder, a update_reminder operace - není poskytovatel delete, list- mutace, kalendář, nebo subcommand akce. Seznam objev zůstává privátní adaptéru. Upomínka a její termín jsou spáchány v jednom EventKit uložit, vyhnout se bývalému partial- write selhání, které by mohlo zanechat nedatovanou upomínku. Poskytovatel může sestavit své malé Swift pomocník při prvním použití, takže spuštění má samostatný 60- druhý příspěvek; normální nástroje volání udržet 15-druhý výchozí.
Pouze enabledTools jsou zobrazeny na modelu, s maximálně pěti na session. Nástroje jsou zapsány, pokud konfigurace výslovně uvádí, že readOnlyTools. Zápis implicitní --mcp-write-policy allow, Takže jeden kompletní rodné volání okamžitě provede a jeho skutečný výsledek poskytovatele řídí odpověď; demo upomínek nepřidává druhý potvrzovací obrat. identický dokončený zápis je stále potlačen, dokud čerstvá akustická aktivita. confirm pro explicitní modelově zprostředkované potvrzení nebo deny k vyřazení psaní.
Neexistuje žádný transkript router, regulární výraz matcher, slot extraktor, upomínka návrh stavu, argument opravy, spoken- název resolver, nebo skript asistent řeč. Kontrolní bod sám vybere nástroj a argumenty. Koordinátor validuje enabled- tool členství a JSON typy, použije politiku, hovory MCP, a vrací strukturovaný úspěch nebo selhání prostřednictvím vyškolené funkce-odpověď kanál. Neplatné výsledky poskytovatele, neplatné argumenty, odepřené píše, a nedostupných nástrojů pozastavit nové funkce začíná až do kontrolní bod otevře řečený asistent odbočit; to zabraňuje tiché automatická smyčka při odchodu později restarts model-controlled. Reminders facade vyžaduje pouze name pro vytvoření a zplošťuje všechny seznamy EventKit v jednom list_reminders read. Představuje dlouholeté poskytovatele UUID jako stabilní, session- scoped reference, jako je r1, pak řeší přesný model- vrácený odkaz před update_reminder execution. Jedná se o bezztrátovou kompresi ID, nikoliv přepis nebo přiřazení záměru. Chybějící nebo neplatné hodnoty se vrací do modelu pro přirozené vyjasnění; nikdy nejsou tiše odvodněny ze zobrazeného přepisu.
Model- nativní volání JSON běží asynchronně na cached tiché vkládání. Jakmile je hovor otevřen, síla -PAD textový kanál přeskočí jeho nevyužité 131,072-řádek projekce. Po EOTC, dvoufázová cesta zmrazí sdílený jazyk a Ear- TTS časová osa, zatímco vnější výsledek je nepředvídaný, odpovídající NVIDIAreferenční obal; mikrofony pokračují v vnímání a RNN-T, ale nejsou vloženy jako syntetické PAD pozice. Známé výsledkové tokeny přehrávají v ohraničené 16-token kamínky - předplňte kusy. Relace se vrací mezi volání tokeny a výsledky šarže, vnější MCP I / O běží v samostatném úkolu, a živé vnímání mikrofonu plus RNN-T titulky zůstávají způsobilé v celém. Zadržené uživatelské řeči re-vstoupí do sdílené časové osy na ne více než jeden starý sémantický rámec na živé volání zpět; aktuální rámec zůstává fronta, uplynulý přehrávání audio je tlumený, a neaktivní Ear- TTS pozice synchronizovat později v ohraničené frame kousky. Živá smyčka čte soudržnou funkci a MCP stav snímků každý 160 ms místo toho, aby několik herců volání po každém mikrofonu rámu. Interaktivní palubní deska hlásí aktivní fázi nástroje; strukturované referenční záznamy rodné dekódování, MCP round trip, synchronizace výsledků, model / cache výpočet, a live interleave zbytkové samostatně. Běžný rozhovor a barge- in udržet NVIDIA je 40-frame bezpečnostní pozadí; already- navrhované domorodé nástroje kandidáta může spáchat po osmi prázdné rámy.
Na volnoběhu M5 Pro s 48 GB, tři nativní reminder- seznam frází dosaženo modelově-autorem post- tool řeč 3.56–4.00 sekund po ukončení vstupu s pevným 200 msprovider. rodilý JSON přijata 1.15–1.28 sekund pro 27–31 kroky; 67-symbolický výsledek vzal 0.58–0.72 sekund v pěti předplněních. 67 Přírodní kroky / 5.25 sekund, kdy model opakoval realistický EventKit UUID, versus 37 kroky / o 2.29 sekund s bezztrátovým řešením r1 reference -45% méně token kroky a asi 56% méně dekódování času. Samostatný dvousekundový-poskytovatel stres udržoval provider-čekat mikrofon práce na 19.6 ms p95 a 19.8 ms maximum, takže externí I / O přidá odpověď zpoždění bez držení zachycení. Konečný čistý běh měřen 118 ms microphone-service p95 a 139 ms p95 opožděnost za 80 ms vstupní termíny; ty odhalují krátké výsledky- sync fronty skryté popředí RTF. Místní EventKit se sám odečetl změřený 358 ms po jednom čase MCP start. Jeden testovaný vytvořit frázi byla přepsána správně, ale zvolena běžná řeč spíše než rodné volání; to zůstává model tool- výběr kvality, ne skryté runtime router.
Hranice součtů je sdílená Nemotron- H KV cache: běžná výsledná-podmíněná řeč nemůže tvořit druhou nezávislou kauzální budoucnost, zatímco funkční tokeny jsou generovány nebo přehrávány. Soniqo obnovuje koherentní, model- autorem řeči po <SPECIAL_22> uzavře odpověď nástroje. Plně překrývající svévolné řeči by vyžadovaly spekulativní druhý cache a sloučení politiky, nebo samostatně vyškolené funkce dekodér.
Dítě MCP servery zdědit pouze PATH, HOME, temporary- adresář, a locale proměnné. Kredity musí být předány explicitně v serveru env map; nesouvisející parent- process tajemství nejsou přenášeny. Nakonfigurovaný příkaz stále běží lokálně s aktuálním uživatelem souborový systém a oprávnění aplikace, takže použijte pouze důvěryhodné konfigurační soubory MCP a serverové balíčky.
V 8-bitová funkce projekce je o 518 MB. Během běžné řeči, VoiceChat vyhodnocuje pouze cachový 36 KB PAD / tool- start sonda. Pokud tool- start vyhraje před hranicemi zatáčky, pouze jeho 4,096-value hidden- state kandidát je zachován; full- slovník ověření běží, když se naučil BOS dorazí nebo konečné RNN-T bezpečnostní endpoint vyprší. Pro obecné rodné volání, ověřený hovor JSON pak běží v plné jazykové-model rychlost na vnímání vkládání cached z jedné sekundy ticha místo jednou za 80 ms mikrofonu rámu. MCP výsledek je znám, VoiceChat přehrává ji v ohraničené 16-token carely -předplňte kusy, zachování vyškolené funkce zpětná vazba a jazyk / jazyk cache stavu bez jednoho 11B dekódování na výsledek token. Relace výnosy mezi generované volací tokeny a response- předplňte kusy tak živé vnímání mikrofonu, RNN-T titulky, a udržený-přerušení detekce řeči pokračovat; oddělené meze volání a odezvy konvertují špatně vytvořené PAD- pouze práce do explicitní retry spíše než permanentní stánek.
Přehrávání prebufferů tři 80 ms frames (240 ms) ve výchozím nastavení. Po mezera reproduktoru, to čeká na recovery polštář s rámečkem s rámečky s rámečkovým rámečkem pro restartování. Vylepšení hlasu klesne z osmi na dva kroky po prvním 88 ms call back, nebo když tři snímky fronty; 120 ms call-back, šest queued frames, nebo vstup resynchronizace jde přímo na jeden nouzový krok. Pouze akustické vylepšení - vnímání, RNN-T, a jazykový stav zůstává neporušený. Pokud fronta stále dosáhne svého výchozího RNN- frame / 640 ms limit je ozbrojený místo toho, že je vymazán opakovaných resetů. Skipořízené slova jsou stále označována a mohou vyžadovat opakování. Trvalné přetížení je zacháno.
Přístrojová deska používá metriku směřující k lidem: behind je čtyřmístný mikrofon audio, RTF 0.93× je valivý průměr nad nejnovějšími zvukovými výstupy mikrofonu 120, děleno 80 ms zvuku (pod 1 udržuje krok; nad 1 zaostává), a last 74 ms for 80 ms audio znamená, že poslední hovor vzal 74 ms. Replay události se nepočítají jako extra zvukové jmenovatele. Protože RTF je okno, může zůstat vysoký krátce po jedné drahé operace, i když last Pod rozhovorem, speaker gaps, old-audio skips, a microphone audio skipped aby se zotavení stalo výslovným. PLEASE REPEAT se objeví jen tehdy, když byl mikrofon přeskočen.
Režim mikrofonu používá NVIDIA-style RNN-T turn-taking ve výchozím nastavení. 80 ms frame as blank nebo non-blank. Dva počáteční rámy řeči a tři na pozdější zatáčky zůstávají zachovány-aktivity nedostatky, zatímco jeden uznávaný lexikální token okamžitě paže líný obrat tak kompletní "ano" nebo "kdo jste?" nemůže objevit v titulku a pak čekat na další řeč. Punctuation a neznámé štítky nepoužívají tuto zkratku. VoiceChatUčené předpovědi BOS / EOS zůstávají běžnými rozhodnutími o nízké latenci. Čtyřicet prázdných snímků (3.2 scips) síla BOS pouze v případě, že se naučená hlava nikdy neotevře odezvu, a čtyřicet čerstvých neslepých rámů poskytuje odpovídající bezpečnostní pozadí RNN-T EOS. Přepočítávač slov se resetuje, když Soniqo spustí, takže činnost z dokončeného uživatelského otočení nemůže okamžitě přerušit odpověď. Každý audio rámec stále dosáhne duplex modelu; použití --no-rnnt-turn-taking nechat rozhodnutí BOS / EOS zcela do hlavy naučeného jazyka. Přístrojová deska hlásí RNN-T barge-iny odděleně od podběhů přehrávání.
Frontend RNN-T se shoduje s odrazivým polstrováním NeMo na každém válcování microphone-okenní hraně. Tím se odstraňuje nulový nesoulad, který by mohl změnit mezní nenasytná toková rozhodnutí; nenahrazuje kompaktní hrotovou hlavičku 1,024-token s obecnou large- slovní zásobou ASR.
V normálním režimu je model- native BOS potlačen, dokud není potvrzena uživatelská řeč, takže Soniqo nemluví jako první. --greet explicitně umožňuje první pozdrav. Po slyšitelném obsahu odpovědi zůstane prázdný PAD uvnitř otevřené zatáčky pro alespoň 16 rámy a pro tři rámy na obsah token, když je delší. První přebytek prázdný PAD zavře logický obrat. Tento content- scaled ocas uchovává opožděná slova, že pevný 1.28- druhý cutoff může ztlumit.
Interaktivní režim používá pevnou palubní desku na alternativní obrazovce terminálu, takže aktualizace stavu překreslí místo vyplnění scrollback. Použít --plain pro výstup pouze s přívěskem.
Pro místní diagnózu, --debug-timeline Časová razítka pro každého uživatele a frázi Soniqo a vloží do něj rozebrané nativní argumenty volání, začátek / dokončení MCP, a výslednou synchronizaci cache do stejné chronologie. pronunciation ended v posledním slyšitelném generated-PCM okně; to je model- výstupní čas, ne speaker- zařízení dokončení. Demo záměrně vynechá historické phase- načasování bloky; detailní native- decode, poskytovatel, cache, a mikrofono- tlak metrika zůstává v voicechat-bench JSON. Časová osa může odhalit argumenty nástroje, takže jej nepoužívejte ve sdílených protokolech. Časovače fáze resetovat mezi nativní dekódování a poskytovatele čekat.
Tři. M5 Pro 48 Měřené únikové dráhy GB RTF 0.92, total-frame p95 74.8–75.8 ms, první přehrávatelný zvuk 74.2–74.9 ms, a o 8.74 GB peak RSS. Transcript a odpověď byly shodné po celé trati.
Živé sezení udržují neměnný zvuk 37- frame reproduktoru plus 20 sekundy nedávné historie Ear- TTS, zatímco Nemotron- H udržuje sémantický stav konverzace odděleně. PAD uvnitř obsahu - škálované akustický ocas je vykreslena normálně; pouze později tiché PAD posune kauzálně v dávkách po osmi. To zabraňuje TTS pozornosti a nečinnosti růst bez vázání, aniž by se odřízl mluvený odpověď; --live-speech-context-seconds 0 obnovuje plnou historii TTS a režim souboru zůstává ve výchozím nastavení přesný full- historie.
V 63.6- Druhý. M5 Pro profil s content- safe ocasem, živá cesta měřená agregátem RTF 0.87, final-okénko RTF 0.71, 4.1 ms / fram final- window syntéza, 8.72 maximální RSS GB a 23.67 Vrchní fyzikální stopa GB. Dosáhla se okna s aktivními kroky Speech- active RTF 1.05 a 1.12, takže interaktivní CLI používá reverzibilní dvoukrokový nouzový režim a jednokrokový nouzového režimu. 31 RVQ kódování v jediném průsmyku; chrání živé zachycení, ale není akustická parita s osmistupňovým rozvrhem. Sequential a stáčení idle- cache stavy měly minimální cosinus 0.9999999.
Pro audio diagnózu, referenční hodnota porovnává ohraničené živé codec- okenní vykreslování s kontinuální full- kontextové vykreslování. Dlouhá pauza přítomná v obou byl generován Ear- TTS nebo kodek, ne řečnický fronta; discontinuita nalezen pouze v živé vykreslování bodů směrem kodec- okno šití. Reproduktor mezery zůstávají samostatným playback- underflow metric. Dedikovaný onset- pop detektor skenuje generované lead- in plus první 50 ms trvalé řeči a vlajky vzorek skoky nad oběma 0.05 amplituda a šestinásobek vytrvalosti p99 výchozí hodnota. Scénáře mohou nastavit maximum_suspect_onset_transients na nulu, zatímco vnímání poslechu zůstává konečnou kontrolou kvality.
PersonaPlex architektura a používání
PersonaPlex je multistream autoregresivní model se třemi jádrovými komponenty:
| Součást | Podrobnosti |
|---|---|
| Časový transformátor | 32 vrstev, dim = 4096, 32 hlav, SwiGLU (hidden _ scale = 4.125), RoPE, 8bitová kvantifikovaná (výchozí) |
| Depformer | 6 vrstev, dim = 1024, 16 hlav, MultiLinear (váha _ per _ step = true), dep _ q = 16 |
| Kodek Mimi | 16 kódových knih, frekvence rámu 12,5 Hz, audio výstup 24 kHz |
Modelové procesy 17 proudy současně: 1 textový proud + 8 audio proudy pro uživatele + 8 agenta audio streamů. Tato architektura umožňuje full- duplex konverzace, kde model může poslouchat a mluvit zároveň.
Hlasové předvolby
PersonaPlex obsahuje 18 built- in voice presety napříč přírodním a rozmanitým stylem:
| Kategorie | Předvolby |
|---|---|
| Přírodní ženy | NATF0, NATF1, NATF2, NATF3 |
| Přírodní samec | NATM0, NATM1, NATM2, NATM3 |
| Variabilní žena | VARF0, VARF1, VARF2, VARF3, VARF4 |
| Variabilní muž | VARM0, VARM1, VARM2, VARM3, VARM4 |
Vnitřní monolog
PersonaPlex generuje dva paralelní proudy na každém kroku: 8 audio kodekodek pro Kodek Mimi a jeden textový token pro interní monolog modelu. Textový proud je to, co model je "myšlení", jak to mluví - to může mírně odchýlit od konečného zvuku, ale v praxi to odráží mluvený odpověď dostatečně úzce použít jako živý přepis.
Textové tokeny se vrátí jako syrové SentenSbit kus ID. Dekódovat je s SentencePieceDecoder že PersonaPlex lodě:
import PersonaPlex
import AudioCommon
let model = try await PersonaPlexModel.fromPretrained()
let decoder = model.tokenizer // SentencePieceDecoder?
let result = model.respond(userAudio: userSamples, voice: .NATM0)
let transcript = decoder?.decode(result.textTokens) ?? ""
print(transcript) // "Sure, I can help with that..."
playAudio(result.audio) // 24 kHz mono Float32
V streamingovém režimu, respondStream emity textTokens kousky, jak jsou vyráběny - dekódovat je postupně řídit živý pohled na titulky, zatímco zvuk je stále generování. --transcript CLI vlajka dělá přesně tohle v zákulisí.
Proč na tom záleží: SentencePieceDecoder je postaven na sdílené AudioCommon.SentencePieceModel protobuf čtečka, takže PersonaPlex, OmnilingualaSR a jakékoli budoucí SentencePiece- na bázi modelu dekódovat prostřednictvím stejné implementace tokenizer. Viz Odkaz na vzor SentencePieceModel.
Systémové impulsy
Projít libovolným systémem pohotově jako obyčejný řetězec - není třeba externí tokenizace:
let response = model.respond(
userAudio: audio,
voice: .NATM0,
systemPrompt: "You enjoy having a good conversation."
)
Nebo použít přednastavený model:
assistant- General- účel užitečné asistent (přednastaveno)focused- Stručné, přímé odpovědicustomer-service- Politní podpůrná látka zaměřená na řešeníteacher- Pacient, názorný styl výuky
Použití CLI
Generovat mluvené odpovědi z audio vstupu:
# Basic speech-to-speech
.build/release/speech respond --input question.wav
# Choose a voice preset
.build/release/speech respond --input question.wav --voice NATM0
# Stream audio output during generation
.build/release/speech respond --input question.wav --stream
# Custom system prompt text
.build/release/speech respond --input question.wav --system-prompt-text "You enjoy having a good conversation."
# Use a preset system prompt
.build/release/speech respond --input question.wav --system-prompt customer-service
# Get transcript alongside audio
.build/release/speech respond --input question.wav --transcript
# JSON output with metadata
.build/release/speech respond --input question.wav --json
Možnosti
| Možnost | Popis |
|---|---|
--input | Vstupní audio soubor (WAV, vyžadováno) |
--voice | Název přednastaveného hlasu (např., NATM0, VARF2) |
--system-prompt | Přednastavený systém: asistent, soustředěný, customer- service, učitel |
--system-prompt-text | Vlastní systém rychlý text (overrides --system-prompt) |
--max-steps | Maximální stupeň výroby |
--stream | Emit audio kousky během generace |
--compile | Použít MLX sestavený odvod pro rychlejší generování |
--transcript | Výstup textového přepisu vedle zvuku |
--json | Výstup JSON s metadaty |
Parametry odběru vzorků mohou být také překročeny:
| Možnost | Výchozí | Popis |
|---|---|---|
--audio-temp | 0.8 | Teplota odběru vzorků zvukovým signálem |
--audio-top-k | 250 | Audio token top-k vzorkování |
--text-temp | 0.7 | Teplota odběru vzorků textovým symbolem |
--text-top-k | 25 | Vzorek textového tokenu top- k |
Streaming
V --stream Vlajka umožňuje real-time audio výstup. Audio úlomky jsou vydávány tak, jak jsou generovány, takže přehrávání může začít před kompletní odpovědí. To je užitečné zejména pro interaktivní aplikace, kde nízká latence záleží.
Výkonnost
| Metrické | Hodnota |
|---|---|
| Real- time factor (RTF) | ~ 1.4 (8- bit, near real-time) |
| Započtení kroků | ~ 112 ms / step on M2 Max (8-bit) |
| Velikost modelu (8-bit) | ~ 9.1 GB |
| Vrchol RAM (8- bit) | ~ 11 GB |
| Velikost modelu (4-bit) | ~ 4.9 GB |
| Vrchol RAM (4- bit) | ~ 7 GB |
PersonaPlex 7B (8-bit) vyžaduje minimálně 24 GB RAM. Varianta 4- bit se hodí na 16 GGB zařízení, ale produkuje degradovaný výstup. Na 8 B1 zařízení se nevejde žádná varianta. --compile pro nejlepší výkon na podporovaném hardwaru.
Vzor Variantů
| Vzor | Velikost | HuggingFace |
|---|---|---|
| PersonaPlex-7B (8-bit) doporučená | 9.1 GB | aufklarer / PersonaPlex-7B-MLX-8bit |
| PersonaPlex-7B (4-bit) | 4.9 GB | aufklarer / PersonaPlex-7B-MLX-4bit |
Swift API
import PersonaPlex
import AudioCommon
let model = try await PersonaPlexModel.fromPretrained()
let response = model.respond(
userAudio: userSamples,
voice: .NATM0,
systemPrompt: "You are a helpful assistant."
)
try WAVWriter.write(samples: response.audio, sampleRate: 24000, to: URL(filePath: "answer.wav"))