דילוג לתוכן
תיעוד Nodaro
תיעודמדריך הרכיביםמודליםתבניותסוכני AI (MCP)מפתחיםאירוח עצמימחקרהשוואות
CLI

פקודות מדיה וקול

החלפת קולות, צריבת כתוביות, שכבות, עיבוד אודיו, תכנון עריכות והידוק פרקי פודקאסט עם הפקודות voice, media, audio ו-edit של ה-CLI של Nodaro.

פקודות המדיה והקול של ה-CLI של Nodaro עובדות ישירות על אודיו, וידאו ותמונות. הקבוצה voice מחליפה קולות ברצועות ומעצבת קולות, הקבוצה media מייבאת, מקצצת, מוסיפה כתוביות ומרכיבה מדיה, הקבוצה audio מעבדת ומתמללת אודיו והקבוצה edit מתכננת ומחילה עריכות לפודקאסטים ולסרטונים ארוכים. כל פקודה מריצה את אותו מנוע כמו הרכיב המקביל בעורך.

כל פקודה שמתחילה משימה מקבלת את --json, את --watch כדי לחכות לתוצאה ואת --poll-interval <ms> כדי לקבוע כל כמה אלפיות שנייה לבדוק את הסטטוס. ראו את הדף פלט וקודי יציאה.

קול

