פלייבוק חינמי · כלי ב-60 דקות

תמלול עברית בחינם, על המחשב שלכם

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

  • אביעד גינדי

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

למי זה מתאים

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

לא צריך לדעת לתכנת. צריך להעתיק פקודה, להדביק אותה בחלון ולהקיש Enter. כל פקודה כתובה כאן במלואה, בנפרד ל-Windows ול-Mac.

מה יהיה לכם בסוף השעה

  • Python וספרייה אחת מותקנים במחשב (faster-whisper), ומודל התמלול העברי של ivrit.ai שמור אצלכם אחרי הורדה אחת.
  • קובץ transcribe.py שמתמלל קובץ אחד או תיקייה שלמה בפקודה אחת.
  • קובץ טקסט ליד כל הקלטה, עם חותמת זמן בתחילת כל שורה, כמו [00:04:12], כך שקל לחזור לרגע המדויק בהקלטה.
  • שישה פרומפטים שהופכים תמליל לסיכום פגישה, להחלטות ומשימות, לפרוטוקול ישיבה, לשורה בגיליון הלידים ולסיכום שיחה שנכנס ישר לערכה מסיכום שיחה להצעת מחיר.
  • הרגל עבודה מסודר: הודעה על ההקלטה בתחילת השיחה, בדיקה של שמות ומספרים מול ההקלטה, ומחיקה כשכבר לא צריך.

שלוש דרכים, מהקלה לפרטית

דרך 1, הכי מהירה: מעלים את ההקלטה ל-Gemini או ל-ChatGPT. עובד מיד, בלי להתקין כלום. החיסרון: ההקלטה יוצאת מהמחשב לשרתים של החברה. לפי Google, בשכבה החינמית של Gemini התוכן שנשלח משמש לשיפור המוצרים שלה, ובשכבה בתשלום לא. לכן זה לא מתאים לשיחות רגישות. התנאים משתנים, אז בדקו בעצמכם את התנאים העדכניים של כל כלי לפני שאתם מעלים משהו.

דרך 2, העיקר של הערכה: המודל של ivrit.ai על המחשב שלכם. ivrit.ai הוא פרויקט ישראלי פתוח שמאמן מודלים לעברית. המודל ivrit-ai/whisper-large-v3-turbo-ct2 הוא Whisper שאומן מחדש על עברית, ברישיון Apache-2.0, שמותר להשתמש בו גם בעסק. מריצים אותו עם הספרייה faster-whisper. בהרצה הראשונה המודל יורד פעם אחת, בערך 1.6GB. מאותו רגע ההקלטות לא יוצאות מהמחשב. זה בחינם, ואין מנוי.

דרך 3, אחרי התמליל: פרומפטים. את קובץ הטקסט מדביקים בכלי AI (ChatGPT, Claude או Gemini) עם אחד הפרומפטים, ומקבלים סיכום, משימות או פרוטוקול. כאן מותר להשתמש בכלי בענן, כי אתם שולטים במה שאתם מדביקים. אם השיחה רגישה, מוחקים מהתמליל לפני ההדבקה שמות, מספרי טלפון, מספרי תעודת זהות ופרטים מזהים אחרים.

רוב הצעדים למטה הם דרך 2. צעד 1 הוא דרך 1, למי שרוצה תוצאה עכשיו, וצעד 8 הוא דרך 3.

מה צריך

  • מחשב Windows או Mac, עם כמה ג'יגה פנויים בדיסק בשביל המודל.
  • חיבור לאינטרנט, רק להתקנה ולהורדת המודל.
  • הקלטה אחת קצרה לניסיון, בערך 5 דקות. כל פורמט נפוץ עובד: mp3, m4a, wav, ogg, opus (הפורמט של הודעות קוליות בוואטסאפ), וגם וידאו כמו mp4 או mov.
  • כלי AI בחינם לצעד האחרון: ChatGPT, Claude או Gemini.

על הקלטה והסכמה, לפני הכל: בתחילת שיחה או פגישה אומרים שמקליטים ולמה. למשל: "אני מקליט את השיחה כדי לא לפספס פרטים בהצעה, זה בסדר מבחינתך?". מה החוק דורש מכם תלוי במצב: שיחה עם לקוח, עם עובד, ישיבה עם תושבים או עם מתנדבים. את זה בודקים עם עורך דין, לא עם מדריך. ועוד שתי החלטות ששווה לקבל מראש: כמה זמן שומרים הקלטות ותמלילים (רק כמה שצריך), ומי יכול לראות אותם.


הערכה, צעד אחרי צעד (60 דקות)

צעד 1 (5 דקות): הדרך המהירה, למי שצריך תמליל עכשיו

