Terjemahan mesin · Versi asli bahasa Inggris
Models Pidato
Soniqo mendukung dua asli MLX model keluarga untuk percakapan speech-to-speech: PersonaPlex 7B dan VoiceChat 11BKeduanya mengkonsumsi pidato dan menghasilkan audio model secara langsung, tetapi mereka menggunakan arsitektur duplex yang berbeda dan kontrak waktu-jalan.
Pilih sebuah model
| Model | Model percakapan | Cocok sekali |
|---|---|---|
| PersonaPlex 7B | Simultanely full duplex with Moshi, Deplomer, and Mimi | Tumpang tindih dengarkan / bicara perilaku dan 18 suara yang dapat dipilih |
| VoiceChat 11B | Terus-menerus, frame- synchronous duplex dengan FastConformer, Nemron-H, EAR-TTS, dan codec saraf | 80 ms streaming frames, teks / fungsi kejadian, dan titik pemeriksaan-bahasa asli |
Ini adalah cepat percakapan-ke-bahasa model. Hibiki juga memetakan pidato langsung ke pidato, tetapi tugasnya adalah streaming terjemahan bicara, sehingga didokumentasikan secara terpisah.
PersonaPlex 7B
Penuh-duplex speech-to-speech dialog model berdasarkan Moshi Arsitektur (Kyutai). PersonaPlex 7B menghasilkan tanggapan yang diucapkan langsung dari masukan yang diucapkan - tidak diperlukan teks menengah. Kapal model dengan 18 suara presets dan tersedia di 8-bit (disarankan) dan 4- Sedikit kuantisasi. 8-bit adalah baku - 30% lebih cepat dan menghasilkan respon koheren, sementara 4-bit degrades kualitas keluaran.
VoiceChat 11B
Referensi Duplex speech-to-speech: Modeling Duplex SALM-Duplex: Efisien and Direct Duplex untuk Speech-to-Speech Language Model (Interspeech 2025), dikutip oleh NVIDIA's upstream VoiceChat Kartu model.
M5 Pro, 48 GB, Rilis, 80 ms live cadence, protected- head INT5: tiga run dikendalikan diukur whole-pipeline RTF 0.94, 0.92, dan 0.92, dengan sekitar 8.70 Puncak GB RSS. Teks pertama diucapkan tiba di 44.3–46.7 ms dan audio yang dapat dimainkan pertama di 74.0–76.4 ms. Mereka adalah tokoh perhitungan panas, tidak belajar mengubah latensi; optimasi INT8 kinerja belum diukur.
VoiceChat adalah penduduk asli lainnya MLX speech-to-speech runtime in speech-swiftIni menggabungkan persepsi sebab-akibat, Nemotron-H saluran teks / fungsi, teks standar - dikondisikan EAR- TTS, dan 22.05 codec saraf kHz Sebuah sesi menerima 16 kHz mono audio secara terus menerus dan mengembalikan kejadian teks plus satu 1,764-sample frame keluaran setiap 80 Nn.
Gunakan VoiceChatModel.load(from:), mulai VoiceChatSession, dan memberi makan audio dengan pushAudioSebuah bundel lengkap harus berisi encoder/, llm/, dan tts/; pemahaman lama - hanya bundel ditolak.
INT5 bertahan bersama melalui dibawah RTF 1 pada tes M5 Pro. Ketiga berjalan juga diadakan total / frame p95 di bawah 80 ms, di 76.2–78.6 Mrs; deadline headroom karena itu tetap sempit. Perlakukan model on set dan hardware menghitung latensi sebagai pengukuran terpisah.
Live VoiceChat CLI
Bicara dengan Soniqo menggunakan lengkap protected- head INT5 bundle, powered by NVIDIA Nemotron VoiceChat 11B. Perintah terus menangkap dan memutar pada satu AVAudioEngine untuk Apple AEC, stream yang bundle RNN- T user captions, dan bermain 22.05 audio model kHz ketika terus mendengarkan.
Baku Soniqo prompt adalah capabiliy- membumi: CLI ini dapat berkomunikasi dan menjawab pertanyaan, tetapi tidak dapat mengakses kalender, pengingat, aplikasi, akun, perangkat, atau layanan eksternal. Untuk permintaan tersebut Soniqo jelas mengatakan itu tidak dapat melakukan tindakan, tidak meminta konfirmasi itu tidak dapat memenuhi, dan secara singkat menunjukkan apa yang pengguna dapat lakukan sebagai gantinya.
speech voice-chat
speech voice-chat --input question.wav --output response.wav
Alat MCP yang dapat diatur
MCP dinonaktifkan kecuali --mcp-config Disediakan. Berkas provider -netral JSON dapat meluncurkan stadio apapun server MCP dan secara eksplisit memilih alat yang ditemukan mencapai VoiceChat. Apple Reminders yang sengaja mempersempit contoh yang menampilkan daftar, membuat, dan memperbarui alur kerja; konfigurasi kustom dapat mengaktifkan perangkat server lain:
speech voice-chat \
--mcp-config Examples/VoiceChatMCP/apple-reminders.json
Contoh bundled pin sebuah EventKit- didukung penyedia di belakang apple-reminders-eventkit adaptor. VoiceChat mengekspos hanya kanonikal list_reminders, create_reminder, dan update_reminder operasi - bukan penghapusan penyedia, list-mutasi, kalender, atau tindakan subtask. Daftar penemuan tetap privat ke adaptor. Pengingat dan tanggal jatuh-nya berkomitmen dalam satu EventKit save, menghindari kegagalan partial-write yang dapat meninggalkan pengingat tak tertanggal di belakang. Operator dapat mengompail yang kecil Swift pembantu pada penggunaan pertama, sehingga startup memiliki terpisah 60-second tunjangan; normal panggilan alat menjaga 15-detik default.
Hanya enabledTools ditampilkan pada model, dengan maksimal lima per sesi. Perkakas ditulis kecuali konfigurasi secara eksplisit mendaftarkan mereka readOnlyTools. Menulis default ke --mcp-write-policy allow, jadi salah satu eksekusi panggilan lokal lengkap segera dan hasil penyedia yang sebenarnya drive balasan; demo pengingat tidak menambahkan konfirmasi kedua. Penulisan identik masih ditekan sampai aktivitas akustik segar. Gunakan confirm untuk mode eksplisit - dimediasi konfirmasi atau deny untuk menonaktifkan menulis.
Tidak ada router transkrip, matrator ekspresi regulasi, slot extractor, pengpengingat keadaan, perbaikan argumen, pemecah nama spoken, atau tipe asisten naskah. Checkpoint sendiri memilih alat dan argumen. Koordinat validates yang dimasukan ke keanggotaan dan tipe JSON, tipe berlaku, kebijakan yang berlaku, panggilan MCP, dan kembali sukses terstruktur atau gagal melalui saluran fungsi- fungsi yang terlatih. Hasil penyedia gagal, argumen tidak valid, ditolak menulis, dan alat tidak tersedia suspensi fungsi baru mulai sampai pemeriksaan membuka sebuah aplikasi yang diucapkan; ini mencegah sebuah loop diam-diam-coba ketika meninggalkan model-terkontrol kemudian. Fasade Pengingat hanya membutuhkan name untuk penciptaan dan meratakan semua daftar EventKit dalam satu list_reminders baca. Ini menyajikan UUID penyedia panjang sebagai stabil, sesi-scoped referensi seperti r1, kemudian menyelesaikan sebuah model yang tepat referensi kembali sebelum update_reminder eksekusi. Ini adalah kompresi ID lossless, bukan transkrip atau bermaksud yang cocok. Nilai hilang atau nilai tidak valid kembali ke model untuk klarifikasi alami; mereka tidak pernah diam-diam diberikan dari transkrip yang ditampilkan.
Mode - native call JSON menjalankan asinkronously on a cached silence embedding. Setelah panggilan terbuka, paksa-PAD saluran teks melewati nya unused 131,072-row proyeksi setelah EOTC, dua tahap jalur membeku bahasa bersama dan EAR- TTS timeline sementara hasil eksternal tertunda, pencocokan NVIDIA's reference wrapper; mikropon frame terus melalui persepsi dan RNNN-T tetapi tidak dimasukkan sebagai posisi PAD sintetis. Hasil yang dikenal token replay dalam bounded 16-token causal- prefill potongan. Sesi menghasilkan antara token panggilan dan hasil batch, eksternal MCP I / O berjalan dalam tugas terpisah, dan persepsi mikrofon hidup plus RNNN-T captions tetap memenuhi syarat seluruh. Reserved user speech re-ending the shared timeline at no more than one of one semantic frames per live callback; frame saat ini tetap queed, lapsed replay audio telah digumakan, dan menganggur posisi EAR- TTS sinkronisasi kemudian dalam cungkil delapan-frame. Loop langsung membaca fungsi koherent dan menganggur posisi eference MCP status snapshots setiap 160 ms daripada membuat beberapa panggilan aktor setelah setiap bingkai mikrofon. Dashboard interaktif melaporkan fase alat aktif; catatan benchmark terstruktur asli decode, MCP round trip, hasil sinkronisasi, model / cache kompute, dan live interleave percakapan biasa dan barge- dalam menjaga NVIDIA 's 40-frame keselamatan falback; sebuah already-diusulkan kandidat alat asli dapat melakukan setelah delapan frame kosong.
Pada menganggur M5 Pro dengan 48 GB, tiga frasa asli reminder-list mencapai bahasa model -scriored post- tool 3.56–4.00 detik setelah akhir masukan dengan sebuah fixed 200 Ms provider. 1.15–1.28 detik untuk 27–31 langkah; 67-token hasil mengambil 0.58–0.72 detik dalam lima prefills, pemutakhiran fokus diperlukan regresi 67 langkah asli / 5.25 detik ketika model mengulangi EventKit UUID realistis, versus 37 langkah / tentang 2.29 detik dengan losslessly diselesaikan r1 referensi -45% lebih sedikit langkah token dan sekitar 56% waktu decode lebih sedikit dua detik stres terus menyediakan mikrofon menunggu bekerja di 19.6 ms p95 dan 19.8 ms maksimum, jadi eksternal I / O menambahkan jawaban delay tanpa menahan penangkapan. Sebuah run bersih final diukur 118 ms layanan mikrofon- p95 dan 139 ms p95 latiness luar 80 ms input deadline; yang terakhir mengekspos results pendek - sync antoran semburan tersembunyi oleh latar depan RTFThe EventKit lokal membaca sendiri diukur 358 ms setelah satu waktu MCP startup. Satu diuji membuat frasa telah ditulis dengan benar tetapi memilih bahasa biasa daripada panggilan asli; ini tetap model kualitas pilihan-pilihan, bukan router runtime tersembunyi.
Batas konkuensi adalah shared Nemotron-H KV cache: results biasa - dikondisikan pidato tidak dapat membentuk independen kedua causal masa depan sementara token fungsi sedang dihasilkan atau dimainkan ulang. Soniqo resume koheren, model-menulis pidato setelah <SPECIAL_22> menutup respon alat. Tolak tumpang tindih pidato sewenang-wenang akan memerlukan spekulatif cache kedua dan menggabungkan kebijakan, atau sebuah pengkodean fungsi yang terlatih secara terpisah.
Anak MCP hanya server yang mewarisi PATH, HOME, temporary- direktori, dan variabel lokal. Kredensial harus dilewatkan secara eksplisit dalam server env peta; rahasia parent- proses tidak diteruskan. Perintah yang dikonfigurasi masih berjalan secara lokal dengan sistem berkas dan aplikasi pengguna saat ini, jadi gunakan hanya terpercaya MCP berkas konfigurasi dan paket server.
The 8-bit proyeksi fungsi adalah tentang 518 MB. / Selama pidato biasa, VoiceChat dievaluasi hanya cache 36 KB PAD / tool- mulai probe. Jika tool- start menang sebelum batas putar, hanya nya 4,096Kandidat -value hidden-state dipertahankan; full-kosakata verifikasi berjalan ketika belajar BOS tiba atau akhir titik akhir keselamatan RN-T berakhir. Untuk panggilan asli generik, diverifikasi call JSON kemudian berjalan pada total-model kecepatan pada persepsi yang melekat dari satu detik keheningan bukan sekali per 80 MM microphone frame. MCP hasil diketahui, VoiceChat replays it in bounded 16-token causal- prefill potongan, mempertahankan umpan balik fungsi terlatih dan bahasa / bahasa cache keadaan tanpa satu 11B decode per tanda hasil. Sesi menghasilkan antara panggilan token dan respon-prefill potongan sehingga persepsi mikrofon hidup, RNN-T terjemahan, dan berkelanjutan - deteksi interferensi terus; terpisah panggilan dan batas respon konversi PAD-hanya bekerja menjadi sebuah eksplisit retry daripada sebuah kios permanen.
Pemutar ulang tiga 80 ms frame (240 ms) secara baku setelah jeda speaker, ia menunggu bantal pemulihan frame delapan sebelum memulai kembali pemurnian suara turun dari delapan sampai dua langkah setelah tahap pertama 88 ms callback atau ketika tiga antrian frame; a 120 ms callback, enam frame antrian, atau masukan resinkronisasi pergi langsung ke satu langkah darurat. Hanya perbaikan akustik - persepsi, RNN-T, dan keadaan bahasa tetap utuh. Jika antrian masih mencapai nya baku delapan frame /640 its limit, only the minimum olderest microphone audio needed to admit fresh input is disputed. Subload substant is confiled as one received episode, and a user turn already already by RNN-T removed instead by resets by reappeated. Dilewatkan kata-kata yang masih ditandai dan mungkin memerlukan pengulangan.
Dashboard menggunakan metrics menghadapi manusia: behind adalah mic audio mengantri, RTF 0.93× adalah rata-rata rolling atas terbaru 120 mikrofon callbacks dari waktu dinding dibagi dengan 80 ms audio (di bawah 1 terus up; di atas 1 jatuh di belakang), dan last 74 ms for 80 ms audio berarti callback terbaru mengambil 74 ms. Peristiwa replay tidak dihitung sebagai tambahan audio denominators. Karena RTF adalah jendela, ini dapat tetap tinggi secara singkat setelah satu operasi mahal bahkan ketika last Di bawah percakapan, speaker gaps, old-audio skips, dan microphone audio skipped membuat pemulihan eksplisit. PLEASE REPEAT muncul hanya ketika mikrofon audio benar-benar dilewati.
Mode Mikrofon memakai gaya NVIDIA- gaya RNNN-T menghasilkan secara baku. Kepala transkrip memperlakukan prediksi pertamanya pada setiap prediksi 80 ms frame sebagai kosong atau tidak kosong. Dua pidato awal dan tiga di kemudian hari ternyata tetap substanding-aktivitas falling, ketika satu dikenali leksical token segera lengan giliran idle sehingga lengkap "ya" atau "siapa kau?" tidak dapat muncul dalam judul dan kemudian menunggu untuk lebih banyak pidato. Tanda baca dan label tidak dikenal tidak menggunakan jalan pintas itu. VoiceChatyang dipelajari BOS / EOS prediksi tetap rendah normal keputusan latensi. empat puluh frame kosong (3.2 detik) paksa BOS hanya jika kepala belajar tidak pernah membuka sebuah respon, dan empat puluh segar bukan-kosong frame memberikan pasangan keselamatan RNN-T EOS yang cocok. Kontra bicara reset ketika Soniqo mulai, jadi aktivitas dari pergantian pengguna yang selesai tidak dapat langsung memotong respon. Setiap frame audio masih mencapai model duplex; gunakan --no-rnnt-turn-taking untuk meninggalkan keputusan BOS / EOS sepenuhnya kepada kepala bahasa yang dipelajari. dasbor melaporkan RNNT barge- in secara terpisah dari pemutaran underruns.
Antarmuka RNN-T cocok dengan penandaan refleksi NeMo pada setiap sudut mikrofon- jendela. Ini menghilangkan sebuah zero- padding tidak cocok yang dapat mengubah keputusan tanda yang serakah marjinal; ini tidak menggantikan compact pos pemeriksaan 1,024-token kepala transkrip dengan umum large- kosakata ASR.
Dalam mode normal, model -native BOS ditekan sampai pidato pengguna dikonfirmasi, sehingga Soniqo tidak berbicara pertama. --greet secara eksplisit mengizinkan salam awal. Setelah isi jawaban terdengar, PAD kosong tetap berada di dalam belokan terbuka setidaknya 16 frame dan untuk tiga frame per konten token ketika itu lebih lama. kelebihan kosong PAD pertama menutup putaran logic. persamaan ini skala ekor mempertahankan tertunda kata-kata yang tetap 1.28-detik cutoff bisa bisu.
Mode interaktif memakai dashboard tetap di layar alternatif terminal, jadi pemutakhiran status menggambar ulang di tempat daripada mengisi scrollback. Gunakan --plain untuk tambahkan-hanya keluaran.
Untuk diagnosis lokal, --debug-timeline penanda waktu setiap pengguna dan frasa Soniqo dan menyisipkan argumen pemanggilan asli yang diparsed, MCP awal / pelengkapan, dan result- sinkronisasi cache kedalam kronologi yang sama. pronunciation ended pada akhir terdengar generasi- jendela PCM; ini adalah waktu keluaran model, bukan pelengkapan perangkat bicara. Demo sengaja menghilangkan blok phase- waktu historis; rinci native- decode, provider, cache, dan mikrofon- tekanan metrics tetap di voicechat-bench JSON. Timeline dapat mengekspos argumen alat, jadi jangan menggunakannya dalam log berkongsi. Penghitung fase diatur ulang antara native decode dan provider tunggu.
Tiga M5 Pro 48 Berjalan rilis GB diukur RTF 0.92, total- frame p95 74.8–75.8 ms, audio yang pertama dimainkan 74.2–74.9 ms, dan sekitar 8.74 Puncak GB RSS Transkrip dan jawaban identik di seluruh lintasan.
Sesi langsung menjaga immutable 37-frame speaker prompt plus 20 detik baru-baru ini EAR- TTS sejarah, sementara Nemotron-H terus semantik keadaan percakapan terpisah. PAD dalam content-skaled akustik ekor dirender normal; hanya kemudian PAD diam maju causally dalam batch delapan. Hal ini mencegah TTS perhatian dan pekerjaan kosong dari tumbuh tanpa terikat tanpa memotong jawaban yang diucapkan; --live-speech-context-seconds 0 simpan ulang penuh TTS riwayat, dan mode berkas tetap tepat full- sejarah secara baku.
Dalam 63.6-detik M5 Profile Pro dengan content-safe tail, jalur hidup diukur kumpulan RTF 0.87, final- jendela RTF 0.71, 4.1 ms / frame final- synthesis jendela, 8.72 Puncak GB RSS, dan 23.67 GB puncak jejak fisik. Jendela kecepatan delapan aktif telah dicapai RTF 1.05 dan 1.12, sehingga CLI interaktif menggunakan sebuah reversibel dua- langkah fallback dan satu langkah mode darurat. Satu- tahap synthesis assigns semua 31 Buku kode RVQ dalam satu tahap; melindungi penangkapan langsung tetapi bukan paritas akustik dengan jadwal delapan langkah. Sequansial dan idle- cache yang rusak memiliki kosinus minimum 0.9999999.
Untuk diagnosis audio, benchmark dibandingkan dengan antrian kodec-window yang terikat secara terus menerus dengan render konteks-penuh. Jeda panjang yang ada di kedua sisi dihasilkan oleh EAR-TTS atau codec, bukan oleh antrian speaker; ketidakkontinasional yang hanya ditemukan di titik perhubungan langsung menuju penekanan-jendela. Penyengat suara tetap berupa main-underflow metrik. Sebuah introset-pop yang berdedikasi memindai daun-dalam plus yang pertama 50 ms dari pernyataan dan tanda contoh yang berkelanjutan melompat di atas keduanya 0.05 amplitudo dan enam kali diam-berbicara p99 Baseline, skenario bisa diatur maximum_suspect_onset_transients untuk nol, sementara persepsi tetap cek kualitas akhir.
PersonaPlex arsitektur dan penggunaan
PersonaPlex adalah model autoregresif multi- stream dengan tiga komponen inti:
| Komponen | Rincian |
|---|---|
| Transformer Temporal | 32 lapis, dim = 4096, 32 heads, SwiGLU (hidden _ scale = 4.125), RoPE, 8- bit kuantized (baku) |
| Depformer | 6 lapis, dim = 1024, 16 heads, MultiLinear (bobot _ per _ step = true), dep _ q = 16 |
| Mimi Kodek | 16 buku kode, tingkat bingkai 12.5 Hz, keluaran audio 24 kHz |
Proses model stream 17 secara bersamaan: 1 teks stream + 8 stream audio pengguna + 8 agen aliran audio. Arsitektur ini memungkinkan percakapan full-duplex di mana model dapat mendengarkan dan berbicara pada saat yang sama.
Presets Suara
PersonaPlex meliputi 18 built-dalam suara preset seluruh alami dan beragam gaya:
| Kategori | Presets |
|---|---|
| Perempuan Natural | NATF0, NATF1, NATF2, NATF3 |
| Pria Natural | NATM0, NATM1, NATM2, NATM3 |
| Bervariasi Perempuan | VARF0, VARF1, VARF2, VARF3, VARF4 |
| Bervariasi Pria | VARM0, VARM1, VARM2, VARM3, VARM4 |
Monolog Inner
PersonaPlex menghasilkan dua aliran paralel di setiap langkah: 8 token codebook audio bagi Mimi codec dan satu teks token untuk model monolog internal. Aliran teks adalah apa model adalah "berpikir" seperti yang berbicara - dapat diverge sedikit dari audio akhir, tetapi dalam praktek itu mencerminkan respon yang diucapkan cukup dekat untuk digunakan sebagai transkrip hidup.
Token teks kembali sebagai ID potongan SentencePiece mentah. Decode mereka dengan SentencePieceDecoder itu PersonaPlex Kapal:
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
Dalam mode streaming, respondStream emits textTokens Potongan karena mereka diproduksi - decode mereka secara bertahap untuk mendorong tampilan judul hidup ketika audio masih menghasilkan. --transcript CLI bendera melakukan persis ini di balik layar.
Mengapa itu penting: SentencePieceDecoder dibangun di atas bersama AudioCommon.SentencePieceModel pembaca protobuf, jadi PersonaPlex, OmnilinggualASR dan SentencePiece- model berbasis decode melalui implementasi tokenizer yang sama. Lihat Referensi SentencePieceModel.
Prompt Sistem
Pass sistem gubahan apapun prompt sebagai string polos - tidak ada tokenisasi eksternal yang diperlukan:
let response = model.respond(
userAudio: audio,
voice: .NATM0,
systemPrompt: "You enjoy having a good conversation."
)
Atau gunakan built-in preset:
assistant- Asisten umum yang membantu (baku)focused- Concise, respon langsungcustomer-service- Sopan, penyusunan agen pendukungteacher- Pasien, gaya mengajar yang jelas
Penggunaan CLI
Buat respon yang diucapkan dari masukan audio:
# 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
Opsi
| Opsi | Deskripsi |
|---|---|
--input | Berkas audio masukan (WAV, dibutuhkan) |
--voice | Nama awal suara (misalnya, NATM0, VARF2) |
--system-prompt | Promset prompt sistem: asisten, fokus, layanan penggubah, guru |
--system-prompt-text | Teks prompt sistem gubahan (menimpa --system-prompt) |
--max-steps | Langkah-langkah pembuatan maksimum |
--stream | Keluarkan potongan audio selama generasi |
--compile | Gunakan MLX kompilasi instruksi untuk generasi lebih cepat |
--transcript | Keluaran transkrip teks bersama audio |
--json | Keluaran JSON dengan metadata |
Parameter Sampling juga dapat overridden:
| Opsi | Baku | Deskripsi |
|---|---|---|
--audio-temp | 0.8 | Temperatur token audio |
--audio-top-k | 250 | Token audio top- k sampling |
--text-temp | 0.7 | Token teks sampling suhu |
--text-top-k | 25 | Tanda teks top- k sampling |
Streaming
The --stream Flag memungkinkan keluaran audio real-time. Potongan audio dipancarkan saat mereka dihasilkan, sehingga putar dapat dimulai sebelum respon penuh selesai. Hal ini terutama berguna untuk aplikasi interaktif di mana latensi rendah penting.
Penampilan
| Metrik | Nilai |
|---|---|
| Faktor waktu Real- (RTF) | ~ 1.4 (8-bit, near real-time) |
| Langkah latensi | ~ 112 ms / step on M2 Max (8- bit) |
| Ukuran model (8- bit) | ~ 9.1 GB |
| Peak RAM (8- bit) | ~ 11 GB |
| Ukuran model (4-bit) | ~ 4.9 GB |
| Peak RAM (4- bit) | ~ 7 GB |
PersonaPlex 7B (8-bit) membutuhkan paling tidak 24 GB RAM. 4-bit varian cocok 16 Perangkat GB tetapi menghasilkan keluaran terdegradasi. Di 8 Perangkat GB, tidak ada varian yang akan cocok. Gunakan --compile untuk performa terbaik pada perangkat keras yang didukung.
Variants Model
| Model | Ukuran | HuggingFace |
|---|---|---|
| PersonaPlex-7B (8- bit) disarankan | 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"))