תרגום מכונה · המקור באנגלית

יישור מאולץ

MLX ו CoreML השתמש באותם תכונות קלט בסגנון Whisper: 128 Slaney-normalized mel bins מ- 400 נקודות STFT בדיוק ב 16 k, עם a 160-sample הופ וחלון האן תקופתי.

Qwen3-ForcedAligner מספק היערכות לדרגה מילה עבור אודיו.זה מבצע יחיד לא-אוטומטי קדימה לעבור כדי להתאים כל מילה בתעתיק למצבו המדויק בגלפורמת אודיו.

איך זה עובד

המקודד מגדיר כל התחלה וסיום של מילה.תיקון משתמש בהתמדה ארוכה יותר (LIS עם ערכים שווים מותר), שמירה על גבולות משותפים ובחירת העוגנים המוקדמים ביותר כאשר לשרשראות יש אורך שווה. MLX לא כולל תחזיות מעבר לתקופת השמע מהעוגן שלה.

רכושערך
שיטת Alignmentסיווג Timestamp עם תיקון לא מבוטל
תזמון ההחלטה80 ms
כיתות בחוץ5000
המונחים: modeלא-אוטומטי (מעבר קדימה)

MLX ו CoreML זמני ריצה מציבים שני חריצים של פעמים לאחר כל מילה: word<timestamp><timestamp> הראשון מנבא את ההתחלה של המילה, ואת השני שלה לפני התחזיות על המילים קודמות.

CLI Usage

אם לא מסופקת תמליל, השמע מתפרסם באופן אוטומטי באמצעות Qwen3-ASR:

.build/release/speech align recording.wav

לספק תמליל ידוע כדי לדלג על תמליל אוטומטי:

.build/release/speech align recording.wav --text "The quick brown fox jumps over the lazy dog"

אפשרויות אפשרויות

# Specify transcript text directly
.build/release/speech align recording.wav --text "known transcript"

# Choose ASR model for auto-transcription step
.build/release/speech align recording.wav --model 1.7b

# Specify aligner model variant
.build/release/speech align recording.wav --aligner-model default

# Set language
.build/release/speech align recording.wav --language en

תמיכה שפה

מעבר --language תואם את השפה של אודיו.המודל מאומן באופן רשמי על שפות 11 (en, zh, Ja, ko, es, fr, de, ru, pt, ar); preprocessor גם מקטע את המורמות היפניות, מילים קוריאניות, סינית per-character, ותאילנד / Lao / Khmer / Bure / Burme / Bure/ly Native באמצעות Apples דרך Apples של אפל. NLTokenizerסימני שילוב (Devanagari matras, נדרים תאילנדיים וכו ') נשמרים כך מילים כמו מילים כמו. नमस्ते ו สวัสดี תישארו שלמים.

מודלים

מספר גרסאות מודל זמינות, גודל המסחר לדיוק:

משתנהמודל זיהויגודל
MLX 4bit (default)aufklarer/Qwen3-ForcedAligner-0.6B-4bit979 MB
MLX 8 סיביותaufklarer/Qwen3-ForcedAligner-0.6B-8bit1.3 GB
MLX bf16aufklarer/Qwen3-ForcedAligner-0.6B-bf161.8 GB
CoreML INT4aufklarer/Qwen3-ForcedAligner-0.6B-CoreML-INT4662 MB
CoreML INT8aufklarer/Qwen3-ForcedAligner-0.6B-CoreML-INT81.1 GB

CoreML מתווה ברירת מחדל .cpuAndNeuralEngine עבור ה- encoder and .cpuAndGPU עבור טקסט decoder. SPEECH_COREML_COMPUTE_UNITS חבילות ה-coder המפורסמות יכולות לייצר דגימות שגויות על Neural Engine או כל פעמוני אפס עם cpuOnly.

Explicit cpuOnly עומסים של דגמי INT8 ו- FP16 בוחרים text_decoder_cpu_v1, שהנרמליזציה של RMS משתמשת Float32 עם המשקלים המקוריים של למד. Run One online לטעון להורדה החבילה הזו; שפם לא מקוון ישן עדיין מכיל את קוד המורשת GPU ממשיך להשתמש בעומס מקוון אחד כדי להוריד את החבילה; מטמון לא מקוון ישן מכיל עדיין את הקודר. text_decoderהתיקון INT8 תואם את כל גבולות ההתייחסות 22 על macOS 15.8.2; אימות ה-iPhone הפיזי נשאר נפרד.

בחר גרסה עם --aligner-model:

.build/release/speech align recording.wav --aligner-model aufklarer/Qwen3-ForcedAligner-0.6B-8bit

פורמט Output

היישר מפיץ קו אחד למילה עם התחלה וסיום פעמים בשניות:

[0.24 - 0.48] The
[0.48 - 0.72] quick
[0.72 - 1.04] brown
[1.04 - 1.36] fox
[1.36 - 1.68] jumps
[1.68 - 1.92] over
[1.92 - 2.08] the
[2.08 - 2.40] lazy
[2.40 - 2.80] dog

כל זוג פעמים דגימה מציין את תחילתו וסיומו של המילה בסאונד, ברזולוציה של 80 מ"מ.

טיפול לטווח ארוך

ראש המחלקה יכול לענות עד 400 שניות בעיקרון (5000 כיתות × 80 ms), אבל על המשלוח Qwen3-ForcedAligner-0.6B המודל מאומנים עד כדי 270 שניותבעבר הנקודה, המודל פולט מקרים רועשים והתמוטטות של LIS לאחר עיבוד כל מילה על אותו פעמים.

CLI מטפל בזה באופן אוטומטי: אודיו ארוך מוצף בנקודת השכור ומהדהד מחדש.You תראה הודעה חד-ליין אחת כאשר חתיכה בעיטות:

Audio 306.2s saturated after word 690 (272.6s); chunking remaining 33.6s (pass 2)

הגדר ALIGN_DEBUG=1 כדי להשליך את הגלם בהשוואה לזמנים מתוקנים בעת חקירה של תפוקות שגויות.

מגבלה ידועה: מוביל לא-סכי

כאשר אודיו מתחיל עם אי-שטיפה (מוסיקה אינטרו, שתיקה ארוכה), המודל לעתים קרובות בולם את המילה הראשונה ליד המילה הראשונה. 0 שניות כי למסווג אין מושג על "שטיפה עדיין לא התחילה": טרים הלא-שטיפה המובילה לפני היישר, או לרוץ. VAD סע עם Silero כדי למצוא את הדיבור האמיתי מתחיל.

חשוב

כשאין --text מסופק, היישר הראשון פועל מעבר Qwen3-ASR Z מלא, ואז מיישר את הטקסט וכתוצאה מכך.זה אומר את הראשון לרוץ עומס הן דגם ASR ואת מודל היישר. --text מדלג על צעד ASR ורק נטען את היישר.