מה עושים: פותחים את Gemini או את ChatGPT, מצרפים את קובץ ההקלטה וכותבים:

פרומפט לתמלול בכלי ענן
תמלל את ההקלטה המצורפת בעברית, מילה במילה. בתחילת כל קטע כתוב חותמת זמן בפורמט [hh:mm:ss]. אם לא ברור מה נאמר, כתוב [לא ברור] ואל תנחש. אל תסכם ואל תתקן ניסוחים.

איך: אם הכלי לא מקבל את הפורמט, נסו את הכלי השני, או המירו את הקובץ ל-mp3. בדקו את התוצאה מול ההקלטה, במיוחד שמות ומספרים.

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

צעד 2 (10 דקות): מתקינים Python

מה עושים: מתקינים Python בגרסה 3.10 ומעלה. אם כבר יש לכם, רק בודקים את הגרסה.

איך ב-Windows:

  1. נכנסים ל-python.org, בתפריט Downloads, ומורידים את קובץ ההתקנה ל-Windows.
  2. במסך הראשון של ההתקנה מסמנים Add python.exe to PATH, ולוחצים Install Now.
  3. אם מסך ההתקנה נראה אחרת, לא נורא. מה שחשוב הוא שהבדיקה בצעד 3 תעבוד.

איך ב-Mac:

  1. הכי פשוט: מורידים את קובץ ההתקנה ל-macOS מ-python.org ומתקינים כרגיל.
  2. מי שכבר עובד עם Homebrew יכול להתקין דרכו (brew install python). שימו לב להערה על Homebrew בצעד 4.

טעות נפוצה: ב-Mac כבר יש לפעמים python3 ישן, בגרסה 3.9. הסקריפט צריך 3.10 ומעלה. אם הבדיקה בצעד הבא מראה 3.9, התקינו גרסה חדשה מ-python.org.

איזו גרסה: כל גרסה מ-3.10 ומעלה אמורה לעבוד. אם יצאה גרסה חדשה ממש לפני כמה שבועות, לפעמים לחבילות לוקח זמן להתעדכן. במקרה כזה 3.12 היא בחירה בטוחה.

צעד 3 (5 דקות): פותחים חלון פקודות בתוך תיקייה

מה עושים: יוצרים תיקייה אחת לכל העבודה, למשל transcripts בתוך "מסמכים", ופותחים בתוכה חלון פקודות. בתוך התיקייה יוצרים תת-תיקייה recordings ושמים בה את ההקלטה לניסיון.

איך ב-Windows: פותחים את התיקייה בסייר הקבצים, לוחצים על שורת הכתובת למעלה, כותבים cmd ומקישים Enter. נפתח חלון שחור, כבר בתוך התיקייה.

איך ב-Mac: ב-Finder לוחצים על התיקייה בכפתור ימני (או Control ולחיצה), ובוחרים Services > New Terminal at Folder. אם האפשרות לא מופיעה, פותחים את Terminal, כותבים cd (עם רווח בסוף), גוררים את התיקייה לחלון ומקישים Enter.

בודקים שהכל במקום:

Windows: בדיקת גרסה
py --version
Mac: בדיקת גרסה
python3 --version

צריכה להופיע שורה כמו Python 3.12.7. כל מספר מ-3.10 ומעלה טוב.

צעד 4 (5 דקות): מתקינים את faster-whisper

מה עושים: מריצים פקודת התקנה אחת. היא מתקינה את faster-whisper ואת כל מה שהוא צריך, כולל ספריית השמע. לא צריך להתקין ffmpeg בנפרד.

Windows: התקנה
py -m pip install faster-whisper "av<19"
Mac: התקנה
python3 -m pip install faster-whisper "av<19"

למה "av<19": faster-whisper קורא את קובצי השמע דרך ספרייה בשם PyAV (בפקודה היא av). הגרסה החדשה שלה, 19, שוברת את faster-whisper 1.2. בדקנו את זה ב-22.10.2026: עם PyAV 19 התמלול נכשל בשגיאה, ועם גרסה מתחת ל-19 הוא עובד. התוספת "av<19" אומרת ל-pip להתקין גרסה מתחת ל-19. המירכאות חשובות, כי בלעדיהן החלון מבין את הסימן < כפקודה אחרת. כש-faster-whisper ישחרר גרסה שמתקנת את זה, אפשר לוותר על התוספת.

הערה ל-Homebrew ב-Mac: אם מופיעה השגיאה externally-managed-environment, צריך סביבה נפרדת. מריצים את שלוש השורות האלה, אחת אחרי השנייה:

