Konekäännös · Englanninkielinen alkuperäinen
Puhe-puhemallit
Soniqo tukee kahta natiiviperhettä MLX keskustelupuhe-puhe-malliperhettä: PersonaPlex 7B ja VoiceChat 11B. Molemmat kuluttavat puheen ja tuottavat mallin äänen suoraan, mutta käyttävät erilaisia duplex-arkkitehtuuria ja runtime-sopimuksia.
Valitse malli
| Malli | Keskustelumalli | Parhaassa kunnossa. |
|---|---|---|
| PersonaPlex 7B | Samanaikaisesti täysi duplex, jossa Moshi, Depformer ja Mimi | Kuunnelkaa/puhua käyttäytyminen ja 18 valittavissa olevaa ääntä |
| VoiceChat 11B | Jatkuva, kehyssynkroninen duplex FastConformerin, Nemotron-H:n, EAR-TTS:n ja neurokoodekin kanssa | 80 ms streaming frame, teksti- ja toimintotapahtumat, ja tarkistuspiste-lähtöpuhe |
Nämä ovat keskustelullisia puhe-puhe-malleja. Hibiki kartoittaa myös puheen suoraan puheeseen, mutta sen tehtävänä on puheen kääntäminen, joten se dokumentoidaan erikseen.
PersonaPlex 7B
Täysi-duplex puhe-puhe-dialogimalli perustuu Moshi arkkitehtuuri (Kyutai). PersonaPlex 7B tuottaa puhutut vastaukset suoraan puhuttuun syötteeseen . 18 ääni esiasetukset ja on saatavilla 8-bit (suositellaan) ja 4-Bit kvantifiointi. 8-bitti on oletus 30% on nopeampi ja tuottaa johdonmukaisia vastauksia, kun taas 4-bitti heikentää lähtölaatua.
VoiceChat 11B
Duplex-puhe-puheviite: SALM-Duplex: Tehokas ja suora duplex-mallinnus puhe-puhe-kielimallille (Interspeech 2025), mainittu kohdassa NVIDIA's prewer VoiceChat mallikortissa.
M5 Pro 48 GB, julkaisu, 80 ms live poljin, suojattu pää INT5: kolme kontrolloitua juoksua mitattuna kokonaisena putkena RTF 0.94, 0.92, 0.92, noin 8.70 GB huippu RSS. Ensimmäinen puhuttu teksti saapui 44.3–46.7 ms ja ensimmäinen soitettava ääni 74.0–76.4 Ms. Ne ovat kuuma laskulukuja, ei oppinut käänteenotto latenssi; optimoitu INT8 suorituskykyä ei ole vielä mitattu uudelleen.
VoiceChat on toinen natiivi MLX puhekielestä suuhun -runtimessa speech-swift. Siinä yhdistyvät syy-yhteys FastConformer-havainnointi, nemotron-H-duplex-teksti/funktiokanavat, erillinen tekstikoodattu EAR-TSS ja 22,05 kHz:n neurokoodaus. Istuin hyväksyy 16 kHz:n monoäänen jatkuvasti ja palauttaa tekstitapahtumat sekä yhden 1,764-näytteen ulostulon joka 80 ms.
Käyttö VoiceChatModel.load(from:), käynnistä VoiceChatSession ja rehuäänet pushAudio. Täydellisen nipun on sisällettävä encoder/, llm/ ja tts/
INT5 ylläpitää alla olevaa aggregaatin läpivientiä RTF 1 testattu M5 Pro. Kaikki kolme juoksua pidettiin myös yhteensä / kehys p95 alla 80 ms 76.2–78.6 ms; deadline pääntila siis pysyy kapea. Hoito mallin kääntyminen alkaa ja laitteiston laskea latenssi erillisinä mittauksina.
Elävä VoiceChat CLI
Keskustele kanssa Soniqo käyttäen koko suojattua päätä INT5 nippua, jota powered by NVIDIA Nemotron VoiceChat 11B. Komento pitää tallennuksen ja toiston yhdellä AVAudioEngine Apple AEC:lle, lähettää paketin RNN-T-käyttöotsikon ja soittaa 22,05 kHz:n malliääntä kuunnellessaan.
Oletusarvo Soniqo on kykyperusteinen: tämä CLI voi keskustella ja vastata kysymyksiin, mutta se ei voi käyttää kalentereita, muistutuksia, sovelluksia, tilejä, laitteita tai ulkoisia palveluja. Näiden pyyntöjen osalta Soniqo selvästi sanoo, että se ei voi suorittaa toimintoa, ei pyydä vahvistusta, jota se ei voi täyttää, ja esittää lyhyesti, mitä käyttäjä voi tehdä sen sijaan.
speech voice-chat
speech voice-chat --input question.wav --output response.wav
Asetettavat MCP työkalut
MCP ei ole käytössä, paitsi jos --mcp-config on toimitettu. Tarjoaja-neutraali JSON-tiedosto voi käynnistää minkä tahansa stdio MCP-palvelimen ja nimenomaisesti valita mitkä löydetyt työkalut saavuttavat VoiceChat. Tahallaan kapea Apple Reminders esimerkki paljastaa luettelon, luoda, ja päivittää työnkulkuja; mukautetut asetukset voivat mahdollistaa muut palvelintyökalut:
speech voice-chat \
--mcp-config Examples/VoiceChatMCP/apple-reminders.json
Nippuesimerkki nastat EventKit-backed tarjoaja takana apple-reminders-eventkit adapteri. VoiceChat paljastaa vain kanonisen list_reminders, create_reminder, update_reminder operations. Ei palveluntarjoaja poistaa, luettelo-mutaatio, kalenteri, tai subtask toiminnot. Lista löytö pysyy yksityisenä adapteri. Muistutus ja sen eräpäivä on tehty yhdessä EventKit tallentaa, välttäen entisen osittainen kirjoitus vika, joka voisi jättää päiväysmuistutuksen jälkeen. Swift auttaja ensikäytössä, joten startup on erillinen 60- toinen avustus; normaalit työkalupuhelut pitää 15- Toinen oletus.
Vain enabledTools näytetään mallille enintään viidellä kerralla. Työkalut kirjoitetaan, ellei konfiguraatio nimenomaisesti luettele niitä readOnlyTools. Kirjoittaa oletuksena --mcp-write-policy allow, joten yksi täydellinen puhelu suorittaa välittömästi ja sen todellinen palveluntarjoaja tulos ajaa vastauksen; muistutukset demo ei lisää toista vahvistuskierrosta. Samanlainen valmis kirjoitus vaimennetaan edelleen kunnes tuore akustinen toiminta. Käytä confirm nimenomaiseen mallivälitteiseen vahvistukseen tai deny poistaa kirjoittamisen.
Ei ole transkripti reititin, säännöllinen Expression matcher, kolikko ote, muistutus luonnos valtion, argumentin korjaus, puhutun nimen resolver, tai skriptoitu avustaja puhe. Checkpoint yksin valitsee työkalu ja argumentit. Koordinaattori validoi käytössä-työkalu jäsenyys ja JSON-tyypit, soveltaa politiikkaa, soittaa MCP, ja palauttaa jäsennelty menestys tai epäonnistuminen kautta koulutettu toiminto-vastaus kanava. Epäkelvot palveluntarjoaja tulokset, virheelliset argumentit, evätty kirjoituksia, ja ei saatavilla olevat työkalut keskeyttää uuden toiminnon alkaa, kunnes tarkistuspiste avaa puhutun avustajan kierros; tämä estää hiljainen välittömästi-retry silmukka samalla jättää mallin ohjattu. name luomiselle ja litistää kaikki EventKit luettelot yhdessä list_reminders Lue. Se esittää pitkän toimittajan UUID vakaa, istunto-scoped referenssit kuten r1, sitten ratkaisee tarkka malli palannut viite ennen update_reminder Suoritus. Tämä on häviötön ID-kompressio, ei transkriptio tai aiemmassa täsmäämisessä. Puuttuvat tai virheelliset arvot palaavat malliin luonnollista selvennystä varten; niitä ei koskaan hiljaa päätellä näytöstä.
Model-native puhelu JSON ajaa synkronoidusti välimuistissa hiljainen upotus. Kun puhelu on auki, pakotettu-PAD tekstikanava ohittaa sen käyttämätön 131,072-row projektio. Kun EOTC, kaksivaiheinen polku jäädyttää yhteisen kielen ja EAR-TSS aikajanan, kun ulkoinen tulos on vireillä, täsmää NVIDIA's reference wrapper; mikrofonin kehyksiä jatkaa kautta havainto ja RNN-T, mutta ei lisätä synteettinen PAD kantoja. Tunnettu tulos kuponkia uusintapelissä rajoitettu 16-Token syy-prefill chunks. istunto tuottaa välillä puhelupoletit ja tulos erät, ulkoinen MCP I/O toimii erillisessä tehtävässä, ja live mikrofonin havainto sekä RNN-T-otsikot ovat edelleen tukikelpoisia koko ajan. Käyttäjän puhe syöttää uudelleen jaetun aikajanan enintään yhdellä vanhalla semanttisella rungolla live-soittoa kohti; nykyinen runko pysyy jonossa, kulunut toisto on mykistynyt ja joutokäynti EAR-TSS-asetukset synkronoituvat myöhemmin rajoittuen kahdeksan ruudun paloihin. Live-silmukka lukee johdonmukaista funktiota ja MCP tilakuvat joka 160 Ms sen sijaan, että soittaisi useita näyttelijän puheluita jokaisen mikrofonin rungon jälkeen. Interaktiivinen kojelauta raportoi aktiivisen työkalun vaiheen; strukturoitu benchmark kirjaa natiivin dekoodauksen, MCP kierros, tulos synkronointi, malli/välimuisti ja live interleave Tavallinen keskustelu ja proomu-sisään pitää NVIDIA:n 40-rungon turvavarmuus; jo ehdotettu natiivi työkaluehdokas voi sitoutua kahdeksan tyhjän kehyksen jälkeen.
Joutokäynnillä M5 Pro 48 GB, kolme omaperäistä muistutuslistan lauseita saavutti malli-hyväksytty post-tool puhe 3.56–4.00 sekuntia syötön päättymisen jälkeen kiinteällä syötöllä 200 Ms toimittaja. 1.15–1.28 sekuntia 27–31 askelia; 67-Tokenin tulos 0.58–0.72 sekuntia viidessä esitäyttöä. Keskitetty päivitys regressio tarvitaan 67 omaperäisiä vaiheita / 5.25 sekuntia, kun malli toisti realistinen EventKit UUID, vs. 37 askelia / noin 2.29 sekuntia tappiottomasti ratkaistu r1 Viite45% vähemmän polete askelia ja noin 56% erillinen kahden sekunnin tuottaja stressi pitää palveluntarjoajan-odotin mikrofoni toimii 19.6 ms p95 sekä 19.8 ms maksimi, joten ulkoinen I/O lisää vastauksen viive ilman sieppausta. Lopullinen puhdas ajo mitattu 118 ms mikrofonipalvelu p95 sekä 139 ms p95 Myöhästyminen yli 80 ms syöttöajat; viimeksi mainittu paljastaa lyhyitä tulossync jonotusmurtumia piilotettu tulos RTF. Paikallinen EventKit luki itse mitattu 358 ms kerta-annoksen jälkeen MCP startup. Yksi testattu luoda lause kirjoitettiin oikein, mutta valittu tavallinen puhe pikemminkin kuin natiivi puhelu; tämä pysyy malli työkaluvalinta laatu, ei piilotettu juoksuaika reititin.
Valuutan raja on yhteinen Nemotron-H KV:n välimuisti: tavallinen tulosehdollinen puhe ei voi muodostaa toista riippumatonta syy-seuraustulevaisuutta, kun funktion kuponkia luodaan tai toistetaan. Soniqo jatkaa johdonmukaista, malliohjattua puhetta <SPECIAL_22> sulkee työkalun vastauksen. Täysin päällekkäiset mielivaltaiset puheet edellyttäisivät spekulatiivisen toisen välimuistin ja yhdistämisen politiikkaa tai erikseen koulutettua toimintokooderia.
Lapsi MCP palvelimet perivät vain PATH, HOME, väliaikainen kansio ja paikallinen muuttujat. Valtakirjat on siirrettävä suoraan palvelimen env kartassa; ei-sidonnaisia emoprosessisalaisuuksia ei välitetä. Konfiguroitu komento toimii edelleen paikallisesti nykyisen käyttäjän tiedostojärjestelmän ja sovelluslupien kanssa, joten käytä vain luotettavia MCP konfiguraatiotiedostoja ja palvelinpaketteja.
• 8-bit funktion projektio on noin 518 MB. Tavallisen puheen aikana, VoiceChat arvioi vain välimuistin 36 KB PAD/työkalu- käynnistysanturi. Jos työkalu- käynnistys voittaa ennen kääntörajaa, vain sen 4,096-arvo piilotettu-osavaltio ehdokas säilytetään; täysi-vocabulary tarkastus kulkee, kun oppinut BOS saapuu tai lopullinen RNN-T turvallisuus päätepiste päättyy. Yleisen natiivin puhelun, todennettu puhelu JSON sitten ajaa täydellä kieli-malli nopeus havainto upotetaan välimuistin sekunnin hiljaisuuden sijaan kerran 80 ms mikrofonin runko. MCP tulos on tiedossa, VoiceChat Toistaa sen rajoitettuna 16-token causa-prefill paloja, säilyttäen koulutettu funktio palautetta ja kieli / puhe välimuistitila ilman 11B decode per tulos token. Sessio tuottaa välillä luotuja puhelupoletteja ja vastaus-prefill chunks niin live mikrofoni havainto, RNN-T kuvatekstit, ja jatkuva-puheen keskeytys havaitseminen jatkuu; erillinen puhelu ja vastaus rajaukset muuntaa epämuodostunut PAD-vain työtä nimenomaisen uudelleen kuin pysyvä koju.
Playback prebuffers kolme 80 ms kehykset (240 ms) oletusarvoisesti. Kaiutin aukon, se odottaa kahdeksan ruudun palautustyyny ennen uudelleenkäynnistystä.Äänen hienosäätö putoaa kahdeksasta kahteen askeleeseen ensimmäisen 88 ms soiton jälkeen tai kun kolme ruutua jono; 120 ms puhelun takaisin, kuusi jonossa kehykset, tai syöte resynchronization menee suoraan yhteen hätävaiheeseen. Vain akustinen hienosäätö muuttuu. RNN-T, ja kielitila pysyy ehjänä. Jos jonotus vielä saavuttaa oletuksensa kahdeksan frame / 640 ms raja, vain pienin vanhin mikrofoni äänen tarvitaan myöntämään tuoreen syötön on hylätty. Pitkäkestoinen ylikuormitus käsitellään yhtenä palautusjakso, ja käyttäjän kääntö on jo vahvistettu RNN - T pysyy aseistettuna sen sijaan, että se poistetaan toistuvia palautuksia.
Kojelauta käyttää ihmissuuntautuneita mittareita: behind on jonossa oleva mikrofoniääni, RTF 0.93× on se liukuva keskiarvo, joka ylittää uusimmat 120-mikrofonin seinäajan takaisinkutsut jaettuna 80 ms:llä ääntä (alle 1:n; 1 jää jälkeen) ja last 74 ms for 80 ms audio tarkoittaa viimeisin soitto kesti 74 ms. Toistaminen tapahtumia ei lasketa ylimääräisiä äänen nimittäjät. Koska RTF on ikkuna, se voi pysyä korkea lyhyen ajan kuluttua yhden kalliin operaation vaikka last Hän on toipunut. speaker gaps, old-audio skips, microphone audio skipped ilmoitettava selvästi, että elpyminen on tapahtunut. PLEASE REPEAT Ilmestyy vain, kun mikrofonin ääni jäi väliin.
Microphone-tilassa käytetään NVIDIA-tyylinen RNN-T turn-takengät oletuksena. Transkriptipää käsittelee sen ensimmäisen ennustuksen jokaisessa 80 Ms kehys kuin tyhjä tai ei-blank. Kaksi alkupuheen kehykset ja kolme myöhemmin vuorottelevat edelleen kestävä-aktiivisuus varmuuskopioita, kun taas yksi tunnustettu leksikäs merkki välittömästi aseita joutokäynti kääntyy niin täydellinen ...kyllä tai kuka olet?voi näkyä kuvatekstissä ja sitten odottaa enemmän puhetta. Merkit ja tuntemattomat tarrat eivät käytä tätä pikakuvaketta. VoiceChat's oppinut BOS / EOS ennustukset pysyvät normaalin alhainen viive päätöksiä. 40 tyhjät kehykset (3.2 sekunteja) pakottaa BOS vain, jos oppinut pää ei koskaan avaa vastausta, ja neljäkymmentä tuoretta ei-tyhjä kehykset tarjoavat vastaavat RNN-T EOS turvallisuus varmuus. Puhelaskuri nollaa, kun Soniqo alkaa, joten toiminta valmis käyttäjän kääntö ei voi välittömästi leikata vastaus. Jokainen äänikehys edelleen saavuttaa duplex malli; --no-rnnt-turn-taking Jättää BOS / EOS päätökset kokonaan oppinut kieli pää. Kojelauta raportoi RNN-T proomu-ins erillään toisto alirutiineja.
RNN-T-etuosa vastaa NeMo:n heijastuspehmennystä jokaisessa vierivässä mikrofoni-ikkunareunassa. Tämä poistaa nollan tahdistavan epäsuhtaisuuden, joka voisi muuttaa marginaalisia ahneuksia koskevia päätöksiä; se ei korvaa tarkistuspisteen kompaktia 1,024-token-transkriptiopäätä yleisellä iso-vocabulaarisella ASR:llä.
Normaalitilassa malli-natiivi-BOS on vaimennettu, kunnes käyttäjäpuhe on vahvistettu, joten Soniqo ei puhu ensin. --greet sallii nimenomaisesti ensimmäisen tervehdyksen. Kuultavan vastauksen sisällön jälkeen tyhjä PAD pysyy avoimen käännöksen sisällä vähintään 16 ruutua ja kolme ruutua per sisältö, kun se on pidempi. Ensimmäinen ylimääräinen tyhjä PAD sulkee loogisen käännöksen. Tämä sisältöskaalattu häntä säilyttää viivästyneet sanat, jotka kiinteä 1,28 sekunnin cutoff voi mutatata.
Interaktiivinen tila käyttää kiinteää kojelautaa terminaalin vaihtoehtoisessa näytössä, joten tila päivittää päivityksen paikan päällä täyttövieritysten sijaan. Käytä --plain vain lisäyksessä.
Paikallista diagnoosia varten --debug-timeline aikaleimat kullekin käyttäjälle ja Soniqo -lause ja lisää jäsennellyt soittoääniparametrit, MCP aloitus/täydennys ja tulos-välimuistin synkronointi samaksi aikasarjaksi. Se myös merkitsee pronunciation ended lopullisessa äännytys-PCM-ikkunassa; tämä on mallituotosaika, ei kaiutin-pääte. Demo tarkoituksellisesti jättää pois historialliset vaihe-timing lohkot; yksityiskohtaiset natiivi-dekoode, palveluntarjoaja, välimuisti ja mikrofoni-painemetrit ovat edelleen voicechat-bench
Kolme M5 Pro 48 GB:n julkaisuajot mitattuina RTF 0.92, kokonaiskehys p95 74.8–75.8 ms, ensimmäinen soitettava ääni 74.2–74.9 Ms, ja noin 8.74 GB huippu RSS. Transcript ja vastaus olivat identtiset läpi juoksujen.
Livesessiot pitävät 37-ruudun kaiuttimen nopeana ja 20 sekuntia viimeaikaisesta EAR-TTS-historiasta, kun taas Nemotron-H pitää semanttisen keskustelun tilan erillään. PAD-sisältöasteikon sisällä akustinen häntä renderoidaan normaalisti; vasta myöhemmin hiljainen PAD etenee syy-yhteydessä kahdeksan erissä. Tämä estää TTS -- huomiota ja joutotyöskentelyä kasvamasta sitomatta leikkaamatta puhuttua vastausta; --live-speech-context-seconds 0 palauttaa täyden TTS -historian ja tiedostotila pysyy oletuksen mukaan täysinä.
aa 63.6- toinen M5 Pro-profiili sisällönturvallisella pyrstöllä, live-polku mitattu kokonaisluku RTF 0.87, lopullinen ikkuna RTF 0.71, 4.1 ms/frame loppuikkunasynteesi, 8.72 GB:n RSS-huippu ja 23.67 GB huippu fyysinen jalanjälki. Puhe-aktiiviset kahdeksan askel ikkunat saavuttivat RTF 1.05 sekä 1.12, joten interaktiivinen CLI käyttää palautuva kaksivaiheinen vara- ja yksivaiheinen hätätila. Yksivaiheinen synteesi määrittää kaikki 31 RVQ-koodikirjat yhdellä solalla; se suojaa livekaappausta, mutta ei ole akustinen pariteetti kahdeksan askeleen aikataulun kanssa. Sekventiaalinen ja erällinen joutokäynnissä-välimuistin valtiot olivat vähintään kosine 0.9999999.
Äänidiagnoosissa vertailussa verrataan rajattua live codec-window -tekstiä jatkuvaan täyteen context -tektioon. Molemmissa on pitkä tauko, joka on syntynyt EAR-TTS:n tai koodecin avulla, ei kaiuttimessa; katkos, joka löytyy vain live-tyhjiöpisteistä kohti codec - window-ompelua. Kaiuttimen aukot ovat edelleen erillinen toisto-alivirtausmetri. Omistettu aloituspop-detektori skannaa generoitua lyijyä sekä ensimmäiset 50 ms kestävää puhetta ja lippuja näytehyppyjä yli sekä 0,05 amplitudin ja kuusi kertaa tasainen-peech p99 lähtötaso. Skenaariot voivat asettaa maximum_suspect_onset_transients nollaan, kun taas ternterventely on edelleen lopullinen laatutarkistus.
PersonaPlex arkkitehtuuri ja käyttö
PersonaPlex on monikäyttöinen autoregressiivinen malli, jossa on kolme ydinkomponenttia:
| Osa | Yksityiskohdat |
|---|---|
| Temporaalinen muuntaja | 32 kerrosta, dim=4096, 32 päätä, SwiGLU (piilote_scale=4.125), RoPE, 8-bittinen kvantitatiivinen (oletusarvo) |
| Depformer | 6 kerrosta, dim=1024, 16 päätä, MultiLinear (painot_per_step=true), dep_q=16 |
| Mimi Koodekki | 16 koodikirjaa, 12.5 Hz:n kuvanopeus, 24 kHz:n ääniteho |
Mallin prosessit 17 streams samanaikaisesti: 1 tekstivirta + 8 käyttäjääänivirtaa + 8 agentin äänivirtaa. Tämä arkkitehtuuri mahdollistaa täyden duplex-keskustelun, jossa malli voi kuunnella ja puhua samanaikaisesti.
Äänen asetukset
PersonaPlex sisältää 18 sisäänrakennettua ääntä, jotka ovat tyypiltään ja luonteeltaan erilaisia:
| Luokka | Esiasetukset |
|---|---|
| Luonnollinen nainen | NATF0, NATF1, NATF2, NATF3 |
| Luonnollinen mies | NATM0, NATM1, NATM2, NATM3 |
| Varioitu nainen | VARF0, VARF1, VARF2, VARF3, VARF4 |
| Varioitu mies | VARM0, VARM1, VARM2, VARM3, VARM4 |
Sisäinen monologi
PersonaPlex tuottaa kaksi rinnakkaisvirtaa joka askeleella: 8 äänikoodikirjaa Mimi koodekkia ja yksi tekstimerkki mallille.Tekstivirta on se, mitä malli ajattelee.
Teksti kuponkia tulee takaisin raaka SentencePiece pala IDs. Pura ne kanssa SentencePieceDecoder että PersonaPlex alukset:
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
Striimaustilassa respondStream lähettää textTokens palaset, koska ne tuotetaan . Pura ne asteittain livekuvan ohjaamiseksi, kun ääni vielä tuottaa. --transcript CLI-lippu tekee juuri tämän kulissien takana.
Miksi sillä on väliä? SentencePieceDecoder on rakennettu jaetun AudioCommon.SentencePieceModel protobuf lukija, joten PersonaPlex, OmnilingualASR ja kaikki tulevat SentencePiece-pohjainen malli purkaa koodin saman formeizer implementation. Katso TuomioPieceModel-viittaus.
Järjestelmäviestit
Pass kaikki mukautetun järjestelmän nopea kuin tavallinen merkkijono ... ei ulkoista tokenization tarvitaan:
let response = model.respond(
userAudio: audio,
voice: .NATM0,
systemPrompt: "You enjoy having a good conversation."
)
Tai käytä sisäänrakennettua esiasetetta:
assistantfocused...customer-service...teacherPotilas, selittävä opetustyyli
CLI-käyttö
Luo puhuttu vastaus äänisyötteestä:
# 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
Valinnat
| Vaihtoehto | Tavaran kuvaus |
|---|---|
--input | Syöttöäänitiedosto (WAV, vaaditaan) |
--voice | Äänen esiasetettu nimi (esim. NATM0, VARF2) |
--system-prompt | Järjestelmän nopea esiasetukset: assistentti, keskittynyt, asiakaspalvelu, opettaja |
--system-prompt-text | Oma järjestelmän pikateksti (overrides --system-prompt) |
--max-steps | Tuotannon enimmäisvaiheet |
--stream | Emit-äänipalat sukupolven aikana |
--compile | Käytä MLX koostettua johtopäätöstä nopeampaa sukupolvea varten |
--transcript | Tulosta tekstitranskripti äänen vieressä |
--json | JSONin tuloste metatiedolla |
Näytteenottoparametrit voidaan myös ohittaa:
| Vaihtoehto | Oletus | Tavaran kuvaus |
|---|---|---|
--audio-temp | 0.8 | Äänimerkkien näytteenottolämpötila |
--audio-top-k | 250 | Äänentoistokuponkien huippuk-näyte |
--text-temp | 0.7 | Tekstin tunnistetun näytteenottolämpötila |
--text-top-k | 25 | Tekstin tunniste top-k näytteenotto |
Virtaaminen
--stream -lippu mahdollistaa reaaliaikaisen äänilähdön. Äänipalat säteilevät niiden syntyessä, joten toisto voidaan aloittaa ennen kuin täysi vastaus on valmis. Tämä on erityisen hyödyllistä interaktiivisissa sovelluksissa, joissa latenssi on alhainen.
Tulos
| Metrinen | Arvo |
|---|---|
| Reaaliaikainen kerroin (RTF) | ~1.4 (8-bittinen, lähes reaaliaikainen) |
| Vaiheviive | ~112 ms/askeleella M2 Max (8-bittinen) |
| Mallin koko (8-bittinen) | ~9.1 GB |
| Huippu RAM (8-bittinen) | ~11 GB |
| Mallin koko (4-bittinen) | ~4,9 GB |
| Huippu RAM (4-bit) | ~7 GB |
PersonaPlex 7B (8-bittinen) vaatii vähintään 24 GB RAM. 4-bittinen variantti sopii 16 GB:n laitteisiin, mutta tuottaa huonontuneen tehon. 8 GB: n laitteisiin kumpikaan variantti ei sovi. Käytä --compile parhaan suorituskyvyn saamiseksi tuetuilla laitteistoilla.
Mallivaihtoehdot
| Malli | Koko | HuggingFace |
|---|---|---|
| PersonaPlex-7B (8-bit) Suositeltu | 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"))