דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
כ

כבוד הרב

@כבוד הרב
אודות
פוסטים
298
נושאים
46
שיתופים
0
קבוצות
0
עוקבים
5
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • להורדה | תוכנה לתמלול הקלטות/סרטונים בעברית! לטקסט בחינם על המחשב באופליין
    כ כבוד הרב

    OpenAi הוציאו ספרייה בקוד פתוח לתמלול הקלטות וסרטונים חינם בעשרות שפות ובינהם עברית!.
    התמלול עם הספרייה שלהם הוא מההכי איכותים שקימים כיום בשוק, הוא אמן על 680,000 שעות! של דיבור.
    במדריך זה אני יביא תוכנה שמתמללת הקלטות עם אחד המודלים שהוכן לזה, שלא מצריך התקנות למינהם וסיבוכים מיותרים.
    שימו לב שזה צריך מחשב סטנדרטי ומעלה. וכן שזה להוריד למחשב קובץ ששוקל בערך 3 GB.

    שימו לב מצאתי תוכנה עם ממשק גרפי בעברית בפוסט הזה

    להתקנה יש לפעול עפ"י השלבים הבאים:

    1. הורידו את תוכנית ההתקנה מכאן.

    2. יש לחלץ את התוכנה, הסיסמה היא: "מתמחים"

    3. להפעיל את קובץ ההתקנה וללחוץ על התקן.

    הקבצים ישמרו בתקיית "Program Files" עדיף שלא לשנות נתיב כי אז הקיצורים בשלח אל לא יעבדו.
    שימו לב! מכיוון שזה שומר את התקייה של התוכנה בכונן C, יש לתת הרשאות מנהל כשיתבקש.

    ביצוע התמלול:

    1. יש ללחוץ על לחצן ימני בעכבר על הקובץ שאתם רוצים לתמלל ולבחור ב "שלח אל"-"תמלול בעברית"
      אם אתם רוצים לתמלל הקלטה באנגלית יש לבחור ב-"שלח אל"-"Transcript in English"
      יקח כמה דקות שבסופם תקבלו את התמלול של ההקלטה/סרטון שהכנסתם, והחלון שנפתח ישמיע צליל ויסגר.
      התמלול ישמר בקובץ טקסט בתקייה שבה נמצא הקובץ שתומלל, ושמו יהיה כשם הקובץ שתומלל.

    לאלו שיש להם כרטיס מסך של NVIDIA צריך להתקין CUDA. כדי שהתמלול יעבוד.
    פרטים בספוילר:

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

    1. להוריד את התוכנה מכאן ולהתקין אותה על המחשב.
    2. להוריד את הקובץ הזה.
    3. לחלץ את הקובץ שהורדנו (בשלב 2) ולשים אותו בנתיב הבא: "toolkit\cuda\bin"

    אם עדיין יש לכם בעיות עם זה אפשר תמיד להגיב בשרשור.
    מקורות לעיון בבעיות כאן
    קרדיט-@י-פל

    תוכנות ואתרים נוספים:

    1. התוכנה הזאת רק עם ממשק חצי גרפי עפ"י מה ש-@מישהו12 כתב כאן.
    2. תוכנה עם ממשק גרפי אמיתי ש-@תודה-לבורא-עולם פרסם עליה מדריך כאן.
    3. תוכנה ש-@מישהו12 הביא כאן (לא ראיתי מישהו שבדק אותה בפועל).
    4. אתר שאני כתבתי עליו מדריך כאן
    5. האתר הזה בעבר ראיתי שיש לו תוצאות די טובות (כרגע זה נראה שהוא עושה בעיות)

    מקור:
    https://github.com/Purfview/whisper-standalone-win/tree/main
    פרטים נוספים למפתחים בפוסט הזה

    עזרה הדדית - מחשבים וטכנולוגיה

  • להורדה | תוכנה עם ממשק עברית! לתמלול הקלטות וסרטונים אופליין חינם!!!
    כ כבוד הרב

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

    הוראות הורדה והתקנה:

    1. יש להוריד את התוכנה מהקישור הזה
      או בגרסה הניידת כאן
      ואז להתקין את התוכנה.

    תרגום התוכנה לעברית:

    1. יש להוריד את הקובץ הזה he-IL.xml (לחצן ימני על הקישור ואז שמירת קישור בשם)
      ולהכניס אותו לתקיית "Languages" של התוכנה שהתקנו.
    2. לפתוח את התוכנה ואז לבחור: Options ואז: Choose laghage... [English] ואז לבחור ב- עברית וללחוץ OK
      דוגמה בספוילר:

    1.png 2.png 3.png

    הורדת המודל:

    1. לבחור ב- "וידאו" ואז ב- אודיו לטקסט (Whispir)... ואז להקיש כן בהורד את FFmpeg
    2. לאחר שהורדנו יפתח עוד חלון שמציע להוריד את Purfview's Faster-Whisper ללחוץ על כן
    3. לאחר מכן יש ללחוץ על השלוש נקודות שלייד התיבה של בחר דגם ולבחור ב- large-v2 (2.9 GB) וללחוץ על הורד

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

    1. לאחר שההורדה הסתיימה יש לבחור ב- פתח את תקיית המודלים ולהיכנס לתקייה "faster-whisper-large-v2"
    2. להוריד את הקובץ הזה vocabulary.zip ולחלץ אותו.
    3. להחליף בתקייה "faster-whisper-large-v2" את הקובץ "vocabulary" לקובץ שחילצנו.

    ביצוע התמלול:

    1. נחזור לחלון של התוכנה בחלון הפתוח בבחר שפה נבחר ב- Hebrew
    2. נלחץ על הוסף ונבחר את הקובץ שאנחנו רוצים לתמלל.
      שימו לב! בחלון שנפתח לא יוצגו קובצי שמע את אם כן תבחרו בפינה השמאלית למטה של הסייר קבצים שנפתח ב-קובצי שמע
    3. לאחר שבחרנו קובץ נלחץ על ליצור והקובץ יתומלל.

    קובץ התמלול ישמר ברירת מחדל בתקייה שממנה נלקח הקובץ שעבר תמלול.

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

    עזרה הדדית - מחשבים וטכנולוגיה

  • המלצה | 🚀 [פרויקט מהפכני] העברת קבצים למחשב ללא אינטרנט דרך שיחה קולית (טלפון כשר!) - הקוד המלא
    כ כבוד הרב

    שלום לכולם!

    אני רוצה לשתף אתכם בפרויקט מחקר ופיתוח שעבדתי עליו בתקופה האחרונה (הקוד נבנה ע"י gemini-3-pro-preview), שמוכיח שהבלתי אפשרי - אפשרי.
    הצלחתי לפתח מודם אקוסטי (Data-over-Sound) שמאפשר להעביר קבצים (טקסט, תמונות, מסמכים) לתוך מחשב מנותק רשת (Offline/Air-Gapped) באמצעות שיחה קולית פשוטה מטלפון כשר! (דרך מערכת טלפונית בימות המשיח וכד')

    זה נשמע כמו מדע בדיוני או חזרה לשנות ה-80, אבל עם האלגוריתמים הנכונים, זה עובד בצורה מדהימה ב-2026.

    💡 למה זה טוב?

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

    🛠️ מה יש מתחת למכסה המנוע? ("פרוטוקול טיטניום")

    כדי להתגבר על האיכות הגרועה של קווי הטלפון (דחיסת GSM/G.729) ורעשי הרקע, בניתי פרוטוקול שידור סופר-קשוח שכולל:

    1. Triple Voting (הצבעת רוב): כל בייט נשלח 3 פעמים. אם רעש הורס אחד מהם, המחשב לוקח את הרוב הקובע.
    2. Reed-Solomon ECC: תיקון שגיאות מתמטי (כמו ב-QR Code) שמשחזר מידע שנמחק.
    3. Interleaving (ערבוב): פיזור הביטים כך שקטיעה רגעית בקו לא תמחק אות שלמה, אלא רק "שריטות" קטנות שקל לתקן.
    4. CRC32: בדיקת תקינות סופית - אם הקובץ לא שוחזר ב-100% דיוק, המערכת תודיע.

    🎯 המטרה שלי בפרסום

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

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

    שימו לב זו גרסה ראשונית לצורך ניסוים בלבד! מומלץ לנסות בהתחלה להמיר קובץ טקסט בעל מילים בודדות בלבד!

    📢 הוראות שימוש (חובה לקרוא!)

    הפיזיקה של הסאונד היא עדינה. כדי שזה יעבוד "אחד לאחד", הקפידו על הכללים הבאים:

    1. ווליום (הכי חשוב!):

      • אין להגביר את הטלפון למקסימום! זה יוצר עיוות (Distortion) שהורס את האות הדיגיטלי.
      • יש לכוון לעוצמה של כ-60%-70%.
      • בתוכנה יש "מד עוצמה" – כוונו כך שהפס יהיה ירוק. אם הוא אדום, זה לא יעבוד.
    2. חיבור AUX (מומלץ):

      • הדרך הכי נקייה היא לחבר כבל AUX בין הטלפון לכניסת המיקרופון (Line-In) במחשב.
      • שים לב: במחשבים ניידים עם שקע בודד (Combo Jack), כבל AUX רגיל לא יעבוד כמיקרופון! צריך כרטיס קול USB פשוט (עולה כמה שקלים) או מפצל ייעודי.
    3. שימוש ברמקול (אקוסטי):

      • אפשרי בהחלט!
      • יש להיות בחדר שקט יחסית.
      • יש להצמיד את רמקול הטלפון למיקרופון של המחשב.

    💻 המדריך הטכני למפתח

    כדי להריץ את זה, תצטרכו Python מותקן על המחשב.

    1. התקנת הספריות הדרושות:
    פתחו CMD והריצו:

    pip install numpy scipy sounddevice soundfile reedsolo pyinstaller
    

    2. הקוד המלא:
    העתיקו את הקוד הבא ושמרו אותו בקובץ בשם main.py. הקוד כולל ממשק גרפי (GUI), מקודד (Encoder) ומפענח (Decoder).

    import sys
    import os
    import struct
    import threading
    import base64
    import time
    import queue
    import zlib
    import datetime
    import numpy as np
    import sounddevice as sd
    import soundfile as sf
    from scipy.io import wavfile
    from scipy import signal as sig
    from reedsolo import RSCodec, ReedSolomonError
    import tkinter as tk
    from tkinter import filedialog, messagebox, ttk
    
    # === הגדרות מודם: "Titanium Edition" ===
    SAMPLE_RATE = 8000
    BAUD_RATE = 40        # מהירות יציבה
    FREQ_MARK = 900       # תדרים אופטימליים לקו טלפון
    FREQ_SPACE = 1700
    RS_ECC_SYMBOLS = 20   # תיקון שגיאות בסיסי (השילוש עושה את רוב העבודה)
    INTERLEAVE_STEP = 40  # פיזור רחב מאוד
    
    # סנכרון
    SYNC_DURATION = 0.8
    t_sync = np.arange(int(SAMPLE_RATE * SYNC_DURATION)) / SAMPLE_RATE
    SYNC_SIGNAL = sig.chirp(t_sync, f0=FREQ_MARK, f1=FREQ_SPACE, t1=SYNC_DURATION, method='linear')
    
    # Magic Byte
    MAGIC_BITS = "01000010" # 'B'
    
    TEXT_EXTENSIONS = ['.txt', '.csv', '.json', '.xml', '.html', '.php', '.py', '.js', '.ini', '.log']
    
    # === לוגים ===
    def write_log(msg):
        ts = datetime.datetime.now().strftime("%H:%M:%S")
        print(f"[{ts}] {msg}")
        try:
            with open("LOG_TITANIUM.txt", "a", encoding="utf-8") as f: f.write(f"[{ts}] {msg}\n")
        except: pass
    
    # === לוגיקה מתמטית ===
    def interleave_bits(bits):
        n = len(bits)
        padding = (INTERLEAVE_STEP - (n % INTERLEAVE_STEP)) % INTERLEAVE_STEP
        bits_padded = bits + [0] * padding
        interleaved = [0] * len(bits_padded)
        rows = len(bits_padded) // INTERLEAVE_STEP
        for i in range(len(bits_padded)):
            row = i // INTERLEAVE_STEP
            col = i % INTERLEAVE_STEP
            new_idx = col * rows + row
            interleaved[new_idx] = bits_padded[i]
        return interleaved, padding
    
    def deinterleave_bits(bits, padding):
        n = len(bits)
        rows = n // INTERLEAVE_STEP
        if rows == 0: return bits
        deinterleaved = [0] * n
        for i in range(n):
            col = i // rows
            row = i % rows
            original_idx = row * INTERLEAVE_STEP + col
            if original_idx < n:
                deinterleaved[original_idx] = bits[i]
        if padding > 0: return deinterleaved[:-padding]
        return deinterleaved
    
    def text_to_bits(data_bytes):
        bits = []
        for byte in data_bytes:
            for i in range(7, -1, -1): bits.append((byte >> i) & 1)
        return bits
    
    def bits_to_bytes(bits):
        chars = []
        for b in range(0, len(bits), 8):
            byte = bits[b:b+8]
            if len(byte) < 8: break
            chars.append(int(''.join(map(str, byte)), 2))
        return bytes(chars)
    
    def vote_byte(b1, b2, b3):
        if b1 == b2 or b1 == b3: return b1
        if b2 == b3: return b2
        return b1 # ברירת מחדל
    
    # === Encoder ===
    def generate_signal(filename, file_content, output_wav):
        try:
            write_log(f"מקודד: {filename}")
            ext = os.path.splitext(filename)[1].lower()
            is_text = ext in TEXT_EXTENSIONS
            fname_bytes = os.path.basename(filename).encode('utf-8')
            
            if is_text:
                content_bytes = file_content
                type_flag = 1 
            else:
                content_bytes = base64.b64encode(file_content)
                type_flag = 0 
                
            if len(fname_bytes) > 200: fname_bytes = fname_bytes[:200]
            
            # 1. אריזה + CRC
            crc = zlib.crc32(content_bytes) & 0xffffffff
            packet = struct.pack('B', len(fname_bytes)) + fname_bytes + struct.pack('B', type_flag) + content_bytes + struct.pack('>I', crc)
            
            # 2. קידוד RS
            rsc = RSCodec(RS_ECC_SYMBOLS)
            encoded_data = rsc.encode(packet)
            
            # 3. שילוש הנתונים (Triple Redundancy) על הכל!
            # זה השדרוג הגדול. כל בייט הופך ל-3.
            tripled_data = bytearray()
            for b in encoded_data:
                tripled_data.extend([b, b, b])
                
            # 4. המרה לביטים
            raw_bits = text_to_bits(tripled_data)
            
            # 5. ערבוב (Interleaving)
            # זה מפזר את השילוש, כך שרעש לא ימחק את כל ה-3 עותקים
            shuffled_bits, padding = interleave_bits(raw_bits)
            
            # 6. כותרת: [Magic] [Length] [Padding]
            magic_bits = text_to_bits(bytes([0x42])) # 'B'
            
            # האורך הוא של הביטים המעורבבים
            header_info = struct.pack('>IB', len(shuffled_bits), padding)
            header_bits = text_to_bits(header_info)
            header_bits_tripled = header_bits * 3 
            
            final_stream_bits = magic_bits + header_bits_tripled + shuffled_bits
            
            # 7. יצירת אודיו
            samples_per_bit = int(SAMPLE_RATE / BAUD_RATE)
            t_wake = np.arange(int(SAMPLE_RATE * 3.0)) / SAMPLE_RATE
            wake = np.sin(2 * np.pi * FREQ_SPACE * t_wake)
            
            t_bit = np.arange(samples_per_bit) / SAMPLE_RATE
            phase = 0
            waves = []
            
            for bit in final_stream_bits:
                freq = FREQ_MARK if bit == 1 else FREQ_SPACE
                w = np.sin(2 * np.pi * freq * t_bit + phase)
                waves.append(w)
                phase += 2 * np.pi * freq * (samples_per_bit / SAMPLE_RATE)
                phase %= 2 * np.pi
                
            final_audio = np.concatenate([wake, SYNC_SIGNAL, np.concatenate(waves)])
            final_audio = sig.lfilter([1.0, -0.8], [1.0], final_audio)
            m = np.max(np.abs(final_audio))
            final_audio = (final_audio / m * 32767).astype(np.int16)
            
            wavfile.write(output_wav, SAMPLE_RATE, final_audio)
            return True, "קובץ טיטניום נוצר! (Triple Payload)"
            
        except Exception as e: return False, str(e)
    
    # === Decoder ===
    def decode_signal(input_wav, output_folder):
        try:
            with open("LOG_TITANIUM.txt", "w", encoding="utf-8") as f: f.write("=== LOG START ===\n")
            
            rate, data = wavfile.read(input_wav)
            if len(data.shape) > 1: data = data[:, 0]
            
            sos = sig.butter(6, [600, 2000], btype='bandpass', fs=SAMPLE_RATE, output='sos')
            clean = sig.sosfilt(sos, data.astype(float))
            
            mx = np.max(np.abs(clean))
            if mx < 0.01: return False, "שקט מדי"
            clean /= mx
            
            # 1. סנכרון
            corr = sig.correlate(clean, SYNC_SIGNAL, mode='valid')
            peak = np.argmax(np.abs(corr))
            if np.abs(corr[peak]) < 3: return False, "לא נמצא אות סנכרון"
            
            approx_start = peak + len(SYNC_SIGNAL)
            relevant = clean[approx_start:]
            spb = int(SAMPLE_RATE / BAUD_RATE)
            num_bits = len(relevant) // spb
            
            t = np.arange(spb) / SAMPLE_RATE
            ref_m = np.exp(-2j * np.pi * FREQ_MARK * t)
            ref_s = np.exp(-2j * np.pi * FREQ_SPACE * t)
            
            bits_str = ""
            for i in range(num_bits):
                chunk = relevant[i*spb : (i+1)*spb]
                pm = np.abs(np.dot(chunk, ref_m))**2
                ps = np.abs(np.dot(chunk, ref_s))**2
                bits_str += "1" if pm > ps else "0"
                
            # 2. Magic Byte
            magic_idx = bits_str.find(MAGIC_BITS)
            if magic_idx == -1:
                inv = bits_str.replace('0','x').replace('1','0').replace('x','1')
                magic_idx = inv.find(MAGIC_BITS)
                if magic_idx != -1:
                    bits_str = inv
                    write_log("היפוך פאזה זוהה")
                else: return False, "Magic Byte לא נמצא"
            
            data_start = magic_idx + 8
            
            # 3. Header Voting
            if len(bits_str) < data_start + 120: return False, "קצר מדי"
            
            h_part = bits_str[data_start : data_start + 120]
            h_chunks = [h_part[0:40], h_part[40:80], h_part[80:120]]
            
            if h_chunks[0] == h_chunks[1] or h_chunks[0] == h_chunks[2]: final_h = h_chunks[0]
            elif h_chunks[1] == h_chunks[2]: final_h = h_chunks[1]
            else: final_h = h_chunks[0]
            
            try:
                h_bytes = bits_to_bytes([int(x) for x in final_h])
                data_len, padding = struct.unpack('>IB', h_bytes)
                write_log(f"אורך מעורבב: {data_len}, ריפוד: {padding}")
            except: return False, "שגיאת כותרת"
            
            if data_len > 10000000 or data_len == 0: return False, f"אורך לא הגיוני {data_len}"
            
            # 4. חילוץ וסידור מחדש (De-Interleave)
            payload_idx = data_start + 120
            if len(bits_str) < payload_idx + data_len:
                bits_str = bits_str.ljust(payload_idx + data_len, '0')
                
            shuffled = [int(b) for b in bits_str[payload_idx : payload_idx + data_len]]
            raw_bits = deinterleave_bits(shuffled, padding)
            raw_bytes = bits_to_bytes(raw_bits)
            
            # 5. הצבעת רוב על התוכן (Payload Voting) - החלק החדש!
            # יש לנו כעת רצף בייטים שכל אחד מהם חוזר 3 פעמים
            # [A, A, A, B, B, B, ...]
            
            reconstructed_payload = bytearray()
            fixed_count = 0
            
            for i in range(0, len(raw_bytes), 3):
                chunk = raw_bytes[i : i+3]
                if len(chunk) < 3: break
                
                b1, b2, b3 = chunk[0], chunk[1], chunk[2]
                
                if b1 == b2 and b2 == b3:
                    # הסכמה מלאה
                    res = b1
                else:
                    # נדרש תיקון
                    res = vote_byte(b1, b2, b3)
                    fixed_count += 1
                    
                reconstructed_payload.append(res)
                
            write_log(f"תוקנו באמצעות Voting: {fixed_count} בייטים")
            
            # 6. RS Decode (שכבה שנייה)
            try:
                rsc = RSCodec(RS_ECC_SYMBOLS)
                decoded_packet = rsc.decode(bytes(reconstructed_payload))[0]
                
                # 7. פירוק
                ptr = 0
                name_len = decoded_packet[ptr]; ptr+=1
                filename = decoded_packet[ptr:ptr+name_len].decode('utf-8', errors='ignore'); ptr+=name_len
                file_type = decoded_packet[ptr]; ptr+=1
                content = decoded_packet[ptr:-4]
                rec_crc = struct.unpack('>I', decoded_packet[-4:])[0]
                
                calc_crc = zlib.crc32(content) & 0xffffffff
                if calc_crc != rec_crc:
                    write_log(f"CRC שגוי: {rec_crc} != {calc_crc}")
                    # אם ה-RS עבר, אולי נשמור בכל זאת עם אזהרה?
                    # לא, נחמיר
                    return False, "שגיאת CRC (תוכן לא תואם)"
                    
                final_data = content
                if file_type == 0: 
                    try: final_data = base64.b64decode(content)
                    except: pass
                    
                path = os.path.join(output_folder, filename)
                with open(path, 'wb') as f: f.write(final_data)
                
                return True, f"הצלחה! {filename}"
                
            except ReedSolomonError:
                write_log("RS נכשל")
                return False, "תיקון שגיאות סופי נכשל"
                
        except Exception as e: return False, str(e)
    
    # === GUI ===
    class ModemApp:
        def __init__(self, root):
            self.root = root
            self.root.title("Acoustic Modem - TITANIUM EDITION")
            self.root.geometry("600x700")
            self.audio_buffer = [] 
            self.is_rec = False
            
            tabs = ttk.Notebook(root)
            t1 = ttk.Frame(tabs); tabs.add(t1, text="Encode")
            t2 = ttk.Frame(tabs); tabs.add(t2, text="Decode")
            tabs.pack(fill="both", expand=True)
            
            tk.Button(t1, text="צור קובץ (Titanium - Full Triple)", command=self.do_enc, bg="#007bff", fg="white", font=("Arial", 14)).pack(pady=50)
            self.lbl_enc = tk.Label(t1, text="", fg="green")
            self.lbl_enc.pack()
            
            self.canvas_vol = tk.Canvas(t2, width=400, height=30, bg="black")
            self.canvas_vol.pack(pady=10)
            self.vol_bar = self.canvas_vol.create_rectangle(0,0,0,30, fill="green")
            
            self.dev_combo = ttk.Combobox(t2, values=self.get_devs(), width=50)
            if self.get_devs(): self.dev_combo.current(0)
            self.dev_combo.pack(pady=10)
            
            self.btn_rec = tk.Button(t2, text="🔴 התחל הקלטה", command=self.toggle_rec, bg="#dc3545", fg="white", font=("Arial", 14))
            self.btn_rec.pack(pady=20)
            
            self.lbl_status = tk.Label(t2, text="מוכן", font=("Arial", 14, "bold"))
            self.lbl_status.pack()
            
            tk.Button(t2, text="טען קובץ WAV", command=self.load_file).pack(pady=20)
            tk.Button(t2, text="פתח לוג", command=lambda: os.startfile("LOG_TITANIUM.txt") if os.path.exists("LOG_TITANIUM.txt") else None).pack()
    
        def get_devs(self):
            try: return [f"{i}: {d['name']}" for i,d in enumerate(sd.query_devices()) if d['max_input_channels']>0]
            except: return []
    
        def do_enc(self):
            fn = filedialog.askopenfilename()
            if not fn: return
            sn = filedialog.asksaveasfilename(defaultextension=".wav", filetypes=[("WAV","*.wav")])
            if not sn: return
            try:
                with open(fn,'rb') as f: c=f.read()
                ok, msg = generate_signal(fn, c, sn)
                if ok: messagebox.showinfo("Success", msg)
                else: messagebox.showerror("Error", msg)
            except Exception as e: messagebox.showerror("Error", str(e))
    
        def toggle_rec(self):
            if not self.is_rec:
                self.is_rec = True
                self.btn_rec.config(text="⏹️ סיים ופענח", bg="#333")
                self.audio_buffer = []
                self.lbl_status.config(text="מקליט...", fg="red")
                threading.Thread(target=self.rec_thread).start()
            else:
                self.is_rec = False
                self.btn_rec.config(text="⏳ מעבד...", state="disabled")
                self.lbl_status.config(text="מפענח (Voting & RS)...", fg="blue")
    
        def update_vol(self, indata):
            peak = np.max(np.abs(indata)) / 32768.0
            w = min(400, int(peak * 400))
            c = "green" if w < 300 else "red"
            self.canvas_vol.coords(self.vol_bar, 0, 0, w, 30)
            self.canvas_vol.itemconfig(self.vol_bar, fill=c)
    
        def rec_thread(self):
            idx = int(self.dev_combo.get().split(":")[0]) if self.dev_combo.get() else None
            def cb(indata, f, t, s):
                if self.is_rec:
                    self.audio_buffer.append(indata.copy())
                    try: self.root.after(10, lambda: self.update_vol(indata))
                    except: pass
            try:
                with sd.InputStream(device=idx, samplerate=44100, channels=1, dtype='int16', callback=cb):
                    while self.is_rec: sd.sleep(100)
                self.process_audio()
            except Exception as e:
                self.is_rec = False
                messagebox.showerror("Error", str(e))
                self.root.after(0, lambda: self.btn_rec.config(text="🔴 התחל הקלטה", bg="#dc3545", state="normal"))
    
        def process_audio(self):
            if not self.audio_buffer: return
            full = np.concatenate(self.audio_buffer, axis=0)
            sf.write("DEBUG_INPUT.wav", full, 44100)
            num = int(len(full) * SAMPLE_RATE / 44100)
            data = sig.resample(full, num).astype(np.int16)
            tmp = "temp_dec.wav"
            wavfile.write(tmp, SAMPLE_RATE, data)
            dl = "Recovered_Files"
            if not os.path.exists(dl): os.makedirs(dl)
            ok, msg = decode_signal(tmp, dl)
            self.root.after(0, lambda: self.finish(ok, msg))
    
        def load_file(self):
            fn = filedialog.askopenfilename()
            if not fn: return
            self.lbl_status.config(text="מעבד...", fg="blue")
            dl = "Recovered_Files"
            if not os.path.exists(dl): os.makedirs(dl)
            ok, msg = decode_signal(fn, dl)
            self.finish(ok, msg)
    
        def finish(self, ok, msg):
            self.is_rec = False
            self.btn_rec.config(text="🔴 התחל הקלטה", bg="#dc3545", state="normal")
            self.lbl_status.config(text="הסתיים", fg="black")
            if ok: messagebox.showinfo("Success", msg)
            else: messagebox.showerror("Failed", msg)
    
    if __name__ == "__main__":
        root = tk.Tk()
        app = ModemApp(root)
        root.mainloop()
    

    3. יצירת קובץ EXE (קומפילציה):
    כדי להפוך את זה לתוכנה ניידת ללא צורך בהתקנת פייתון הריצו את הפקודה הבאה בתקיה שבה נמצא הקוד למעלה:

    pyinstaller --onefile --noconsole --name "AcousticModem" main.py
    

    הקובץ המוכן יחכה לכם בתיקייה dist.


    בהצלחה! 🚀

    עזרה הדדית - מחשבים וטכנולוגיה

  • מדריך | תמלול שמע לטקסט בעברית חינם
    כ כבוד הרב

    יש גם מדריך שכתבתי לשימוש בתמלול באופליין דרך שורת הפקודה כאן

    1. נכנסים לקישור הזה
    2. מקליטים הקלטה חדשה דרך המיקרופון או מעלים קובץ מהמחשב או מעלים מקישור לקובץ שמע
    3. לאחר שהקובץ עלה נכנסים להגדרות
      c0d9cfb1-2888-4c2d-9778-87c2130cc984-1.png
    4. בוחרים בדברים הבאים לפי הסדר שכתוב בתמונה
      2.png
    5. לאחר מכן לוחצים על הלחצן הבא:
      3.png
      בסיום התמלול תוכלו לשמור את התוצאה או בקובץ בפורמט טקסט ללא חתימת הזמן של כל משפט
      2db057b5-980d-4a72-805b-b1e4fc8bf5fc-image.png
      או בפורמט JSON כולל חתימת זמן על כל משפט
      5fd1145e-8a47-41d4-8672-1139047a968d-image.png

    למפתחים:
    יש את הפוסט שלי כאן

    עזרה הדדית - מחשבים וטכנולוגיה

  • המלצה | תוסף כרום לצילום מסך כולל צילום של הדף המלא עד סופו ועריכה והורדה כ-PDF או תמונה.
    כ כבוד הרב

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

    1. בחירה עם העכבר את הקטע שרוצים לצלם.
    2. צילום של הדף המלא מתחילתו ועד סופו (התוסף גולל את הדף אוטמטית).
    3. צילום של כל הקטע הנראה בדף.
    4. צילום כל המסך כולו.
    5. צילום של חלונות אחרים במחשב (לא רק דפדפן).

    זה הקישור להתקנה בכרום

    צילומי מסך:
    ade16a76-c847-41fb-849d-8edad26ce8ee-image.png fa6063ec-7e6d-473c-aa7f-86922d2df5b0-image.png e102e6b1-ab7e-4632-9c0e-4659ca2256e9-image.png b4cb341f-a533-4e21-932b-b3f5855eabe8-image.png0e4a452f-2044-413e-b6e7-3cb6abac377b-image.png

    עזרה הדדית - מחשבים וטכנולוגיה

  • להורדה | אפליקציה לשיחות SIP בעברית שעובדת חלק גם במכשירים חלשים (שיאומי מקשים וכד')
    כ כבוד הרב

    עדכון: מצאתי אפליקציה יותר טובה כאן
    לאחר שבדקתי כמה וכמה אפליקציות ובדקתי אותם על כל מני סוגי פלאפונים אני חושב שהאפליקציה הזאות עובדת בצורה החלקה ביותר עם איכת שמע הטובה ביותר גם בפלאפונים חלשים כמו שיאומי מקשים (Qin1s) וכד'
    תירגמתי את האפליקציה לעברית: טלפון SIP.apk
    באתר שלהם הם נותנים גם את הקוד של האפליקציה למי שרוצה לערוך אותה
    זה האתר שלהם https://www.mizu-voip.com
    מי שמענין אותו זה הקובץ של הקוד: AJVoIP.zip
    אני ישמח לתגובות!

    מערכות IVR - ימות המשיח

  • להורדה | השמעת מיוזיק ווליום של קול חי מיוזיק ישירות מהנגן שמע של ווינדוס.
    כ כבוד הרב

    בעדכון האחרון של הנגן בווינדוס נוספה האפשרות להשמיע שידורים חיים דרך הכתובת url של השידור הישיר.
    כמו כן זה עובד ברוב הנגנים המוכרים.
    הכנתי תקיה שמכילה קיצורי דרך (קובצי m3u8) להשמעת כל סוגי המוזיקה הקיימים במיוזיק ווליום כולל השמות שלהם. קול חי מיוזיק.rar
    התקיה מכילה 105 שידורים (חלקם לא זמינים להשמעה ישירות דרך האתר).
    יש סיכוי שיש כמה שידורים שכבר לא פעילים.
    נגן.png
    סייר קבצים.png

    עזרה הדדית - מחשבים וטכנולוגיה

  • המלצה | קוד פתוח לתמלול הקלטות בעברית חינם!!! כולל תמלול במצב לא מקוון
    כ כבוד הרב

    הייתי בטוח שכולם יודעים על זה אבל חיפשתי בפורום ולא מצאתי על זה מילה
    אז אני חושב שזה יביא תועלת להרבה אנשים אם אני יפרסם את זה

    ל-openai יש ספרייה חופשית בקוד פתוח לתמלול הקלטות בעשרות שפות כולל עברית בחינם!!!
    ממה שאני בדקתי בפועל התמלול שלהם הוא הכי טוב לעברית מאשר שאר החברות
    יש אפשרות להשתמש בזה גם באופן לא מקוון וזה מתאים להתקנה באופן לא מקוון גם על אנדרואיד ומחשבים רגילים
    זה קישור לספרייה הרשמית של openai
    וזה קישור לספרייה שאונ' תל-אביב הוציאו כולל זיהוי דוברים
    וזה קישור למודלים מוכנים לשימוש בקלות
    דוגמאות נוספות כאן

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

    עזרה הדדית - מחשבים וטכנולוגיה

  • שיתוף | הסרת ההודעה "שולחן העבודה שלך משותף כעת עם..." ב-Chrome Remote Desktop
    כ כבוד הרב

    אם רוצים לבטל את ההודעה "שולחן העבודה שלך משותף כעת עם..." ו- "הפסקת שיתוף" ב-Chrome Remote Desktop של גוגל, אפשר לעשות את זה בצורה הבאה:
    להוריד את הקובץ הזה: remoting_core.dll
    ואז להחליף את הקובץ הקיים בקובץ שהורדנו.
    אצלי הוא במיקום הזה: C:\Program Files (x86)\Google\Chrome Remote Desktop\125.0.6422.31
    יתכן ותצטרכו להשבית את Chrome Remote Desktop כדי להחליף את הקובץ

    עזרה הדדית - מחשבים וטכנולוגיה

  • שיתוף | הסרת ההודעה "שולחן העבודה שלך משותף כעת עם..." ב-Chrome Remote Desktop
    כ כבוד הרב

    @צדיק-תמים לקחתי את הקובץ המקורי וערכתי אותו ב- "Resource Hacker"
    ושיניתי את הגודל של החלון ל-0
    מצו"ב צילומסך.
    8e88d591-496f-47a1-b115-55520283a7ff-image.png

    עזרה הדדית - מחשבים וטכנולוגיה

  • המלצה | 🚀 [פרויקט מהפכני] העברת קבצים למחשב ללא אינטרנט דרך שיחה קולית (טלפון כשר!) - הקוד המלא
    כ כבוד הרב

    @CSS-0 ניתן לך ציור
    יש לך עלון שבועי שאתה רוצה לשלוח אותו גם לאנשים שאין להם אינטרנט.
    אתה מעלה את העלון לתוכנה והיא ממירה את זה לקול ואתה מעלה את הקובץ שהיא הביאה לך למערכת שלך בימות המשיח.
    הלקוחות שלך מפעילים את התוכנה במחשב שלהם מחייגים לקו שלך מתחילים להקליט ואז נכנסים לשלוחה שבה מושמע הצליל שהומר מהקובץ ע"י התוכנה והם מקבלים את העלון השבועי שלך ללא אינטרנט או מייל.
    ושוב כמובן שזה לא ברמה הזו עכשיו כי זה לא עומד בקבצים אפי' קצת גדולים אבל זה הכיון

    עזרה הדדית - מחשבים וטכנולוגיה

  • בקשה | מסמך טקסט שמכיל את כל המילים בעברית
    כ כבוד הרב

    @האדם-החושב קבל
    רשימת-המילים-בשפה-העברית-ושכיחות-על-פי-ויקיפדיה.xlsx
    מושגים ביהדות.xlsx
    https://data.gov.il/dataset/corpus
    https://data.gov.il/dataset/labcorpus
    https://www.gov.il/he/departments/news/hebrew_corpus

    כללי - עזרה הדדית

  • המלצה | מיקרופון לפלאפון להקלטת שיעורים
    כ כבוד הרב

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

    שונות וטיפים - סלולרי

  • להורדה | אפליקציה לשיחות SIP בעברית שעובדת חלק גם במכשירים חלשים (שיאומי מקשים וכד')
    כ כבוד הרב

    זה המפרט תכני כפי שמופיע באתר שלהם (מתורגם)
    מבוסס על Mizutech ביצועים גבוהים של לקוח SIP וערימת מדיה
    שיחות VoIP עם QoS אוטומטי תוך שימוש בתקני פרוטוקול SIP (גם שיחות נכנסות וגם יוצאות)
    מתחבר ישירות לשרת ה-VoIP המועדף עליך (כל שרת, softswitch או PBX תואם SIP)
    מערכת הפעלה אנדרואיד: כל הגרסאות מעל 4.0 (מכסות 100% מהשוק הנוכחי)
    תמיכה במכשיר: כל המכשירים עם מעבד ARM של 200 מגה-הרץ לפחות ו-128 מגה-בייט RAM (המכסים 100% מהשוק הנוכחי)
    חיבור: כל הרשתות: WiFi או GPRS נייד, EDGE, 3G, 4G, LTE, 5G (הכל מעל 12 kbit, כולל חיבורי VPN)
    פרוטוקולי תחבורה: UDP, TCP, TLS (SIPS), HTTP, VPN (עם מנהור VoIP והצפנה)
    תמיכת הודעות בדחיפה ישירות לשרת SIP או דרך שער FCM
    מנהור והצפנה מובנים (הן עבור האיתות והן עבור המדיה. אופציונלי)
    מדיה מוצפנת עמית לעמית (ניתן לנטרל)
    Codec שמע: G.711 (PCMU ו-PCMA), OPUS , G.729 , GSM, Speex, iLBC, אודיו HD/פס רחב
    Codec וידאו RTC: H.264, VP8
    כוונון עדין אוטומטי (כולל בחירת codec) בהתאם ליכולות העמיתים שלך, מהירות הרשת והספק המעבד שלך
    AEC (מבטל הד אקוסטי), מסנן Denoise , AGC (בקרת רווח אוטומטי), PLC (הסתרת אובדן מנות), דיכוי שתיקה, מיקוד שמע
    מספר חשבונות
    מספר שיחות בו זמנית
    תצורה מפורטת או פשוטה
    ספר טלפונים של המערכת, פרופילים, סנכרון רשימת אנשי קשר, נוכחות ו-BLF
    מועדפים, חיוג מהיר
    היסטוריית שיחות והקלטת שיחות קוליות
    שילוב שיחות מקורי (אופציונלי)
    תצוגת איזון ודירוג, טיימר שיחות, יומני סטטוס, יומנים מפורטים
    רמקול, השתקה והחזקה
    הודעות מיידיות , SMS, הודעות לא מקוונות, צ'אט קבוצתי
    DTMF (NTE RFC 2833 / RFC 4733, SIP INFO או בתוך פס), USSD
    תמיכה ב-NAT/חומת אש, יציאות SIP ו-RTP יציבות, QoS אוטומטי, פרוטוקול STUN קל ותצורה אוטומטית
    חניית שיחות, שיחה ממתינה, איסוף, 3PCC
    העברת שיחות (נוכחות וללא השגחה) והפניית שיחות
    שיחות ועידה (מערבל RTP מובנה והמרת קידוד בעת הצורך)
    תמיכה בכרטיס חיוג
    כללי תוכנית חיוג
    חיפושי רשומות DNS SRV, תמיכה בשרת גיבוי
    אופטימיזציות של אנדרואיד 11 (רמת API 30+) תוך שמירה על תאימות מלאה לאחור לרמת API 14 (עובד היטב גם בטלפונים עתיקים)
    שיטות נתמכות: הזמנה, ACK, PRACK, ביי, ביטול, עדכון, הודעה, מידע, אפשרויות, מנוי, הודעה, עיין
    RFC's: 2543, 3261, 2976, 3892, 2778, 2779, 3428, 3265, 3515, 3311, 3911, 3581, 3842, 1889, 2307, 325 אחרים, 60, 325, 325, 325, 30, 32, 32, 30, 32, 32, 39 ו-30 RFC וטיוטות
    מנוע איתות ומדיה מבוסס על ערימת SIP/RTP הקניינית של מיזוטק עם צריכת זיכרון נמוכה במיוחד
    לטפל בשיחות נכנסות בזמן שהמכשיר במצב שינה/מינון/לא פעיל (עם הודעות דחיפה או פועל כשירות אם דחיפה אינה זמינה)
    תכונות מותאמות אישית, התאמה אישית, הקצאה אוטומטית, הגדרות מוגדרות מראש, שילוב AdMob, שילוב שרתים אחר (אופציונלי)
    מיתוג והתאמות אישיות עבור ספקי שירותי VoIP, מוקדי טלפון וחברות או אנשים פרטיים הקשורים לטלקום/תקשורת

    מערכות IVR - ימות המשיח

  • מדריך | אשכול מתעדכן לסימניות חכמות בכרום
    כ כבוד הרב

    @I-believe לייבוא של כל הסימניות לפרופיל שלכם יש להוריד את הקובץ הבא: bookmarks_20.6.2025.zip
    ואז יש ללחוץ בדפדפן על השלוש נקודות בצד שמאל למעלה.
    ואז על סימניות ורשימות.
    ואז על ייבוא סימניות והגדרות...
    ואז לבחור בקובץ HTML לסימניות.
    ואז לבחור את הקובץ שחילצתם.
    ויש לכם תקייה שבה יש את כל הסימניות שהובוא עד כה בפוסט הזה.
    a4d37f6c-a927-495e-a9ab-523d323150ae-image.png

    עזרה הדדית - מחשבים וטכנולוגיה

  • להורדה | אפליקציה לשיחות SIP (שיחות לחו"ל וכד') מומלצת.
    כ כבוד הרב

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

    אפליקציות להורדה

  • המלצה | 🚀 [פרויקט מהפכני] העברת קבצים למחשב ללא אינטרנט דרך שיחה קולית (טלפון כשר!) - הקוד המלא
    כ כבוד הרב

    @CSS-0 לא נראה לי שהבנת.
    המנהל יעלה קבצים מומרים לקו לדוגמה הוא יעשה שלוחה 1 לקבלת העלון של שבוע.
    זה יהיה שלוחה להשמעת קבצים והמנהל יעלה לשם את הצליל שהתוכנה הפיקה.
    ואז למשתמש קצה יהיה את התוכנה על המחשב שלו וכל שבוע הוא יתקשר לקו יעשה על רמקול ויקליט את זה בתוכנה והתוכנה תתן לו למחשב את הקובץ של העלון השבועי.
    וכל זה ללא אינטרנט כלל בצד הלקוח קצה חוץ מצד המנהל שהוא יצתרך לעלות את הצליל שהתוכנה הפיקה לשלוחה בימות המשיח

    עזרה הדדית - מחשבים וטכנולוגיה

  • עזרה | עזרה בקוד גוגל סקריפט ליבוא מימות לשיטס
    כ כבוד הרב

    @מיכאלוש הסתדרתי הנה
    תודה רבה

    function importAndSortData() {
      // מציג את הגישה לגיליון הפעיל באפליקציית גיליון האלקטרוני של Google.
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    
      // מגדיר את הקישור לייבוא הנתונים מקובץ JSON.
      var url = "https://call2all.co.il/ym/api/RenderYMGRFile?wath=ivr2:Log/LogQueueAll.2023-06-12.ymgr&convertType=json&notLoadLang=0&token=sscqLkQQg";
    
      // מציג את הקישור בלוג.
      Logger.log("URL: " + url);
    
      // מבצע בקשת HTTP GET לכתובת ה-URL ומקבל את התגובה.
      var response = UrlFetchApp.fetch(url);
      var content = response.getContentText();
    
      // מציג את תוכן התגובה בלוג.
      Logger.log("תוכן התגובה: " + content);
    
      // ממיר את התוכן של התגובה לאובייקט JavaScript.
      var jsonData = JSON.parse(content);
    
      // מציג את הנתונים בלוג.
      Logger.log("נתונים: " + JSON.stringify(jsonData));
    
      var data = jsonData.data;
    
      // מציג את הנתונים לפני המיון בלוג.
      Logger.log("נתונים לפני המיון: " + JSON.stringify(data));
    
      // ממיין את הנתונים לפי ערכי התא השני בכל שורה.
      var sortedData = data.sort(function(a, b) {
        var valueA = a["שעה"];
        var valueB = b["שעה"];
    
        if (typeof valueA === "string") {
          valueA = valueA.toLowerCase();
        }
    
        if (typeof valueB === "string") {
          valueB = valueB.toLowerCase();
        }
    
        if (valueA < valueB) {
          return -1;
        }
    
        if (valueA > valueB) {
          return 1;
        }
    
        return 0;
      });
    
      // מציג את הנתונים לאחר המיון בלוג.
      Logger.log("נתונים ממוינים: " + JSON.stringify(sortedData));
    
      // מנקה את כל התוכן בגיליון.
      sheet.getDataRange().clearContent();
    
      // מכניס את הנתונים הממוינים לגיליון מהתא A1 והלאה.
      if (sortedData.length > 0) {
        var numRows = sortedData.length;
        var numColumns = 8;
        var rangeValues = [];
    
        for (var i = 0; i < numRows; i++) {
          var rowData = [];
    
          rowData.push(sortedData[i]["שלוחה"]);
          rowData.push(sortedData[i]["טלפון"]);
          rowData.push(sortedData[i]["שעה"]);
          rowData.push(sortedData[i]["מצב התור"]);
          rowData.push(sortedData[i]["אורך המתנה למענה"]);
          rowData.push(sortedData[i]["אורך מענה שיחה"]);
          rowData.push(sortedData[i]["מספר שענה"]);
          rowData.push(sortedData[i]["QueueRecordPath"]);
    
          rangeValues.push(rowData);
        }
    
        sheet.getRange(1, 1, numRows, numColumns).setValues(rangeValues);
      }
    
      // הודעת רישום
      var executionTime = new Date();
      var functionName = "importAndSortData";
      var logMessage = "פונקציה " + functionName + " בוצעה בהצלחה בתאריך " + executionTime + ".";
      Logger.log(logMessage);
    
      // מציג את הנתונים הממוינים בלוג.
      Logger.log("נתונים ממוינים: " + JSON.stringify(sortedData));
    
      // מציג את טווח הנתונים בגיליון בלוג.
      Logger.log("טווח הנתונים: " + sheet.getDataRange().getA1Notation());
    }
    
    
    עזרה הדדית - מחשבים וטכנולוגיה

  • המלצה | 🚀 [פרויקט מהפכני] העברת קבצים למחשב ללא אינטרנט דרך שיחה קולית (טלפון כשר!) - הקוד המלא
    כ כבוד הרב

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

    עזרה הדדית - מחשבים וטכנולוגיה

  • המלצה | פתיחת מצב קולי GPT בנטפרי!
    כ כבוד הרב

    @מוגן-נטפרי נראה לי שאתם מערבבים שתי דברים.
    יש שיחה קולית עם הצ'אט (הכפתור הימני) שזה חסום לפחות לי גם עכשיו ויש תמלול של מה שאומרים לטקסט (הכפתור השמאלי) ואז אפשר לשלוח את זה לצ'אט שזה פתוח כבר שנה.
    אני גם לא רואה סיבה שנטפרי יפתחו את זה כי אין להם אפשרות לסנן את זה.
    4eaa4e39-c9a3-47a8-bf07-93c69315c152-image.png
    5514869d-8001-43ac-aba7-3225e5ddbaad-image.png

    עזרה הדדית - בינה מלאכותית
  • התחברות

  • אין לך חשבון עדיין? הרשמה

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