Mac עם Homebrew: התקנה בסביבה נפרדת
python3 -m venv ~/tx-env
source ~/tx-env/bin/activate
python3 -m pip install faster-whisper "av<19"

בכל פעם שפותחים חלון חדש לתמלול, מריצים קודם את source ~/tx-env/bin/activate.

ההתקנה מורידה כמה עשרות מגה ולוקחת דקה או שתיים. הודעות צהובות על pip או על PATH אפשר להתעלם מהן. מה שחשוב הוא שבסוף מופיעה שורה שמתחילה ב-Successfully installed.

צעד 5 (5 דקות): שומרים את הסקריפט

מה עושים: מעתיקים את כל הקוד שלמטה, מהשורה הראשונה ועד האחרונה, לקובץ בשם transcribe.py בתיקייה transcripts. אין צורך לשנות שום שורה.

איך ב-Windows: פותחים את פנקס הרשימות (Notepad), מדביקים, ובוחרים קובץ > שמירה בשם. בשדה "שמירה כסוג" בוחרים כל הקבצים, בשם הקובץ כותבים transcribe.py, ובקידוד בוחרים UTF-8.

איך ב-Mac: ב-TextEdit בוחרים קודם Format > Make Plain Text, ורק אז מדביקים. שומרים בשם transcribe.py, עם קידוד UTF-8. אם TextEdit מציע להוסיף .txt, מסרבים. מי שיש לו עורך קוד, כמו VS Code, יכול לשמור משם.

transcribe.py
"""Hebrew transcription on your own computer, with the ivrit.ai open model (Apache-2.0).

Usage:
  python transcribe.py recording.m4a           one file
  python transcribe.py recordings/             every audio/video file in a folder
  python transcribe.py call.mp3 --words "שם הלקוח, שם המוצר"   names and terms that should be spelled right

Install once: pip install faster-whisper "av<19"   (av 19 breaks faster-whisper 1.2, so it stays below 19)
Writes next to each file: <name>.txt (with timestamps). Files that already have a .txt are skipped (--force redoes them).
The first run downloads the model (about 1.6 GB) once. After that nothing leaves the computer.
"""
import argparse
import sys
import time
from pathlib import Path

MODEL = "ivrit-ai/whisper-large-v3-turbo-ct2"
AUDIO = {".mp3", ".m4a", ".wav", ".ogg", ".opus", ".aac", ".flac", ".amr", ".wma", ".mp4", ".mov", ".webm", ".mkv"}


def stamp(seconds: float) -> str:
    s = int(seconds)
    return f"{s // 3600:02d}:{s % 3600 // 60:02d}:{s % 60:02d}"


def pick_device() -> tuple[str, str]:
    """A graphics card (NVIDIA) if there is one, otherwise the processor with a lighter number format."""
    try:
        import ctranslate2

        if ctranslate2.get_cuda_device_count() > 0:
            return "cuda", "float16"
    except Exception:
        pass
    return "cpu", "int8"


def out_path(path: Path) -> Path:
    """call.m4a -> call.txt; if call.mp3 sits next to it too, call.m4a -> call.m4a.txt so neither overwrites the other"""
    twins = [p for p in path.parent.glob(f"{path.stem}.*") if p != path and p.suffix.lower() in AUDIO]
    return path.with_name(f"{path.name}.txt") if twins else path.with_suffix(".txt")


def files_to_do(target: Path, force: bool) -> list[Path]:
    if target.is_file():
        files = [target]
    elif target.is_dir():
        files = sorted(p for p in target.iterdir() if p.is_file() and p.suffix.lower() in AUDIO)
    else:
        sys.exit(f"לא נמצא: {target}")
    return [f for f in files if force or not out_path(f).exists()]


def transcribe_file(model, path: Path, words: str | None) -> Path:
    segments, info = model.transcribe(
        str(path),
        language="he",
        vad_filter=True,  # skips long silences, faster and fewer made-up lines
        hotwords=words or None,
    )
    lines = []
    for seg in segments:
        text = seg.text.strip()
        if text:
            lines.append(f"[{stamp(seg.start)}] {text}")
            print(f"  {lines[-1]}", flush=True)
    out = out_path(path)
    out.write_text("\n".join(lines) + "\n", encoding="utf-8")
    return out