nodaro voice list [--clones] [--json]
nodaro voice changer --voice <id> --audio <url>|--video <url> [--model <id>] [--stability <0..1>] [--similarity <0..1>] [--style <0..1>] [--use-speaker-boost] [--seed <n>] [--remove-background-noise] [--watch] [--poll-interval <ms>] [--json]
nodaro voice recast --audio <url>|--video <url> --voices <v1,v2,...>|--voices-json <json> [--model <id>] [--output video|stems] [--analysis-json <json>|--analysis-file <path>] [--no-preserve-background] [--separation-quality fast|best] [--music-volume-mode match|normalize|manual] [--music-volume <0-200>] [--remove-background-noise] [--voice-fx <preset>] [--voice-fx-mix <0-100>] [--voice-fx-delay <20-2000>] [--voice-fx-decay <0-1>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice analyze --audio <url>|--video <url> [--separation-quality fast|best] [--suggest-title] [--watch] [--poll-interval <ms>] [--json]
nodaro voice export --source <videoUrl> --tracks-json <json>|--tracks-file <path> [--voice-fx <preset>] [--voice-fx-mix <0-100>] [--voice-fx-delay <20-2000>] [--voice-fx-decay <0-1>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice design --text <line> --description <desc> [--model <id>] [--loudness <-1..1>] [--guidance-scale <0-100>] [--seed <n>] [--quality <n>] [--enhance] [--user-prompt <text>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice remix --text <text> --description <desc> [--user-prompt <text>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice dub --audio <url> --target-language <code> [--source-language <code>] [--num-speakers <1-20>] [--disable-voice-cloning] [--drop-background-audio] [--watch] [--poll-interval <ms>] [--json]
nodaro voice clones list [--json]
nodaro voice clones delete <id> [--json]
פקודהמה היא עושה
voice listמציגה את הקולות המוכנים מראש, או את שכפולי הקול שלכם עם --clones. את השמות או את המזהים שלהם מעבירים ב---voice וב---voices.
voice changerנותנת קול אחר לרצועת אודיו אחת או לסרטון אחד עם דיבור, בקול יחיד, כמו רכיב משנה קול. הפקודה voice change זהה לה.
voice recastמחליפה בבת אחת את הקולות של כל הדוברים בהקלטה, כמו רכיב משנה קול Pro. הפקודה voice pro זהה לה.
voice analyzeמזהה את הדוברים בלי להחליף קולות, ומדפיסה את הרשימה עם --watch. ב-Nodaro Cloud בלבד.
voice exportמרנדרת את הסרטון הסופי ממיקס של רצועות. ב-Nodaro Cloud בלבד.
voice designמעצבת קול סינתטי חדש מתיאור כתוב, כמו רכיב עיצוב קול.
voice remixמקריאה טקסט בקול שתיארתם, בלי שכפול, כמו רכיב רמיקס קול.
voice dubמדבבת הקלטה לשפה אחרת ושומרת על הקול של כל דובר, כמו רכיב דיבוב.
voice clonesמציגה ומוחקת שכפולי קול שנוצרו לפני שהשכפול הוצא משימוש.

החלפת הקולות של כמה דוברים

הפקודה voice recast רצה ב-Nodaro Cloud. התקנה באירוח עצמי מריצה אותה דרך החיבור ל-Nodaro Cloud שלה.

  • הדגל --voices ממפה קולות לדוברים לפי הסדר שבו Nodaro מזהה אותם. המילה keep משאירה לדובר את הקול המקורי שלו, כמו ב---voices Rachel,keep,Aria.
  • הדגל --voices-json מקבל במקום זאת את המערך הגולמי של ה-SDK: מזהי קולות, אובייקט הגדרות לכל קול או null לדובר שנשאר עם הקול המקורי.
  • הדגל --output stems מחזיר רצועה יבשה אחת לכל דובר, למיקס אינטראקטיבי, במקום סרטון גמור. את המיקס מרנדרים עם voice export.
  • הדגל --analysis-file משתמש שוב בתוצאה שמורה של voice analyze, כך שהדוברים לא מזוהים שוב.

החלפת קולות אינטראקטיבית

בדרך של שלב אחד, הפקודה voice recast מרנדרת סרטון גמור בקריאה אחת. בדרך של שלושה שלבים אפשר לבדוק קודם את הדוברים ולערוך מיקס של התוצאה לפני שמרנדרים אותה:

# 1. Detect the speakers. Save the job's output_data for step 2.
nodaro voice analyze --video https://example.com/panel.mp4 --watch --json > analyze.json
jq .output_data analyze.json > analysis.json

# 2. Recast to dry stems, reusing the analysis (no second detection)
nodaro voice recast --video https://example.com/panel.mp4 --voices Rachel,keep,Aria \
  --analysis-file analysis.json --output stems --watch

# 3. Set the level and mute of each track, then render
nodaro voice export --source https://example.com/panel.mp4 --tracks-file mix.json \
  --voice-fx hall --voice-fx-mix 25 --watch

בשלב 3, כל רצועה ב-mix.json נלקחת מהסטמים של שלב 2, והיא אובייקט עם url, עם gain מ-0 עד 200, עם השדה הבוליאני muted ועם kind אופציונלי. הייצוא מעתיק את זרם הווידאו בלי שינוי, והזרם אף פעם לא מקודד מחדש.

מדיה

nodaro media download <url> [--max-height <px>] [--section <a-b>] [--watch] [--json]
nodaro media metadata <url> [--json]
nodaro media trim-video --video <url> --start <sec> --end <sec>|--keep-first <sec>|--keep-last <sec> [--watch] [--poll-interval <ms>] [--json]
nodaro media trim-audio --video <url>|--audio <url> [--start <sec>] [--end <sec>] [--format mp3|wav|aac] [--watch] [--poll-interval <ms>] [--json]
nodaro media split-media --video <url>|--audio <url> --chunk-duration <sec> [--min-part-duration <sec>] [--format mp3|wav|aac] [--watch] [--poll-interval <ms>] [--json]
nodaro media add-captions <videoUrl> [options, see below]
nodaro media still-to-video --image <url> --audio <url> [--motion none|zoom-in|zoom-out|pan-left|pan-right|ken-burns] [--intensity <1-10>] [--resolution 720p|1080p|4K] [--aspect-ratio <W:H>] [--fps 24|30] [--fit cover|contain] [--pad-color <hex>] [--watch] [--poll-interval <ms>] [--json]
nodaro media slideshow --images <url...> [--audio <url>] [--durations "10,auto,auto"] [--per-image <sec>] [--transition <id>] [--transition-duration <sec>] [--motion none|zoom-in|zoom-out|ken-burns|alternate] [--intensity <1-10>] [--resolution 720p|1080p|4K] [--aspect-ratio <W:H>] [--fps 24|30] [--fit cover|contain] [--pad-color <hex>] [--watch] [--json]
nodaro media collage <imageUrls...> [--sizes <0-3,...>] [--numbered] [--label <text>...] [--badge-position top-left|top-right] [--layout smart|grid] [--resolution 2K|4K] [--aspect-ratio <W:H>] [--gap <px>] [--background-color <hex>] [--watch] [--poll-interval <ms>] [--json]
nodaro media overlay <imageUrl> [layerUrls...] [--layers-file <path>] [--anchor <anchor>] [--x <%>] [--y <%>] [--width <%>] [--opacity <0-1>] [--platform <id>...] [--qr-text <text>] [--mask-mode none|layers|around|outside] [--mask-spread <px>] [--canvas <WxH>] [--base-fit contain|cover] [--background-color <hex>] [--output-format png|jpg|webp] [--watch] [--poll-interval <ms>] [--json]
nodaro media overlay-placement <imageUrl> [--intent <text>] [--aspect <ratio>] [--safe-area <x,y,w,h>] [--json]
nodaro media video-overlay <videoUrl> [layerUrls...] [--at <start[-end]>...] [--preset card|corner-badge|full-frame] [--corner top-left|top-right|bottom-left|bottom-right] [--layers-file <path>] [--aspect 16:9|9:16|1:1|4:5] [--base-fit cover|contain] [--background-color <hex>] [--watch] [--poll-interval <ms>] [--json]
nodaro media generate-mask <imageUrl> <prompt> [--threshold <n>] [--watch] [--poll-interval <ms>] [--json]
nodaro media video-mask <videoUrl> <prompt> [--threshold <n>] [--model sam-3.1|sam-3] [--hold-last-mask] [--min-subject-height <pct>] [--max-subject-height <pct>] [--zone <L,R,T,B>] [--per-shot] [--redetect-every <sec>] [--watch] [--poll-interval <ms>] [--json]
nodaro media mask-composite <foregroundUrl> <backgroundUrl> <maskUrl> [--invert] [--feather <px>] [--grow <px>] [--background-fit cover|contain|stretch] [--audio foreground|background|mix|none] [--watch] [--poll-interval <ms>] [--json]
nodaro media mask-composite <backgroundUrl> <maskUrl> --fill pixelate|blur [--pixel-size-pct <pct>] [--blur-strength-pct <pct>] [--invert] [--feather <px>] [--grow <px>] [--watch] [--json]
nodaro media save <url> [--filename <name>] [--type image|video|audio] [--watch] [--poll-interval <ms>] [--json]
פקודהמה היא עושה
media downloadמייבאת לאחסון שלכם את הסרטון שמאחורי קישור. הדגל --section מביא טווח זמן אחד, בשניות. הדגל --watch מציג את ההתקדמות בזמן אמת, ואין משימה שצריך לבדוק את הסטטוס שלה אחר כך.
media metadataקוראת את האורך, את הממדים ואת הכותרת של קובץ מדיה לפי הכתובת שלו, בלי להוריד אותו.
media trim-videoמקצצת סרטון לפי זמן התחלה וזמן סיום, או משאירה את השניות הראשונות או האחרונות שלו.
media trim-audioמקצצת את האודיו של סרטון או של קובץ אודיו, ושומרת אותו כ-MP3, WAV או AAC.
media split-mediaחותכת סרטון, קובץ אודיו או את שניהם לחלקים של --chunk-duration שניות לכל היותר ושל --min-part-duration שניות לפחות. ברירת המחדל של המינימום היא 4 שניות. החלקים נמצאים ב-videoUrls וב-audioUrls של המשימה. ראו את הדף פיצול למקטעים.
media add-captionsצורבת כתוביות בסרטון. ראו את הסעיף כתוביות.
media still-to-videoהופכת תמונה נייחת אחת וקובץ אודיו אחד לקובץ MP4, תמורת 0 קרדיטים. הסרטון ארוך בדיוק כמו האודיו, ולכן אין דגל שקובע את האורך שלו. הדגל --motion מנפיש את התמונה.
media slideshowהופכת בין 2 ל-100 תמונות, עם אודיו אופציונלי, למצגת MP4, תמורת 0 קרדיטים.
media collageמסדרת בין 2 ל-30 תמונות בתמונה גדולה אחת.
media overlayמציבה עד 12 שכבות על תמונת בסיס, בדיוק ברמת הפיקסל, בלי AI.
media overlay-placementשואלת מודל ראייה איפה למקם שכבה אחת.
media video-overlayמציבה בין 1 ל-20 שכבות תמונה מתוזמנות מעל סרטון, בלי AI, תמורת 22 קרדיטים.
media generate-maskמוצאת בתמונה נושא שמתואר בטקסט, ומחזירה תמונת מסכה בשחור־לבן, לבנה במקום שבו הנושא נמצא. הדגל --threshold מקבל ערך מ-0 עד 1, וברירת המחדל היא 0.3. המודל שרכיב יצירת מסכה משתמש בו היום מתעלם מהערך הזה, ולכן כדי לשנות את המסכה, שנו את הפרומפט. הפלט של המשימה כולל את maskUrl, המסכה, ואת imageUrl, המקור כפי שהוא. העבירו את שניהם לעריכת השלמה. הפקודה עולה 55 קרדיטים. ראו את הדף יצירת מסכה.
media video-maskעוקבת לאורך סרטון אחרי נושא שמתואר בטקסט, ומחזירה סרטון מסכה בשחור־לבן, לבן במקום שבו הנושא נמצא. SAM 3.1 הוא ברירת המחדל, ו---model sam-3 עולה חצי. הדגל --threshold מקבל ערך מ-0.05 עד 0.95, וברירת המחדל היא 0.5. ערך נמוך יותר מוצא יותר. הדגל --hold-last-mask משאיר את המסכה האחרונה בפריימים שבהם הנושא אובד, לכל היותר שנייה אחת. הדגל --min-subject-height משמיט נושאים שהגובה שלהם נמוך מהאחוז הזה מגובה הפריים, והדגל --max-subject-height משמיט את אלה שגבוהים ממנו. הדגל --zone 10,10,5,5 משאיר רק את הנושאים שהמרכז שלהם נמצא בתוך השוליים האלה משמאל, מימין, מלמעלה ומלמטה, מ-0% עד 49% כל אחד. הדגל --per-shot מוצא קודם את החיתוכים בין הסצנות, ומזהה את הנושא מחדש בכל שוט. הדגל --redetect-every, עם ערך מ-1 עד 10 (0, ברירת המחדל, פירושו כבוי), מזהה את הנושא מחדש גם כל מספר כזה של שניות, ועם --per-shot עושה זאת בתוך כל שוט. כך נתפס גם מי שנכנס לפריים או מסתובב למצלמה באמצע שוט. ההרצה איטית יותר, והמחיר לא משתנה. ראו את הדף מסכת וידאו.
media mask-compositeמציבה את החזית מעל הרקע דרך המסכה, כשהלבן מסמן את החזית. הפקודה עולה 11 קרדיטים לכל 5 שניות של התוצאה, או חלק מהן. הדגל --feather מקבל ערך מ-0 עד 20 פיקסלים, והדגל --grow מ--10 עד 10. עם --fill pixelate או --fill blur, המסכה מתמלאת ברקע עצמו, ולכן הפקודה מקבלת שתי כתובות, של הרקע ושל המסכה, והתוצאה נקבעת לפי הרקע. הדגל --pixel-size-pct מקבל ערך מ-0.2 עד 10, עם ברירת מחדל של 1.25, והדגל --blur-strength-pct מ-0.1 עד 5, עם ברירת מחדל של 2. ראו את הדף שילוב לפי מסכה.
media saveשומרת באחסון שלכם קובץ מדיה לפי הכתובת שלו, כתמונה, כסרטון או כקובץ אודיו.

מצגות

עם אודיו, האודיו קובע את אורך המצגת. אורכים שקבעתם עם --durations מותאמים באופן יחסי, וה-CLI מודיע לכם על כך. בלי אודיו, המצגת שקטה, והאורך שלה הוא מספר התמונות כפול --per-image.

קולאז׳ים

  • הדגל --sizes נותן לכל תמונה רמז לגודל יחסי, לפי סדר התמונות: הערך 0 פירושו אוטומטי, 1 גדול (רחב בערך פי שניים), 2 בינוני ו-3 קטן (בערך בחצי הרוחב). רמזי הגודל עובדים רק בפריסה החכמה.
  • הדגל --numbered מטביע מספר סידורי, החל מ-1, בפינה של כל תמונה, לסטוריבורדים.
  • הדגל --badge-position קובע את הפינה הזו: top-left, ברירת המחדל, או top-right. הוא קובע גם את המיקום של התוויות.
  • הדגל --label מוסיף כיתוב אחרי המספר. חזרו עליו פעם אחת לכל תמונה, לפי הסדר; ערך ריק, "", מדלג על תמונה אחת.

שכבות על תמונה

  • כתובות של תמונות שמופיעות אחרי תמונת הבסיס הן שכבות תמונה. כולן חולקות את אותם --anchor, --x, --y, --width ו---opacity, הגדרות משותפות שמתאימות לסימן מים.
  • הדגל --layers-file מקבל במקום זאת את מערך ה-JSON המלא של השכבות: אפשרויות לכל שכבה, וגם שכבות מסוג טקסט, קוד QR וצורה.
  • המיקום נמדד באחוזים מתמונת הבסיס, ולכן אותה פקודה מתאימה גם לתצוגה מקדימה ב-1K וגם לרינדור ב-4K.
  • הדגל --platform, שאפשר לחזור עליו, מרנדר את התמונה המשולבת גם בגודל של הפלטפורמה הזו. רינדור הבסיס עולה 11 קרדיטים, וכל פלטפורמה מוסיפה למחיר. הפלט של המשימה מפרט את הרינדורים הנוספים ב-variants.
  • הפקודה overlay-placement עונה באותן יחידות של אחוזים: נקודת עיגון, x, y, width ונימוק בשורה אחת. היא עונה מיד, בלי משימה שצריך לבדוק את הסטטוס שלה, ועולה כמו קריאה אחת מתמונה לטקסט.

שכבות על וידאו

  • תנו --at אחד לכל כתובת של תמונה, לפי הסדר. הערך 3 פירושו מ-3 שניות ועד הסוף, והערך 1.2-2.6 פירושו מ-1.2 עד 2.6 שניות.
  • הדגלים --preset ו---corner חלים על כל שכבת תמונה שניתנה ככתובת.
  • הדגל --layers-file מקבל במקום זאת את מערך השכבות המלא, עם תיבה, אטימות, אנימציה וסדר שכבות לכל שכבה.
  • הדגלים --base-fit ו---background-color דורשים את --aspect.
  • האודיו של סרטון הבסיס נשמר בלי שינוי.

אפשרויות השכבות מתוארות בדף של רכיב שכבה על וידאו.

כתוביות

nodaro media add-captions <videoUrl> [--text <text>] [--captions-file <file.json>] [--style subtitle|word-highlight|karaoke|tiktok-words|word-pop|bouncy] [--look outline|clean] [--position bottom|top|center] [--position-y <pct>] [--font-size <px>] [--font-family <name>] [--font-weight <100-900>] [--color <c>] [--background-color <c>] [--stroke-color <c>] [--stroke-width <px>] [--highlight-color <c>] [--uppercase|--no-uppercase] [--max-words-per-line <1-20>] [--animate|--no-animate] [--no-auto-transcribe] [--transcribe-provider elevenlabs-stt|incredibly-fast-whisper|whisper] [--segments-file <file.json>] [--watch] [--poll-interval <ms>] [--json]

ל-media add-captions יש שני סוגים של סגנונות, כמו לרכיב הוספת כתוביות:

סגנוןמה הוא מציג
subtitleכתוביות סטטיות, בלי אנימציה של מילים.
word-highlight, karaoke, tiktok-words, word-pop, bouncyכתוביות מונפשות, מילה אחר מילה. הסגנונות word-highlight, karaoke ו-bouncy מציגים שורה אחת בכל פעם, שנשארת על המסך.

הטקסט של הכתוביות

  • בסגנון subtitle, הטקסט של --text נצרב כגוש קבוע אחד לכל הסרטון. תמלול אף פעם לא מחליף אותו. כדי ליצור כתוביות מהדיבור, השמיטו את --text.
  • בסגנון מונפש, הטקסט של --text הוא רק חלופה: משתמשים בו כשהתמלול לא מחזיר כלום, או כשאתם מעבירים את --no-auto-transcribe.
  • הדגל --captions-file מקבל קובץ עם מערך JSON של רשומות עם תזמון לכל מילה, [{ text, startMs, endMs }], רשומה אחת לכל מילה בסגנונות המונפשים. השדה words בתוצאה של nodaro audio transcribe מתאים לפורמט הזה כמו שהוא; העבירו את הקובץ יחד עם --no-auto-transcribe.
  • הדגל --segments-file נותן לטווחי זמן סגנון, מראה ומיקום משלהם. אסור שהטווחים יחפפו זה לזה.

עיצוב

  • דגלי העיצוב חלים גם על הסגנון subtitle: --look, --font-family, --font-weight, --stroke-color, --stroke-width, --uppercase, --position-y ו---max-words-per-line. כתובית subtitle עם עיצוב מתומחרת במחיר של כתוביות מונפשות; כתובית subtitle פשוטה נשארת במחיר הנמוך יותר.
  • הדגלים --highlight-color ו---animate עובדים רק בסגנונות מונפשים. בסגנון subtitle הם נדחים.
  • הדגל --animate מופעל כברירת מחדל. הדגל --no-animate עוצר את התנועה של כל מילה, ושומר על הקיבוץ ועל צבע המילה הנאמרת.
  • בלי --look, הסגנונות המונפשים מרונדרים כ-outline, והסגנון subtitle מרונדר כ-clean.
  • הדגל --max-words-per-line מגביל את מספר המילים בשורת כתובית אחת, או בקבוצה אחת של tiktok-words, מ-1 עד 20. גם רוחב הפריים, סופי משפטים והפסקות של 0.5 שנייה ומעלה שוברים שורות. מילה אחת או שתיים נותנות כתוביות קצרות וקולעות שנקראות מהר; כדי למלא את הרוחב, השמיטו את הדגל. בכתובית subtitle עם --text, הוא קובע רק את שבירת השורות, ואין לו השפעה על word-pop.
  • רינדור מונפש או מעוצב שומר על קצב הפריימים של המקור, כמספר שלם בין 15 ל-60 פריימים לשנייה. מקור עם קצב פריימים משתנה, או מקור ארוך מאוד, מרונדר ב-30 פריימים לשנייה.

מנוע התמלול

הדגל --transcribe-provider בוחר את המנוע שמתמלל את הדיבור. סגנון מונפש צריך תזמון לכל מילה, מ-incredibly-fast-whisper, ברירת המחדל, או מ-elevenlabs-stt. הסגנון subtitle צריך רק תזמון ברמת המשפט, ולכן גם המנוע whisper עובד בו.

אודיו

nodaro audio separate --audio <url> [--mode vocal_instrumental|stems] [--quality auto|fast|best] [--watch] [--poll-interval <ms>] [--json]
nodaro audio isolate --audio <url> [--watch] [--poll-interval <ms>] [--json]
nodaro audio fx --audio <url> [--preset <preset>] [--mix <0-100>] [--delay <20-2000>] [--decay <0-1>] [--eq-low <db>] [--eq-high <db>] [--watch] [--poll-interval <ms>] [--json]
nodaro audio mix --audio <url> --audio <url> ... [--volumes <csv>] [--duck-under <index>] [--duck-amount <0-100>] [--watch] [--poll-interval <ms>] [--json]
nodaro audio adjust-volume --audio <url>|--video <url> [--volume <0-200>] [--normalize] [--fade-in <sec>] [--fade-out <sec>] [--watch] [--poll-interval <ms>] [--json]
nodaro audio pitch-tempo --audio <url>|--video <url> [--semitones <-12..12>] [--tempo <0.5-2>] [--no-preserve-formants] [--watch] [--poll-interval <ms>] [--json]
nodaro audio combine --segment <url[@a-b]> --segment ... [--watch] [--poll-interval <ms>] [--json]
nodaro audio transcribe --audio <url> [--provider elevenlabs-stt|incredibly-fast-whisper|whisper] [--language <code>] [--diarize] [--tag-audio-events] [--word-timestamps] [--watch] [--poll-interval <ms>] [--json]
פקודהמה היא עושהרכיב
audio separateמפרידה את השירה מהאינסטרומנטל, או מפצלת לסטמים.הפרדת אודיו
audio isolateמשאירה את הקול ומסירה את כל השאר.מחלץ קול
audio fxמחילה ערכת אפקט, עם הגדרות של מיזוג, השהיה, דעיכה ואקולייזר.אפקטי אודיו
audio mixמשלבת כמה רצועות במיקס אחד, עם עוצמה משלה לכל רצועה. הדגל --duck-under מנמיך את שאר הרצועות מתחת לרצועה אחת, שמצוינת לפי האינדקס שלה, כשהספירה מתחילה מ-0. הדגל --duck-amount קובע בכמה, וברירת המחדל היא 75.מיקס אודיו
audio adjust-volumeמשנה את העוצמה, מנרמלת ומוסיפה עמעום כניסה או עמעום יציאה.כוונון עוצמה
audio pitch-tempoמזיזה את גובה הצליל בחצאי טונים, או משנה את הטמפו בלי לשנות את גובה הצליל. עם --no-preserve-formants, האופי של הקול משתנה יחד עם גובה הצליל.גובה צליל וטמפו
audio combineמאחדת מקטעים ברצף, אחד אחרי השני. הצורה url@a-b לוקחת טווח זמן אחד מקובץ.שילוב אודיו
audio transcribeהופכת דיבור לטקסט.תמלול

אלה אבני הבניין שרכיב משנה קול Pro משלב, וכאן כל אחת מהן זמינה בנפרד.

מנועי תמלול

מנועתזמון לכל מילהתמיכה נוספת
elevenlabs-sttתמיד--diarize (מי מדבר מתי) ו---tag-audio-events
incredibly-fast-whisperעם --word-timestamps
whisperאין, רק מקטעים ברמת המשפט; הדגל --word-timestamps נדחה לפני שנגבים קרדיטים

כשמשמיטים את --provider, רץ המנוע whisper. ציינו מנוע בכל פעם שאתם צריכים תזמון לכל מילה.

ב-output_data של המשימה שהושלמה נמצאים text, words (רשומה אחת לכל מילה, באלפיות שנייה) ו-json (התמלול המנורמל, גם הוא באלפיות שנייה). רשימת segments ברמה העליונה, בשניות, קיימת רק עם whisper ועם incredibly-fast-whisper; המנוע elevenlabs-stt לא מחזיר אותה, ולכן השתמשו ב-words. לרינדור מונפש, העבירו את words ל-media add-captions --captions-file.

עריכה

פקודות העריכה הן אבני בניין עריכתיות לפודקאסטים ולסרטונים ארוכים. הפקודה edit tighten-episode מריצה עריכה שלמה של פודקאסט בפקודה אחת.

nodaro edit silence-detect <audioUrl> [--threshold-db=-35] [--min-silence-ms <ms>] [--pad-ms <ms>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit audio-sync (--source <[id=]url> ... | --sources-file <file.json>) [--reference <id>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit apply-edl --edl <file.json> [--transcript <file.json>] [--source <url> ...] [--output video|audio] [--quality proxy|final] [--crossfade-ms <ms>] [--clip-key <inMs-outMs>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit plan --mode tighten|clips|chapters|trailer --plan-tier economy|standard|premium --transcript <file.json> (--source <[id=]url[@audio|@video]> ... | --sources-file <file.json>) [--silence <file.json>] [--offsets <file.json>] [--transcript-source <id>] [--instructions <text>] [--style-guide <text>] [--count <n>] [--target-duration-sec <n>] [--target-aspect 16:9|9:16|1:1|4:5] [--platform <name>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit switch-cameras --edl <file.json> --transcript <file.json> [--speaker-map <file.json>] [--speaker-names <file.json>] [--min-shot-ms <ms>] [--lead-ms <ms>] [--max-shot-ms <ms>] [--wide-every <n>] [--layout-hints] [--watch] [--poll-interval <ms>] [--json]
פקודהמה היא עושהרכיב
edit silence-detectמוצאת את קטעי השקט בהקלטה.זיהוי שקט
edit audio-syncמיישרת בין 2 ל-6 הקלטות, אודיו או וידאו, של אותו אירוע.סנכרון אודיו
edit planמתכננת עריכה מתוך תמלול: הידוק הקצב, חיתוך קליפים, סימון פרקים או חיתוך טריילר.תוכנית עריכה
edit apply-edlמרנדרת רשימת עריכה (EDL) כסרטון או כקובץ אודיו.החלת רשימת עריכה
edit switch-camerasמעבירה כל חיתוך בעריכה למצלמה של האדם שמדבר. התמלול צריך לכלול תוויות דוברים.מחליף מצלמות
edit tighten-episodeמהדקת הקלטה אחת לפרק מוגמר: תמלול, תכנון ורינדור, עם כתוביות, מוזיקה ומסגור לפי ההגדרות.הידוק פרק
edit continue-use-caseממשיכה הרצה של רכיב הידוק פרק כמשימה חדשה.הידוק פרק

הפקודה edit audio-sync נותנת להקלטות את השמות source-1, source-2 וכן הלאה, אלא אם נותנים מזהה בצורה id=url. ב-output_data.json שלה נמצאים שלושה שדות:

  • השדה reference: ההקלטה שההקלטות האחרות מיושרות לפיה. בוחרים אותה עם --reference.
  • השדה offsets: רשומה אחת לכל הקלטה, עם sourceId, offsetMs, confidence ו-driftMsPerHour.
  • השדה notes: הערות על היישור.

זמן בהקלטה מומר לזמן בהקלטת הייחוס כך: referenceMs = sourceMs + offsetMs.

הפקודה edit apply-edl --quality proxy מרנדרת תצוגה מקדימה לבדיקה: היא פרטית ומתומחרת בתעריף הנמוך של תצוגה מקדימה. עם --quality final, הפקודה מרנדרת את גרסת המסירה. הדגל --clip-key מציין את הקליפ שהרינדור חותך מתוכנית במצב קטעים, בצורה <first inMs>-<last outMs>. בתוצאה הוא מופיע ב-output_data.clipKey, לצד output_data.quality.

בהקלטה מכמה מצלמות, הפקודה edit plan --offsets מקבלת את ה-output_data.json של משימת edit audio-sync שרצה על אותם מזהי מקורות. התוכנית מחילה את ההיסט של כל מקור לפני שהתכנון מתחיל. מקור שלא נמדד, או שההתאמה שלו חלשה, נדחה; במקום זאת, קבעו את ה-offsetMs שלו ב---sources-file. עריכה מכמה מצלמות מריצה את הפקודות האלה לפי הסדר:

  1. הפקודה audio transcribe --provider elevenlabs-stt --diarize, לתמלול עם תוויות דוברים.
  2. הפקודה edit audio-sync, למדידת ההיסטים.
  3. הפקודה edit plan --offsets, לתכנון העריכה.
  4. הפקודה edit switch-cameras, להעברת כל חיתוך למצלמה של הדובר.
  5. הפקודה edit apply-edl --quality proxy לבדיקה, ואז edit apply-edl --quality final למסירה.

הידוק של פרק שלם

nodaro edit tighten-episode --media <url> [--music <url>] [--output video|audio] [--framing 16:9|9:16|1:1|4:5 [--layout auto|single|side-by-side|stacked|grid|pip] [--framing-source auto|static|tracking]] [--no-captions] [--review] [--plan-tier economy|standard|premium] [--instructions <text>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit continue-use-case <jobId> --mode from-failed|render-final [--edit <file.json>] [--type tighten-episode] [--idempotency-key <key>] [--watch] [--poll-interval <ms>] [--json]

הפקודה edit tighten-episode מקבלת הקלטה אחת, וידאו או אודיו, של עד 3 שעות. היא מתמללת את ההקלטה, מתכננת את החיתוך המהודק ומרנדרת אותו, ומוסיפה כתוביות, מוזיקה ומסגור לפי ההגדרות. הדגלים --layout ו---framing-source עובדים רק עם --framing. עם --framing-source static, ברירת המחדל, הפריים מתחלק באופן שווה בין הדוברים. הערך tracking עוקב אחרי פנים עם רכיב מסגרות דוברים, שמשלמים עליו לכל 1,000 פריימים דגומים, או חלק מהם, והוא נדחה כשרכיב מסגרות דוברים לא זמין לכם. הערך auto עוקב אחרי פנים כל עוד רכיב מסגרות דוברים זמין לכם, ואחרת מחלק את הפריים באופן שווה. בהרצה, כל שלב עולה לפי התעריף שלו, ובנוסף יש עמלה קבועה לכל הרצה. הדגל --review עוצר בתצוגה מקדימה, כדי שאדם יבדוק אותה.

הפקודה edit continue-use-case ממשיכה הרצה של רכיב הידוק פרק כמשימה חדשה, באחד משני מצבים:

  • המצב from-failed שומר את השלבים שהסתיימו ומריץ את השאר. העמלה משוריינת שוב, כי על העמלה של ההרצה שנכשלה קיבלתם החזר.
  • המצב render-final מרנדר את הפרק באיכות מלאה אחרי תצוגה מקדימה של --review, עם ההגדרות של התצוגה המקדימה ובלי עמלה. הדגל --edit מקבל את העריכה שהבודק עשה בתוכנית, כקובץ EDL.

ההרצה ממשיכה בנתיב של סוג הרכיב שלה. הדגל --type מציין את הסוג. בלי --type, ה-CLI קורא את המשימה כדי לברר את הסוג שלה. אסימון בלי ההרשאה jobs:read ממשיך בנתיב של רכיב הידוק פרק.

כשדחייה מציינת משימה אחרת, ה-CLI מדפיס את הקוד ואת המשימה ההיא. הקוד already_running פירושו: בדקו את המצב של המשימה ההיא. הקוד continuation_superseded פירושו: המשיכו את המשימה ההיא במקום זאת. הקוד render_final_already_rendered פירושו: התוצאה של המשימה ההיא היא זו שצריך להשתמש בה. עם --json, הדחייה נכתבת לפלט הסטנדרטי בצורה { "error": { "code", "message" }, "jobId" }, עם קוד היציאה 1.

nodaro edit tighten-episode --media https://cdn.example.com/episode-12.mp4 --framing 9:16 --review --watch
nodaro edit continue-use-case <jobId> --mode render-final --watch

שאלות נפוצות

איך מחליפים מה-CLI את הקולות של כמה דוברים בסרטון?

הריצו את הפקודה nodaro voice recast עם ‎--video ועם ‎--voices, קול אחד לכל דובר, לפי הסדר שבו הדוברים מזוהים. לדובר שנשאר עם הקול המקורי, כתבו keep, למשל ‎--voices Rachel,keep,Aria.

איזה מנוע תמלול נותן תזמון לכל מילה?

בפקודה nodaro audio transcribe, המנוע elevenlabs-stt תמיד מחזיר תזמון לכל מילה, והמנוע incredibly-fast-whisper מחזיר אותו עם ‎--word-timestamps. המנוע whisper מחזיר רק מקטעים ברמת המשפט. כשמשמיטים את ‎--provider, רץ המנוע whisper, ולכן ציינו מנוע בכל פעם שאתם צריכים מילים.

האם הפקודות still-to-video ו-slideshow עולות קרדיטים?

לא. הפקודות nodaro media still-to-video ו-nodaro media slideshow מרנדרות את הסרטון בלי שום מודל AI, ועולות 0 קרדיטים.

איך מוסיפים לסרטון כתוביות עם מילים שתיקנתי בעצמי?

תמללו את האודיו במנוע שמחזיר תזמון לכל מילה, ערכו את המילים בקובץ ה-JSON ששמרתם, ואז העבירו את הקובץ לפקודה nodaro media add-captions עם ‎--captions-file ועם ‎--no-auto-transcribe.

אילו פקודות מדיה דורשות Nodaro Cloud?

הפקודות voice analyze ו-voice export רצות ב-Nodaro Cloud בלבד. הפקודות voice recast, edit plan ו-edit switch-cameras רצות ב-Nodaro Cloud, והתקנה באירוח עצמי מריצה אותן דרך החיבור שלה ל-Nodaro Cloud.

עודכן לאחרונה

בדף הזה