תרגום מכונה · המקור באנגלית
אפשרויות ל-Speech Models
Soniqo תומך בשתי משפחות מודל MLX עבור דיבור שיחה-to-speech: PersonaPlex 7B ו VoiceChat 11Bשניהם אוכלים דיבור ויוצרים אודיו מודל ישירות, אך הם משתמשים באדריכלות דופלקס שונות וחוזים מזמנים.
בחרו מודל
| מודל מודל | מודל שיחה | בכושר הטוב ביותר |
|---|---|---|
| PersonaPlex 7B | פענוח מלא סימולטני עם Moshi, Depformer ו Mimi | מעלים את התנהגות ההאזנה / דיבור ו 18 קולות נבחרים |
| VoiceChat 11B | רציף, מסגרת סינכרוני עם FastConformer, Nemotron-H, EAR-TTS, וקוד עצבי | 80 ms הזרמת מסגרות, אירועי טקסט / תפקוד, ודיבור מחסומים |
אלה הם מודלים של דיבור-אל-דיבור-על-פני-ה- Hibiki גם מפות דיבור ישירות לנאום, אך משימתו היא תרגם תרגום דיבור, כך שהוא מתועד בנפרד.
PersonaPlex 7B
מודל הדיאלוג המלא של דיבור-אל-דיבור המבוסס על Moshi אדריכלות (Kyutai) PersonaPlex 7B יוצר תגובות המדוברות ישירות מהקלט המדובר – אין צורך בצנרת טקסט בינונית. 18 ראשי תיבות של Voice presets והוא זמין 8-bit (recommended) 4המונחים:bit pinization. 8-bit הוא ברירת המחדל - זה 30% מהיר יותר ומייצר תגובות קוהרנטיות, בעוד 4-bit details איכות התפוקה.
VoiceChat 11B
התייחסות דו-שיח-to-speech: SALM-Duplex: Efficient and Direct du Modeling for Speech-to-Speech Language Model (interspeech 2025), שצוטט על ידי NVIDIA של VoiceChat כרטיס מודל.
M5 Pro, 48 GB, שחרור, 80 ראשי התיבות של MS Live CIRECT INT5: שלושה מנגנונים מבוקרים נמדדים לחלוטין RTF 0.94, 0.92ו 0.92עם על 8.70 RSS שיא ג'יגה-בייט 44.3–46.7 אודיו ראשון וצלילים ראשונים 74.0–76.4 אלה הם דמויות חמות, לא למדות שקיפות; מותאם אישית INT8 הביצועים עדיין לא נעשו מעודנים.
VoiceChat הוא הילידים האחרים MLX דיבור-to-speech Runtime speech-swiftזה משלב תפיסה סיבתית של FastConformer, Nemotron-H duplex טקסט / ערוצים פונקציונליים, עמידה טקסט מותנה טקסט, ו- A-EARTTS, ו- 22.05 CHz עצבי Codec. A Meeting מקבל 16 אודיו מונו kHz ברציפות מחזיר אירועי טקסט בתוספת אחד 1,764מסגרת פלט פשוטה כל 80 ms.
שימוש בשימוש VoiceChatModel.load(from:)להתחיל VoiceChatSessionלהאכיל אודיו עם pushAudioחבילה שלמה חייבת להכיל encoder/, llm/ו tts/; חבילות הבנה ישנות יותר בלבד נדחות.
INT5 עקבו אחריput downput RTF 1 על הניסוי M5 Pro.All Three Runs כולל/מסגרת p95 מתחת למטה 80 מ', 76.2–78.6 ms; חדר ראש מועדי ולכן נשאר צר.מודל הטיפול הופך את ההתחלה ואת הכדאיות של חומרה כמדידות נפרדות.
Live VoiceChat CLI
שוחח עם Soniqo שימוש בראש מוגן לחלוטין INT5 החבילה, המופעלת על ידי NVIDIA Nemotron VoiceChat 11B. הפקודה ממשיכה ללכוד ולנגן על אחד AVAudioEngine עבור Apple AEC, מזרם את כיפי המשתמש RN-T של החבילה, ומנגן. 22.05 אודיו מודל kHz תוך כדי המשך להקשיב.
ברירת המחדל Soniqo היא בעלת יכולת: CLI זה יכול לדבר ולענות על שאלות, אבל זה לא יכול לגשת לוחות שנה, תזכורות, יישומים, חשבונות, מכשירים או שירותים חיצוניים. עבור בקשות אלה Soniqo ברור אומר שזה לא יכול לבצע את הפעולה, לא דורש אישור זה לא יכול למלא, ומציע בקצרה מה המשתמש יכול לעשות במקום.
speech voice-chat
speech voice-chat --input question.wav --output response.wav
MCP כלים
MCP אינו מוגבל אלא אם כן --mcp-config קובץ ספק-ניטרלי JSON יכול לשגר כל שרת MCP ולבחור במפורש כלים שגילו להגיע VoiceChat. ה- Apple Reminders הצר במכוון חושף רשימה, ליצור ולעדכן את זרימת העבודה; הגדרות מותאמות אישית יכולות לאפשר כלים אחרים:
speech voice-chat \
--mcp-config Examples/VoiceChatMCP/apple-reminders.json
הדוגמה הארזיתירה ספקית של EventKit-backed מאחורי ספק apple-reminders-eventkit VoiceChat חושף רק את הקנוניות list_reminders, create_reminderו update_reminder פעולות - לא למחוק את הספק, את הזיהוי ברשימה, לוח השנה, או פעולות תת-משימות. תגלית הרשימה נשארת פרטית למתאים. תזכורת ואת התאריך המשוער שלה מבוצעים באחד האירועים, הימנעות מכישלון החלקי לשעבר שיכול להשאיר תזכורת לא מבוטלת מאחורי הספק עשוי להרכיב את התזכורת הקטנה שלו. Swift עזרה ראשונה לשימוש, אז ההפעלה יש בנפרד 60קצבה שנייה; כלי רגיל קורא לשמור 15ברירת מחדל שנייה.
רק רק רק enabledTools הם מוצגים למודל, עם מקסימום של חמישה לכלי ישיבה. readOnlyToolsכותב ברירת מחדל --mcp-write-policy allowלכן שיחת Native שלמה אחת מבצעת באופן מיידי ותוצאות הספק האמיתי שלה מניעות את התשובה; התזכורת אינה מוסיפה תור אישור שני.כתב זהה הושלם עדיין מדוכא עד פעילות אקוסטית חדשה. confirm אישור מפורש של מודל או deny כדי שלא ניתן יהיה לכתוב.
אין נתב תמליל, מתאם ביטוי קבוע, תמצית משבש, תזכורת טיוטת המדינה, תיקון הטיעון, פתרון שם דובר, או דיבור עוזר תסריט.המחסום לבדו בוחר את הכלי והטיעונים.המתאם מאמת את החברות המותרות והטיפוסים של JSON, החל מדיניות, שיחות, שיחות, מדיניות, שיחות. MCP, וחזרה בהצלחה מובנים או כישלון באמצעות ערוץ הגיבוי של הפונקציה המוכשרת.תוצאות הספק נכשלות, טיעונים לא חוקיים, הכחישו כותב, וכלים לא זמינים להשעות את הפונקציה החדשה מתחיל עד שהמחסום פותח את התור המדובר; זה מונע לולאה מיידית שותקת תוך השארת מחדש של מודלים מבוקרים מאוחר יותר. name יצירה ודירות את כל רשימות EventKit באחת list_reminders זה מציג ספק ארוך UUIDs כמו אזכורים יציבים, סקופיים כגון: r1לאחר מכן פותר התייחסות מדויקת של מודל לפני update_reminder ביצוע זה הוא דחיסת זיהוי ללא הפסד, לא תמליל או כוונה להתאים את הערכים החסרים או הבלתי חוקיים לחזור למודל לבירור טבעי; הם אף פעם לא מופרעים בשקט מהתעתיק המוצג.
שיחת מודל-native JSON פועלת באופן מסונכרן על שתיקה מכווצת.לאחר שיחה פתוחה, ערוץ הטקסט של ה-PAD מלגלג על כך שלא בשימוש. 131,072לאחר EOTC, הנתיב הדו-phase קופא את השפה המשותפת ואת ציר הזמן של שנים-TTS בעוד שהתוצאה החיצונית מתקרבת, התאמה. NVIDIA"פסוט הפניה; מסגרות מיקרופון ממשיכות באמצעות תפיסה ו-RN-T אך אינן מוכנסות כעמדות PAD סינתטיות. 16- גושי סיבתיות-prefilllls.הפגישה מניבה בין אסימונים טלפוניים לבין ערכות תוצאה, חיצוניות MCP I/O פועל במשימה נפרדת, ותפיסת מיקרופון חיה בתוספת כתוביות RN-T נשאר זכאיות לאורך כל. Retained דיבור משתמש נכנס לקו הזמן המשותף לא יותר מאשר מסגרת סמנטית ישנה אחת למקראה חיה; המסגרת הנוכחית נשארת תור, ניתוק מחדש של אודיו הוא מומס, ועמדות idle-TTS מסונכרנות מאוחר יותר ב מפושרה שמונה שורות חיים ופונקציה פועל. MCP מצב צילום כל 160 ms במקום לעשות כמה שחקן קורא לאחר כל מסגרת מיקרופון.הלוח האינטראקטיבי מדווח על שלב הכלי הפעיל; האינדקס המובנה מתעד את שפת הקוד, MCP נסיעה עגולה, תוצאה סינכרון, מודל / קאשה compute, ו live interleave שיחה רגילה ו- barge-in לשמור NVIDIA של 40-frame בטיחות נפילה; מועמד כלים ילידים שכבר ניתן לבצע לאחר שמונה מסגרות ריקות.
על idle M5 Pro עם 48 GB, שלושה ביטויים של תזכורות ילידיות הגיעו לנאום פוסט-טרי 3.56–4.00 שניות לאחר סיום הקלט עם קבוע 200 שם מקור: Native JSON 1.15–1.28 שניות 27–31 צעדים; 67התוצאה הסופית הייתה 0.58–0.72 2 שניות בחמש קדמונים: תוקפנות של עדכון ממוקד נדרש 67 צעדים מקומיים / 5.25 שניות לאחר שהמודל חזר על אירוע ריאלי 37 צעדים / About 2.29 שניות עם פתרון חסר האובדן r1 המונחים:45% פחות צעדים ונוגעים 56% זמן קוד פחות.לחץ דו-צדדי-מספקי נפרד שמר על עבודת המיקרופון של הספק-מחכה בעבודה במיקרופון. 19.6 ms p95 ו 19.8 מקסימום, כל כך חיצוני I/O מוסיף עיכוב תגובה מבלי להחזיק במלכודת. 118 msמיקרופון-service p95 ו 139 ms p95 איחור מעבר ל 80 מועדי הזנת ms; האחרון חושף התפרצויות קצרות של תורים מסוננים מוסתרים על ידי Foreground RTFהאירוע המקומי קרא את עצמו נמדד 358 ms לאחר פעם אחת MCP סטארט-אפ.אחד נבדק יוצר ביטוי נכתב כראוי אך נבחר דיבור רגיל במקום שיחת הילידים; זה נשאר איכות בחירת כלי-מודל, לא נתב מעונה מוסתרת.
הגבול הקונפלי הוא המטמון המשותף של Nemotron-H KV: דיבור מותני רגיל אינו יכול ליצור עתיד סיבתי עצמאי שני בעוד אסימוני תפקוד נוצרים או משוחקים מחדש. Soniqo חוזר לנאום קוהרנטי, המסופר מודלי אחרי דיבור מתואם, לאחר שסופר מודל לאחר ש-מודלים מתומחר לאחר שכותבים לאחר ש- Model-ThXQ0XXXXKXXXZ מחדש. <SPECIAL_22> סגור את תגובת הכלי. דיבור שרירותי חפיפה מלא ידרוש מטמון שני ומיזוג מדיניות, או מקודמת תפקוד מאומן בנפרד.
שרתי MCP יורשים רק PATH, HOME, עקיפות זמנית, ומשתנים מקומיים. Credentials חייב להיות מועבר במפורש בשרת השרת env מפה; סודות לא קשורים לעיבוד הורים אינם מועברים.הפקד הקבוע עדיין פועל באופן מקומי עם מערכת הקבצים של המשתמש הנוכחית ורשומי יישומים, ולכן משתמשים רק בקבצי תצורה MCP וחבילות השרתים.
The The The 8הקרנה של הפונקציהbit היא על 518 דיבור רגיל, VoiceChat להעריך רק מצופה 36 KB PAD/tool-start בדיקה 4,096- מועמד בעל ערך סודי נשמר; אימות מלא-vocabulary פועל כאשר למד BOS מגיע או את נקודת הסיום האחרונה של RN-T יפוג. עבור שיחת הילידים הגנרית, התקשר JSON לאחר מכן רץ במהירות מלאה של מודל שפה על תפיסה המטביעה מאחת שנייה של שתיקה במקום פעם אחת לשנייה אחת לשנייה של שתיקה במקום אחת לשנייה אחת לכל אחת לשנייה. 80 מסגרת מיקרופון פעם MCP התוצאה ידועה, VoiceChat לשחזר אותו ב כבול 16- גושים סיבתיים מראש, שמירה על משוב תפקוד מאומן ושפה / מצב מטמון ללא מדינה אחת 11B decode לסימון התוצאה.הפגישה מניבה בין היתרי שיחות שנוצרו לבין קובצי תגובה-prefill כל כך חי תפיסה מיקרופון, כתוביות של RN-T, וזיהוי הפרעות מתמשך נמשך; שיחות נפרדות ותגובה ממירים את PAD- רק לעבוד לתוך דחייה מפורשת ולא דוכנים קבועים.
בושם 3 80 מסגרת (Msframes)240 לאחר פער הדוברים, היא מחכה לשחיקה של שמונה שורות לפני שהחלה מחדש.הזיכוך הקולי טיפות משמונה עד שני צעדים לאחר הראשון. 88 ms callback או כאשר שלוש מסגרות תור; 120 ms callback, שש מסגרות תור, או resynSyncization נכנס ישירות לצעד חירום אחד.רק שינויים בזיקוקציה אקוסטית - אפשרות, RN-T, ומדינת שפה נשאר שלם.640 הגבלת ms, רק אודיו המיקרופון העתיק ביותר הנדרש כדי להודות קלט טרי הוא disarded. Sustained overload מטופל כמו פרק התאוששות אחד, ומשתמש כבר אישר על ידי RNN-T נשאר חמוש במקום להימחק על ידי איפוס חוזר.
לוח המחוונים משתמש במדדים דמויי אדם: behind מיקרופון אודיו בתור, RTF 0.93× זה אומר מתגלגל על המיקרופון 120 האחרון של זמן הקיר מחולק על ידי 80 ms של אודיו (below 1 ממשיך; מעל 1 נופל מאחור), ו last 74 ms for 80 ms audio משמעות הדבר היא כי ה- 74 Ms. Replay אירועים אינם נחשבים כמו Denominators אודיו נוסף. כי RTF הוא חלון, זה יכול להישאר גבוה זמן קצר לאחר ניתוח יקר אחד אפילו כאשר אחד עובד יקר אפילו כאשר אחד יקר. last הוא התאושש מתחת לשיחה, speaker gaps, old-audio skipsו microphone audio skipped לעשות התאוששות מפורשת. PLEASE REPEAT נראה רק כאשר המיקרופון של אודיו היה למעשה מדלג.
מצב מיקרופוני משתמש ב- NVIDIA-סגנון RN-T, תוך שימוש כברירת מחדל.ראש התמליל מתייחס לחיזוי הראשון שלו על כל תחזיותיו. 80 מסגרת ms כמו ריק או לא-blank. שתי מסגרות דיבור ראשוניות ושלוש על פני התפנית מאוחר יותר נשאר קוצר פעילות מתמשך, בעוד אחד מוכר lexical אסימונים מיד הזרוע כל כך "כן" שלם או "מי אתה?", לא יכול להופיע בכותרת ולאחר מכן לחכות לעוד דיבור. VoiceChat"התחזיות של BOS/EOS של BOS נשארות החלטות בעלות נמוכה ונורמלית.3.2 שניות) לכפות BOS רק אם הראש המלומד לעולם לא פותח תגובה, וארבעים מסגרות לא-בלק טריות מספקות את ההתאמה של התמוטטות הבטיחות של RN-T EOS. Soniqo מתחיל, כך שפעילות מהפך המשתמש המושלם אינה יכולה מיד לחתוך את התגובה.כל מסגרת אודיו עדיין מגיעה למודל דופלקס; שימוש --no-rnnt-turn-taking לעזוב את BOS / EOS החלטות לחלוטין אל ראש השפה המלומדת.דיווחי לוח המחוונים RN-T barge-ins בנפרד מ underruns.
חזית RN-T מתאימה להשתקפות של ננו מ' בכל קצה מיקרופון מתגלגל.זה מסיר ערפל אפס-סימני שיכול לשנות החלטות של אסימונים חמדנים; זה לא תחליף למחסום קומפקטי קומפקטי. 1,024ראש תמליל טוסט עם גדול כללי ASR.
במצב רגיל, BOS מודל-native מודחק עד שדיבור המשתמש אושר, כך Soniqo לא מדבר קודם. --greet במפורש מאפשר את הברכה הראשונית.לאחר תוכן תגובה גלוי, PAD נשאר בתוך התור הפתוח לפחות. 16 מסגרות ושלושה מסגרות לסימון תוכן כאשר זה יותר זמן.הרש"ד העודף הראשון סוגר את התור ההגיוני. זנב זה בקנה מידה תוכן שומר על מילים מעיכובים כי קבוע קבוע קבוע 1.28חיתוך שנייה יכול לשתק.
מצב אינטראקטיבי משתמש בלוחם קבוע במסך ההחלפה של הטרמינל, כך שעדכוני סטטוס חוזרים במקום במקום מילוי Scrollback. השתמש --plain עבור תפוקה בלבד.
עבור אבחון מקומי, --debug-timeline מעת לעת כל משתמש ו- Soniqo ביטוי ומוסיף את טענות השיחה הילידים המכוסות, MCP מתחיל/completion, וכתוצאה מכך, סינכרוניזציה לאותה כרונולוגיה. pronunciation ended בחלון שנוצר-PCM הסופי; זהו זמן דוגמנות, לא השלמת רמקולים-העת.ההדגמה בכוונה omits היסטורי-סימול, ספק, cache, ו- מיקרופון-pressure metrics נשארים בבלוקים של שלב-זיכרון; מפורט של Native-decode, ספק, מטמון, ומיקרומטרים בלחץ המיקרופון נשארים במיקרו-לחץ נשאר במיקרומגנט נשאר במיקרוסקופ נשאר נשאר במיקרו-מיקרו-מיקרוסקופ נשאר ב-מיקרו-לחץ-מיקרו-מיקרופון נשאר נשאר ב-לחץ-לחץ-מגנט נשאר במלכוד מיקרופון נשאר ב מיקרופון נשאר נשאר נשאר נשאר בבלוקים. voicechat-bench JSON. ציר הזמן יכול לחשוף טיעונים כלי, כך לא להשתמש בו בלוגים משותפים.שלבי שלב מתאפסים בין דקוד וספקית מקומיים מחכים.
3 M5 שחרור 48 GB נמדד RTF 0.92, מסגרת כוללת p95 74.8-75.8 ms, אודיו ראשון ניתן לשחק 74.2-74.9 מ"ס, וכ 8.74 GB שיא RSS.
מפגשים חיים שומרים על לוח הזמנים 37המונחים: formulae 20 שניות של היסטוריה של שנים-TTS, בעוד Nemotron-H שומרת על מצב שיחה סמנטי בנפרד. PAD בתוך הזנב האקוסי בקנה מידה התוכן ניתן בדרך כלל; רק מאוחר יותר PAD שקט מתקדם באופן סיבתי בחבילות של שמונה. TTS תשומת לב וidle לעבוד מצמיחה ללא התחייבות ללא קיצוץ התשובה המדוברת; --live-speech-context-seconds 0 לשחזר את ההיסטוריה TTS מלאה, ואת מצב הקבצים נשאר די מלא היסטוריה כברירת מחדל.
בתוך A 63.6- שניות M5 פרופיל Pro עם הזנב הבטוח של התוכן, נתיב חי נמדד RTF 0.87אחרון-window RTF 0.71, 4.1 ms/frame-window סינתזה, 8.72 GB שיא RSS, ו 23.67 ג'יגה-ג'יגה את טביעת הרגל הגופנית RTF 1.05 ו 1.12לכן CLI האינטראקטיבי משתמש בירידה של שני שלבים ומצב חירום חד-שלבי. 31 RVQ Codebooks במעבר יחיד; הוא מגן על לכידת חיים, אבל הוא לא שוויון אקוסטי עם לוח הזמנים של שמונה שלבים. 0.9999999.
עבור אבחון אודיו, המודול משווה את הקידוד החי המסור עם קידוד מתמשך מלא טקסט. הפסקה ארוכה נוכח בשני נוצר על ידי EAR-TTS או Codec, לא על ידי הרמקול; הפסקה שנמצאת רק בנקודות תור חי להפוך את פני תפרים קוד-windowing. 50 מ"ס של דיבור ודגלים מתמשכת קופץ מעל שניהם 0.05 בידוד ושישה פעמים הרצף היציב p99 בסיס: Scenarios יכול להגדיר maximum_suspect_onset_transients לאפס, בעוד הקשבה חיצונית נשאר לבדוק האיכותי הסופי.
PersonaPlex אדריכלות ושימוש
PersonaPlex הוא מודל רב-זרם אוטומטי עם שלושה מרכיבים עיקריים:
| המונחים | פרטים |
|---|---|
| Temporal Transformer | 32 שכבות, dim=4096, 32 ראשים, SwiGLU (קידוד_scale=4.125), RoPE, 8-bit לכמת (default) |
| Depformer | 6 שכבות, dim=1024, 16 ראשים, MultiLinear (משקל_per_step=real), dep_q=16 |
| Mimi Codec | 16 ספרי קוד, 12.5 הרץ מסגרת קצב, 24 kHz אודיו פלט |
תהליכי המודל 17 בו זמנית: 1 זרם טקסט + 8 אודיו משתמש זרמי + 8 אדריכלות זו מאפשרת שיחה עמוסה שבה המודל יכול להקשיב ולדבר בו זמנית.
קולות Presets
PersonaPlex כולל 18 עקרונות קוליים שנבנו על פני סגנונות טבעיים ומגוונים:
| קטגוריה | המונחים: |
|---|---|
| אישה טבעית | NATF0, NATF1, NATF2, NATF3 |
| זכר טבעי | NATM0, NATM1, NATM2, NATM3 |
| משתנה | VARF0, VARF1, VARF2, VARF3, VARF4 |
| המונחים: Male | VARM0, VARM1, VARM2, VARM3, VARM4 |
מונולוג פנימי
PersonaPlex יוצר שני זרמים מקבילים בכל שלב: 8 אודיו קודקוד אסימונים עבור Mimi Codec וטקסט אחד אסימונים של המונולוג הפנימי של המודל. זרם הטקסט הוא מה המודל "מחשבה" כפי שהוא מדבר - הוא יכול להתפצל מעט מהסאונד הסופי, אבל בפועל זה התגובה המדוברת מספיק כדי לחיות.
אסימונים הטקסט חוזרים כזיהויי דין גולמיים.דקוד אותם עם SentencePieceDecoder PersonaPlex אוניות:
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
במצב הזרמה, respondStream פולטים textTokens חלקים כפי שהם מיוצרים - מקודמים אותם באופן מצטבר כדי להניע תצוגת כישר חיה בעוד אודיו עדיין יוצר. --transcript דגל CLI עושה בדיוק את זה מאחורי הקלעים.
למה זה חשוב: SentencePieceDecoder נבנה על המשותף AudioCommon.SentencePieceModel קורא פרוטובוף, כך PersonaPlex, OmnilingualASR וכל מודל מבוסס משפט עתידי המבוסס על פסקה מקודש באמצעות אותו יישום אסימונים. המונחים: lawPieceModel.
מערכת Prompts
לעבור כל מערכת מותאם אישית במהירות כמחרוזת פשוטה - אין צורך בסימון חיצוני:
let response = model.respond(
userAudio: audio,
voice: .NATM0,
systemPrompt: "You enjoy having a good conversation."
)
או להשתמש ב-Moder-in preset:
assistant- עוזר כללי מועיל (default)focused– Concise, Direct Responsescustomer-service- פוליט, סוכן תמיכה ממוקד פתרוןteacher- המטופל, סגנון הוראה מתוכנן
CLI Usage
יצירת תגובה מדוברת מקלט אודיו:
# 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
אפשרויות אפשרויות
| אפשרות | תיאור תיאור |
|---|---|
--input | קובץ אודיו Input (WAV, הנדרש) |
--voice | שם מוקדם (למשל NATM0 VARF2) |
--system-prompt | מערכת הקדמה מהירה: עוזר, ממוקד, שירות לקוחות, מורה |
--system-prompt-text | מערכת המכסה טקסט (overrides --system-prompt) |
--max-steps | צעדים מקסימליים |
--stream | Emit אודיו נתח במהלך הדור |
--compile | השתמש MLX שנאספו ההיקף לדור מהיר יותר |
--transcript | Output the text tag לצד אודיו |
--json | JSON פלט עם metadata |
ניתן גם לעקוף את הפרמטרים של סמפלינג:
| אפשרות | Default | תיאור תיאור |
|---|---|---|
--audio-temp | 0.8 | טמפרטורת הדגימה של אודיו |
--audio-top-k | 250 | תגית: top-k sampling |
--text-temp | 0.7 | המונחים: sampling טמפרטורה |
--text-top-k | 25 | צילום: top-k sampling |
הזרמת הזרמתסטרימינג
דגל --stream מאפשר פלט אודיו בזמן אמת. גושי אודיו פולטים כפי שהם נוצרים, ולכן השמעה יכולה להתחיל לפני התגובה המלאה היא מלאה.זה שימושי במיוחד עבור יישומים אינטראקטיביים שבהם בעיות לב נמוכות.
ביצועי ביצועים
| מסובך | ערך |
|---|---|
| גורם בזמן אמת (RTF) | 1.4 (8 סיביות, קרוב בזמן אמת) |
| שלב השקיפות | - 112 ms/step on M2 Max (8 סיביות) |
| גודל מודל (8 סיביות) | 9.1 GB |
| שיא RAM (8 סיביות) | 11 GB |
| גודל מודל (4-bit) | 4.9 GB |
| שיא RAM (4-bit) | 7 GB |
PersonaPlex 7B (8-bit) דורש לפחות 24 GB של RAM.הגרסה 4bit מתאימה ל-16 מכשירי GB אך מייצרת פלטה מופחתת.על 8 GB מכשירים, אף גרסה לא תואמת. השתמש --compile
מודלים
| מודל מודל | גודל | HuggingFace |
|---|---|---|
| PersonaPlex-7B (8 סיביות) recommended | 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"))