def main(argv=None) -> int:
    # Hebrew output on any console (Windows included)
    for stream in (sys.stdout, sys.stderr):
        try:
            stream.reconfigure(encoding="utf-8", errors="replace")
        except Exception:
            pass
    ap = argparse.ArgumentParser(description="תמלול עברית במחשב שלכם")
    ap.add_argument("target", help="קובץ שמע או וידאו, או תיקייה")
    ap.add_argument("--words", help="שמות ומונחים שחשוב שייכתבו נכון, מופרדים בפסיקים")
    ap.add_argument("--model", default=MODEL, help=f"ברירת מחדל: {MODEL}")
    ap.add_argument("--force", action="store_true", help="לתמלל מחדש גם קבצים שכבר יש להם .txt")
    args = ap.parse_args(argv)

    todo = files_to_do(Path(args.target).expanduser(), args.force)
    if not todo:
        print("אין קבצים חדשים לתמלל.")
        return 0

    from faster_whisper import WhisperModel

    device, compute = pick_device()
    print(f"טוען את המודל ({device}). בפעם הראשונה זה כולל הורדה, כמה דקות.")
    model = WhisperModel(args.model, device=device, compute_type=compute)

    failed = 0
    for path in todo:
        print(f"\n{path.name}")
        t0 = time.time()
        try:
            out = transcribe_file(model, path, args.words)
            print(f"נשמר: {out.name} ({int(time.time() - t0)} שניות)")
        except Exception as e:  # one bad file doesn't stop the rest
            failed += 1
            print(f"שגיאה בקובץ {path.name}: {e}")
    return 1 if failed else 0


if __name__ == "__main__":
    sys.exit(main())

מה הסקריפט עושה, בלי קוד:

  • קובץ אחד או תיקייה שלמה. נותנים לו שם של הקלטה, או שם של תיקייה, ואז הוא עובר על כל קובצי השמע והווידאו שבה.
  • לא עושה עבודה פעמיים. הקלטה שכבר יש לידה קובץ .txt מדולגת. כדי לתמלל אותה שוב מוסיפים --force.
  • שמות ומונחים. עם --words "שם הלקוח, שם המוצר" נותנים למודל רשימה של מילים שחשוב שייכתבו נכון. זה עוזר, אבל לא מבטיח.
  • התוצאה נשמרת ליד ההקלטה. call.m4a הופך ל-call.txt, וכל שורה מתחילה בחותמת זמן [hh:mm:ss]. אם יש באותה תיקייה שתי הקלטות באותו שם ובפורמטים שונים, למשל call.m4a ו-call.mp3, הקובץ שומר את השם המלא, call.m4a.txt, כדי שאחת לא תדרוס את השנייה.
  • קובץ אחד פגום לא עוצר את השאר. הוא כותב שגיאה על הקובץ הזה וממשיך לבא בתור.
  • מדלג על שקט. קטעים ארוכים בלי דיבור לא מתומללים. זה מהיר יותר, ופחות שורות מומצאות שנוטות להופיע בשקט.
  • בוחר את החומרה לבד. אם יש במחשב כרטיס מסך של NVIDIA, הוא משתמש בו. אם לא, הוא עובד על המעבד.

צעד 6 (15 דקות): מתמללים הקלטה ראשונה

מה עושים: מריצים את הסקריפט על ההקלטה לניסיון. נניח שהיא נקראת test.m4a ונמצאת בתיקייה recordings.

Windows: קובץ אחד
py transcribe.py recordings\test.m4a
Mac: קובץ אחד
python3 transcribe.py recordings/test.m4a

מה קורה: מופיעה השורה "טוען את המודל (cpu). בפעם הראשונה זה כולל הורדה, כמה דקות." בפעם הראשונה המודל יורד, בערך 1.6GB, ואז מתחילות להופיע שורות התמליל על המסך, אחת אחרי השנייה. בסוף מופיעה השורה נשמר: test.txt עם מספר השניות שזה לקח.

כמה זמן זה לוקח: תלוי במחשב. לכן מתחילים מהקלטה של 5 דקות ובודקים כמה שניות כתוב בשורה "נשמר". מזה אפשר להעריך כמה ייקח שעה של הקלטה. במחשב עם כרטיס מסך של NVIDIA זה מהיר בהרבה, והסקריפט מזהה אותו לבד: אז בשורה הראשונה כתוב cuda במקום cpu.

קוראים את התוצאה: פותחים את test.txt מהתיקייה recordings. כל שורה נראית כך:

להעתקה
[00:00:00] שלום, מדבר אלון, אני מקליט את השיחה כדי לא לפספס פרטים, זה בסדר?
[00:00:06] כן, בטח.

טעות נפוצה: לבדוק רק את ההתחלה. עברו על כל התמליל, מול ההקלטה, בשלושה מקומות: שמות, מספרים (סכומים, טלפונים, תאריכים) ומונחים מקצועיים. שם המודל טועה הכי הרבה. החותמת עוזרת: רואים [00:04:12] ומדלגים לשם בנגן.

צעד 7 (5 דקות): שמות, מונחים ותיקייה שלמה

מה עושים: אם בצעד 6 שמות או מונחים יצאו לא נכון, מתמללים שוב עם --words. אחר כך מריצים על תיקייה שלמה.

Windows: שוב, עם שמות ומונחים
py transcribe.py recordings\test.m4a --force --words "אלון, קרמיקה, אינטרפוץ, רמת גן"
Mac: שוב, עם שמות ומונחים
python3 transcribe.py recordings/test.m4a --force --words "אלון, קרמיקה, אינטרפוץ, רמת גן"

--force צריך כאן כי כבר יש test.txt. בלי זה הסקריפט ידלג.

תיקייה שלמה: שמים בתיקייה recordings את כל ההקלטות, ומריצים:

Windows: כל התיקייה
py transcribe.py recordings
Mac: כל התיקייה
python3 transcribe.py recordings

הסקריפט מתמלל רק את מה שעוד אין לו .txt. אפשר להריץ את אותה פקודה כל ערב, והיא תטפל רק בהקלטות החדשות.

הודעות קוליות מוואטסאפ: ב-WhatsApp למחשב פותחים את ההודעה הקולית ומורידים אותה, או מעבירים אותה לעצמכם ושומרים את הקובץ. הקבצים בדרך כלל בפורמט .ogg או .opus, והסקריפט מכיר את שניהם.

צעד 8 (10 דקות): מתמליל לתוצר

מה עושים: פותחים את קובץ ה-.txt, מעתיקים את התמליל, ומדביקים אותו בכלי AI יחד עם אחד הפרומפטים מהחלק הבא.

איך:

  1. מחליטים אם השיחה רגישה. אם כן, מוחקים מהתמליל לפני ההדבקה שמות של אנשים, מספרי טלפון, מספרי תעודת זהות, כתובות ופרטים מזהים אחרים. בעורך הטקסט, חיפוש והחלפה עושה את זה מהר: למשל כל "רונית" הופכת ל"הלקוחה".
  2. בוחרים פרומפט לפי מה שצריך: סיכום, משימות, פרוטוקול, שורה לגיליון, או סיכום שיחה להצעת מחיר.
  3. בודקים את התוצאה מול התמליל. כל הפרומפטים מבקשים חותמת זמן ליד כל החלטה ומשימה, כדי שיהיה קל לבדוק.

טעות נפוצה: לסמוך על הסיכום בלי לבדוק. כלי AI יכול "להשלים" משימה שאף אחד לא אמר, או לשכוח הסתייגות. הפרומפטים אוסרים את זה, ופרומפט 6 בודק את זה, אבל הבדיקה האחרונה שלכם.


כשמשהו לא עובד

מה רואים מה עושים
'py' is not recognized ב-Windows Python לא מותקן, או שהחלון נפתח לפני ההתקנה. סגרו את החלון ופתחו חדש. אם עדיין לא עובד, התקינו שוב וסמנו Add python.exe to PATH
command not found: python3 ב-Mac Python לא מותקן. התקינו מ-python.org ופתחו חלון Terminal חדש
pip לא נמצא, או No module named pip השתמשו בדיוק בפקודה מצעד 4, שמתחילה ב-py -m pip או ב-python3 -m pip. אם עדיין לא עובד, הריצו py -m ensurepip (Windows) או python3 -m ensurepip (Mac) ונסו שוב
No module named faster_whisper ההתקנה לא הושלמה, או שהיא הלכה לגרסת Python אחרת. הריצו שוב את פקודת ההתקנה מצעד 4, באותו חלון שבו אתם מריצים את הסקריפט. ב-Homebrew, הפעילו קודם את הסביבה עם source ~/tx-env/bin/activate
externally-managed-environment ב-Mac Python של Homebrew. התקינו בסביבה נפרדת, לפי ההערה בצעד 4
unexpected keyword argument 'metadata_errors' הותקנה PyAV 19. הריצו py -m pip install "av<19" (Windows) או python3 -m pip install "av<19" (Mac), ונסו שוב
ההתקנה נכשלת עם No matching distribution found כנראה גרסת Python חדשה מדי לאחת החבילות. התקינו Python 3.12 ונסו שוב
הורדת המודל נכשלת או איטית מאוד בדקו את החיבור לאינטרנט והריצו שוב: ההורדה ממשיכה מאיפה שנעצרה. ברשת של עבודה, ייתכן שהאתר huggingface.co חסום. נסו מרשת אחרת
CERTIFICATE_VERIFY_FAILED ב-Mac ב-Python מ-python.org, פתחו את התיקייה Applications > Python 3.x והריצו פעמיים את Install Certificates.command
out of memory או שהמחשב נתקע סגרו תוכנות אחרות, במיוחד דפדפן עם הרבה לשוניות, ותמללו קובץ אחד בכל פעם. עם כרטיס מסך, אפשר להכריח עבודה על המעבד: ב-cmd מריצים קודם set CUDA_VISIBLE_DEVICES=-1, וב-PowerShell $env:CUDA_VISIBLE_DEVICES="-1"
שגיאה על cudnn או cublas במחשב עם NVIDIA חסרות ספריות של NVIDIA. הכי פשוט: לעבוד על המעבד עם הפקודה מהשורה הקודמת. מי שרוצה את כרטיס המסך מתקין את הספריות לפי ההוראות בעמוד של faster-whisper ב-GitHub
לא נמצא: ... השם או הנתיב לא נכונים. בדקו שאתם בתיקייה transcripts, ושהשם כולל את הסיומת, למשל test.m4a
"אין קבצים חדשים לתמלל." לכל ההקלטות כבר יש .txt. כדי לתמלל שוב, הוסיפו --force
העברית בחלון הפקודות הפוכה או מוצגת כריבועים זו רק התצוגה של החלון. הקובץ .txt עצמו תקין
העברית בקובץ .txt נראית כמו ג'יבריש הקובץ שמור ב-UTF-8. בגרסה ישנה של פנקס הרשימות זה נראה שבור. פתחו בעורך עדכני: פנקס הרשימות של Windows 11, VS Code, Notepad++, או גררו את הקובץ לדפדפן
שורות שחוזרות על עצמן, או משפט שאף אחד לא אמר קורה בקטעים עם רעש או מוזיקה. בדקו מול ההקלטה ומחקו. הקלטה קרובה לפה, בחדר שקט, משפרת את התוצאה

פרומפטים מוכנים

מדביקים את הפרומפט, ובמקום הסוגריים מדביקים את התמליל. כל הפרומפטים עובדים ב-ChatGPT, ב-Claude וב-Gemini.

1. סיכום פגישה
הנה תמליל של פגישה, עם חותמות זמן בפורמט [hh:mm:ss]. התמליל נוצר אוטומטית ויכול להכיל טעויות בשמות ובמספרים.

[הדביקו את התמליל]

כתוב סיכום בעברית פשוטה:
1. במשפט אחד: על מה הייתה הפגישה ומי השתתף (רק מי שמוזכר בתמליל).
2. הנושאים העיקריים, עד 6 נקודות, כל אחת עד שני משפטים.
3. מה הוחלט. ליד כל החלטה, חותמת הזמן שבה היא נאמרה.
4. מה נשאר פתוח.
כללים: רק מה שנאמר בתמליל. אל תוסיף מסקנות, המלצות או פרטים שלא נאמרו. אם משהו לא ברור או נראה כמו טעות תמלול, כתוב [לבדוק: ...] במקום לנחש.
2. החלטות ומשימות
הנה תמליל של פגישה, עם חותמות זמן.

[הדביקו את התמליל]

הוצא מהתמליל רק החלטות ומשימות.
טבלה ראשונה, החלטות: החלטה | מי הציע | חותמת זמן.
טבלה שנייה, משימות: משימה | אחראי | עד מתי | חותמת זמן.
כללים: אחראי ומועד רק אם נאמרו במפורש. אם לא נאמרו, כתוב [לא נקבע]. אל תהפוך רעיון שעלה לשיחה להחלטה. אם לא ברור אם זו החלטה, שים אותה ברשימה נפרדת בשם "לא ברור אם הוחלט".
בסוף, הודעה קצרה לוואטסאפ של הצוות עם המשימות, אחראי ומועד, בלי חותמות זמן.
3. פרוטוקול לישיבת ועד או ועדה
הנה תמליל של ישיבה, עם חותמות זמן.

[הדביקו את התמליל]

פרטים שאני משלים: שם הגוף: [שם]. תאריך: [תאריך]. נוכחים: [שמות]. נעדרים: [שמות].

כתוב טיוטת פרוטוקול בעברית, בסגנון ענייני:
- כותרת, תאריך, נוכחים ונעדרים, לפי הפרטים שנתתי.
- סדר היום, לפי הנושאים שעלו בתמליל, בסדר שבו עלו.
- לכל נושא: תמצית הדיון בשלושה עד חמישה משפטים, בלי ציטוטים אישיים ובלי לייחס דעות לאנשים אלא אם זה נאמר כהצעה רשמית.
- החלטות, בנוסח "הוחלט: ...", ואם הייתה הצבעה, התוצאה כפי שנאמרה.
- משימות להמשך: מה, מי, עד מתי.
כללים: רק מה שנאמר. כל פרט שלא ברור, כתוב [לבדוק: ...]. אל תמציא תוצאת הצבעה. בסוף, רשימה של כל ה-[לבדוק] עם חותמות הזמן, כדי שאוכל לבדוק מול ההקלטה.
4. שורה לגיליון הלידים
הנה תמליל של שיחה עם לקוח פוטנציאלי, עם חותמות זמן.

[הדביקו את התמליל]

החזר שורה אחת בתוך בלוק קוד, עם טאב בין עמודה לעמודה, בסדר הזה בדיוק:
תאריך | שם הלקוח | עסק | טלפון | אימייל | מקור הפנייה | מה ביקש | סכום ההצעה לפני מע"מ | חסר בהצעה | סטטוס | תאריך מעקב | הערות
כללים: רק פרטים שנאמרו בשיחה. עמודה שאין לה מידע נשארת ריקה, אבל הטאב נשאר. סכום ההצעה: השאר ריק, אני ממלא אחרי שאכין הצעה. סטטוס: "חדש". אין טאבים או ירידות שורה בתוך תא.
מתחת לבלוק, שתי שורות: מה הלקוח הכי רוצה, ומה הכי מדאיג אותו, כל אחת עם חותמת זמן.
5. סיכום שיחה לערכת הצעת המחיר
הנה תמליל של שיחה עם לקוח, עם חותמות זמן.

[הדביקו את התמליל]

כתוב סיכום שיחה קצר, שאדביק אחר כך בפרומפט שמכין הצעת מחיר. בפורמט הזה:
לקוח: שם, עסק, עיר, טלפון ואימייל (רק מה שנאמר).
איך הגיע: ...
מה ביקש: רשימה, שורה לכל שירות או מוצר, עם כמויות ומידות רק אם נאמרו.
מועדים שביקש: בנוסח "הלקוח ביקש: ...".
תקציב או מחיר שהוזכר: רק אם הלקוח אמר מספר.
שאלות שהלקוח שאל: ...
מה לא ברור ושווה לברר: ...
כללים: אל תכתוב שום מחיר שלי ואל תציע מחיר. אל תהפוך "בערך" למספר מדויק. ליד כל פריט, חותמת הזמן שבה הוא נאמר.
6. בדיקה: הכל נאמר בתמליל
עבור על מה שכתבת למעלה, פריט אחרי פריט. לכל פריט (החלטה, משימה, מספר, שם, מועד) כתוב: הפריט, חותמת הזמן, ציטוט מדויק מהתמליל שעליו הוא נשען, ו"נתמך" או "לא נתמך".
אחר כך רשימה נפרדת: מספרים, שמות ומונחים שנראים כמו טעות תמלול, כדי שאבדוק אותם מול ההקלטה.
אל תשנה את מה שכתבת ואל תוסיף פריטים.

דוגמה מלאה: אלון שיפוצים (עסק בדוי)

כל מה שבדוגמה בדוי: העסק, הלקוחה, השמות, המספרים והפרטים.

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

הוא התקין את הערכה ביום שישי בבוקר. ביום ראשון התקשרה רונית, לקוחה שקיבלה את המספר שלו מהשכנה. בתחילת השיחה הוא אמר: "אני מקליט את השיחה כדי לא לפספס פרטים בהצעה, זה בסדר מבחינתך?". רונית הסכימה.

בערב הוא העביר את ההקלטה מהטלפון לתיקייה recordings והריץ:

הפקודה שאלון הריץ (Windows)
py transcribe.py recordings\ronit-bathroom.m4a --words "אלון, רונית, קרמיקה, אינטרפוץ, ספייסר"

אחרי כמה דקות היה לו קובץ ronit-bathroom.txt. קטע ממנו:

להעתקה
[00:00:00] שלום, מדבר אלון, אני מקליט את השיחה כדי לא לפספס פרטים בהצעה, זה בסדר מבחינתך?
[00:00:05] כן, בטח. קיבלתי את המספר שלך מדנה, השכנה מהקומה השלישית.
[00:00:11] מעולה. אז מה רוצים לעשות?
[00:00:13] שיפוץ של חדר האמבטיה. להוריד את האמבטיה ולשים מקלחון, להחליף את כל הקרמיקה, ואסלה תלויה.
[00:00:24] כמה גדול החדר, בערך?
[00:00:27] משהו כמו שניים על שניים וחצי. אני יכולה לשלוח לך תמונות.
[00:01:02] ומתי הייתם רוצים להתחיל?
[00:01:05] בתחילת נובמבר, ושזה ייגמר לפני שההורים שלי מגיעים באמצע דצמבר.
[00:01:40] יש לנו תקציב של בערך עשרים אלף, זה ריאלי?
[00:01:46] אני צריך לראות את החדר. אני יכול לבוא ביום שלישי בבוקר?
[00:01:51] יום שלישי בשמונה וחצי מתאים. רחוב הרימון 12, דירה 7.

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

השיחה לא הייתה רגישה במיוחד, אבל היו בה כתובת וטלפון. לפני שהדביק את התמליל ב-ChatGPT, הוא החליף את הכתובת ב-"[כתובת]" ואת הטלפון ב-"[טלפון]". את שניהם הוא הכניס לגיליון בעצמו. אחר כך הריץ את פרומפט 5 וקיבל:

להעתקה
לקוח: רונית, רמת גן, [טלפון]
איך הגיע: המלצה של דנה, שכנה (00:00:05)
מה ביקש:
- פירוק אמבטיה והתקנת מקלחון (00:00:13)
- החלפת כל הקרמיקה בחדר האמבטיה, החדר בערך 2 על 2.5 מטר (00:00:13, 00:00:27)
- התקנת אסלה תלויה (00:00:13)
מועדים שביקש: הלקוחה ביקשה: להתחיל בתחילת נובמבר ולסיים לפני אמצע דצמבר (00:01:05)
תקציב או מחיר שהוזכר: "בערך עשרים אלף" (00:01:40)
שאלות שהלקוח שאל: האם התקציב ריאלי (00:01:40)
מה לא ברור ושווה לברר: מידות מדויקות של החדר, סוג הקרמיקה, מה קורה עם הכיור והארון. נקבעה פגישה באתר: יום שלישי, 8:30 (00:01:51)

את הסיכום הזה אלון הדביק כמו שהוא בפרומפט הראשי של הערכה מסיכום שיחה להצעת מחיר, יחד עם המחירון שלו. ההצעה יצאה עם המחירים שלו, ושורת המקלחון נשארה [להשלים: מידות] עד הביקור ביום שלישי.

ופרומפט 4 נתן לו שורה לגיליון הלידים:

להעתקה
11/10/2026	רונית		[טלפון]		המלצה של שכנה	שיפוץ אמבטיה: מקלחון, קרמיקה, אסלה תלויה		מידות, סוג קרמיקה	חדש	13/10/2026	תקציב בערך 20 אלף; לסיים לפני אמצע דצמבר; ביקור ביום שלישי 8:30

שימו לב לשלושה דברים: "בערך עשרים אלף" נשאר "בערך", ולא הפך לסכום בהצעה. המועד נרשם כבקשה של הלקוחה, לא כהתחייבות של אלון. וכל פריט קיבל חותמת זמן, כך שכשרונית תשאל "אמרתי אסלה תלויה?", אלון ימצא את זה בשנייה.

אחרי שההצעה נשלחה ונסגרה, אלון מוחק את ההקלטה. התמליל נשאר בתיקייה של הלקוחה, ורק הוא רואה אותה.


צ'קליסט לעמוד אחד

  • החלטתם מה הולך לדרך 1 (בענן) ומה רק לדרך 2 (על המחשב)
  • בתחילת כל הקלטה אתם אומרים שמקליטים ולמה, ובדקתם עם עורך דין מה חל עליכם
  • py --version או python3 --version מראה 3.10 ומעלה
  • faster-whisper הותקן עם "av<19"
  • transcribe.py שמור בתיקייה, בקידוד UTF-8
  • הקלטה של 5 דקות תומללה, ואתם יודעים כמה זמן זה לקח במחשב שלכם
  • שמות ומונחים חוזרים נכנסים ל---words
  • כל תמליל נבדק מול ההקלטה: שמות, מספרים, מונחים
  • לפני הדבקה בכלי AI בענן, פרטים מזהים נמחקים משיחות רגישות
  • כל סיכום עבר את פרומפט 6
  • החלטתם כמה זמן שומרים הקלטות ותמלילים, ומי רואה אותם

ומה הלאה

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


הבהרה

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

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

תמלול אוטומטי יכול לטעות, במיוחד בשמות, במספרים, במונחים מקצועיים ובקטעים עם רעש. גם סיכומים שכלי AI כותב יכולים לטעות או להשמיט. בדקו שמות, מספרים וכל דבר חשוב מול ההקלטה לפני שאתם מסתמכים עליהם.

המודל של ivrit.ai, הספרייה faster-whisper וכל שאר הכלים הם קוד פתוח או שירותים של צד שלישי. הם עשויים להשתנות, להתעדכן או להפסיק לעבוד כמו שתואר כאן, והשימוש בהם כפוף לרישיונות ולתנאים שלהם. תנאי שימוש ופרטיות של כלי AI בענן משתנים, ולכן כדאי לבדוק אותם במקור.