דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • 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

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. מחשבים וטכנולוגיה
  3. עזרה הדדית - מחשבים וטכנולוגיה
  4. המלצה | 🚀 [פרויקט מהפכני] העברת קבצים למחשב ללא אינטרנט דרך שיחה קולית (טלפון כשר!) - הקוד המלא

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

מתוזמן נעוץ נעול הועבר עזרה הדדית - מחשבים וטכנולוגיה
146 פוסטים 43 כותבים 2.3k צפיות 45 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • כ כבוד הרב

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

    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
    
    # === הגדרות מודם (Turbo Edition) ===
    SAMPLE_RATE = 8000
    BAUD_RATE = 64        # העלינו קצת את המהירות (מ-40 ל-64) - עדיין בטוח
    FREQ_MARK = 1000
    FREQ_SPACE = 2000     # הפרדה גדולה יותר לזיהוי מהיר
    RS_ECC_SYMBOLS = 40   # הגדלנו את התיקון (כי ביטלנו את השילוש)
    INTERLEAVE_STEP = 30  # פיזור שגיאות
    
    # סנכרון
    SYNC_DURATION = 0.6
    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_TURBO.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)
    
    # === Encoder ===
    def generate_signal(filename, file_content, output_wav):
        try:
            write_log(f"מקודד טורבו: {filename}")
            orig_size = len(file_content)
            
            # 1. דחיסה (ZLIB) - זה החיסכון הגדול!
            compressed_content = zlib.compress(file_content, level=9)
            comp_size = len(compressed_content)
            write_log(f"דחיסה: {orig_size} -> {comp_size} בייטים")
            
            ext = os.path.splitext(filename)[1].lower()
            is_text = ext in TEXT_EXTENSIONS
            fname_bytes = os.path.basename(filename).encode('utf-8')
            if len(fname_bytes) > 100: fname_bytes = fname_bytes[:100]
            
            # דגל סוג (טקסט/בינארי) כבר פחות חשוב כי הכל דחוס, אבל נשמור
            type_flag = 1 if is_text else 0
            
            # חישוב CRC על המידע הדחוס
            crc = zlib.crc32(compressed_content) & 0xffffffff
            
            # אריזה: [NameLen] [Name] [Type] [CRC] [CompressedContent]
            packet = struct.pack('B', len(fname_bytes)) + fname_bytes + struct.pack('B', type_flag) + struct.pack('>I', crc) + compressed_content
            
            # 2. הגנה (Reed-Solomon מחוזק)
            rsc = RSCodec(RS_ECC_SYMBOLS)
            encoded_data = rsc.encode(packet)
            
            # 3. ערבוב (Interleaving)
            raw_bits = text_to_bits(encoded_data)
            shuffled_bits, padding = interleave_bits(raw_bits)
            
            # 4. כותרת: [Magic] [Length] [Padding]
            # אנחנו שולחים את הכותרת 3 פעמים (כי היא קצרה וחשובה), אבל את התוכן רק פעם אחת!
            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
            
            # 5. יצירת אודיו
            samples_per_bit = int(SAMPLE_RATE / BAUD_RATE)
            t_wake = np.arange(int(SAMPLE_RATE * 2.0)) / SAMPLE_RATE # קיצרנו את ה-Wakeup ל-2 שניות
            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.7], [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)
            duration = len(final_audio) / SAMPLE_RATE
            return True, f"קובץ טורבו נוצר!\nזמן משוער: {duration:.1f} שניות\n(דחיסה: {int((1-comp_size/orig_size)*100)}%)"
            
        except Exception as e: return False, str(e)
    
    # === Decoder ===
    def decode_signal(input_wav, output_folder):
        try:
            with open("LOG_TURBO.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, [800, 2200], 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
                else: return False, "Magic Byte לא נמצא"
            
            data_start = magic_idx + 8
            
            # 3. Header
            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}")
            except: return False, "שגיאת כותרת"
            
            if data_len > 5000000 or data_len == 0: return False, f"אורך לא הגיוני {data_len}"
            
            # 4. חילוץ
            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)
            packet = bits_to_bytes(raw_bits)
            
            # 5. RS Decode
            try:
                rsc = RSCodec(RS_ECC_SYMBOLS)
                decoded_packet = rsc.decode(packet)[0]
                
                # 6. פירוק + פתיחת דחיסה
                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
                
                received_crc = struct.unpack('>I', decoded_packet[ptr:ptr+4])[0]; ptr+=4
                compressed_content = decoded_packet[ptr:]
                
                # בדיקת CRC
                calc_crc = zlib.crc32(compressed_content) & 0xffffffff
                if calc_crc != received_crc:
                    return False, "שגיאת CRC (תוכן משובש)"
                
                # פתיחת דחיסה (ZLIB)
                try:
                    final_data = zlib.decompress(compressed_content)
                    write_log("פתיחת דחיסה הצליחה")
                except Exception as zerr:
                    return False, f"שגיאה בפתיחת הדחיסה: {zerr}"
                    
                path = os.path.join(output_folder, filename)
                with open(path, 'wb') as f: f.write(final_data)
                
                return True, f"הצלחה! {filename}"
                
            except ReedSolomonError:
                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 - TURBO 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="צור קובץ (Turbo Compression)", 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_TURBO.txt") if os.path.exists("LOG_TURBO.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="מפענח (Decompress)...", 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()
    
    מ מנותק
    מ מנותק
    משחזר מידע
    כתב נערך לאחרונה על ידי משחזר מידע
    #136

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

    האמת היא שקובץ שמכיל את המילה "שלום" בלבד הומר לקובץ שמע של 31 שניות שזה המון.

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

    שם המילה "שלום" הומרה לפחות מ-14 שניות שמע.

    בלתק
    הנה
    הצלחתי להכפיל את המהירות [באותה טכנולוגיה] ב~1400/700x
    עם המון שיפורים נוספים

    https://www.aliexpress.com/item/1005008154977875.html


    הפעלת ניהול דיסקים דרך הקובץ המצורף

    Hex editor חינמי

    מתכנת חובבמ תגובה 1 תגובה אחרונה
    0
    • מ משחזר מידע

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

      האמת היא שקובץ שמכיל את המילה "שלום" בלבד הומר לקובץ שמע של 31 שניות שזה המון.

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

      שם המילה "שלום" הומרה לפחות מ-14 שניות שמע.

      בלתק
      הנה
      הצלחתי להכפיל את המהירות [באותה טכנולוגיה] ב~1400/700x
      עם המון שיפורים נוספים

      https://www.aliexpress.com/item/1005008154977875.html

      מתכנת חובבמ מנותק
      מתכנת חובבמ מנותק
      מתכנת חובב
      מדריכים
      כתב נערך לאחרונה על ידי מתכנת חובב
      #137

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

      [באותה טכנולוגיה]

      איך זה אותה טכנולוגיה?
      אותה טכנולוגיה זה גם דיבור שהוא הרבה יותר מהיר מהמילה שלום ב 14 שניות
      הבעיה היא במגבלות הציוד הקיים

      צריך עזרה בשחזור מידע? ייעוץ? egozkokus1@gmail.com

      תגובה 1 תגובה אחרונה
      0
      • I מנותק
        I מנותק
        IID
        כתב נערך לאחרונה על ידי IID
        #138

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

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

        במצב כזה, העברת הנתונים תהיה מהירה הרבה יותר ממתי שאנחנו משמיעים לתוכנה את הקידוד באמצעות הקול אם נשנה את התוכנה כך שתשלח את הנתונים כאותות חשמליים 'טהורים' דרך הכבל:

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

        מתכנת חובבמ תגובה 1 תגובה אחרונה
        0
        • Y מנותק
          Y מנותק
          yoel
          כתב נערך לאחרונה על ידי
          #139

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

          ת תגובה 1 תגובה אחרונה
          0
          • Y yoel

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

            ת מנותק
            ת מנותק
            תמיד
            כתב נערך לאחרונה על ידי
            #140

            @yoel רעיון חמוד, אבל מי ייצר כזה מכשיר?

            Y תגובה 1 תגובה אחרונה
            0
            • I IID

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

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

              במצב כזה, העברת הנתונים תהיה מהירה הרבה יותר ממתי שאנחנו משמיעים לתוכנה את הקידוד באמצעות הקול אם נשנה את התוכנה כך שתשלח את הנתונים כאותות חשמליים 'טהורים' דרך הכבל:

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

              מתכנת חובבמ מנותק
              מתכנת חובבמ מנותק
              מתכנת חובב
              מדריכים
              כתב נערך לאחרונה על ידי מתכנת חובב
              #141

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

              צריך עזרה בשחזור מידע? ייעוץ? egozkokus1@gmail.com

              תגובה 1 תגובה אחרונה
              0
              • ת תמיד

                @yoel רעיון חמוד, אבל מי ייצר כזה מכשיר?

                Y מנותק
                Y מנותק
                yoel
                כתב נערך לאחרונה על ידי
                #142

                @תמיד
                לפי דעתי לא מסובך בכלל
                מצד החומרה, מאוד זולה, זה יותר התוכנה שצריך לעבוד עליה

                תגובה 1 תגובה אחרונה
                0
                • כ כבוד הרב

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

                  W מנותק
                  W מנותק
                  web_master
                  כתב נערך לאחרונה על ידי web_master
                  #143

                  @כבוד-הרב הרעיון הזה היה קיים בעבר לגוגל היה תוסף לכרום לשליחת קישורים בין שני מחשבים באמצעות השמעת צלילים קראו לזה Google Tone
                  למעשה זה לא מעשי לשליחת קבצים גדולים כי מהירות ההעברה היא איטית מאד בערך 4 שעות ל1 מגה בייט במקרה הטוב

                  מתכנת חובבמ תגובה 1 תגובה אחרונה
                  1
                  • W web_master

                    @כבוד-הרב הרעיון הזה היה קיים בעבר לגוגל היה תוסף לכרום לשליחת קישורים בין שני מחשבים באמצעות השמעת צלילים קראו לזה Google Tone
                    למעשה זה לא מעשי לשליחת קבצים גדולים כי מהירות ההעברה היא איטית מאד בערך 4 שעות ל1 מגה בייט במקרה הטוב

                    מתכנת חובבמ מנותק
                    מתכנת חובבמ מנותק
                    מתכנת חובב
                    מדריכים
                    כתב נערך לאחרונה על ידי
                    #144

                    @web_master ב google tone שידרו בספקטרום של 10 תדרים (אמנם תדר כפול בכל פעם) ומשך כל סימבול היה בערך 100ms בגלל מגבלות הסביבה
                    בשידור כמו כאן יהיה אפשר לשדר פי 3 יותר מהר כי אפשר לשדר 16 תדרים בערך (+ שינויים ב LPC) ומשך סימבול של 40ms
                    ובכל אופן אני לא טוען שזה משהו שיפתור את בעיית חוסר התקשורת ושליחת המסמכים - זה לא אבל בתור פרוייקט מחקרי יש לזה יותר אופק

                    צריך עזרה בשחזור מידע? ייעוץ? egozkokus1@gmail.com

                    צבי דורש ציוןצ תגובה 1 תגובה אחרונה
                    0
                    • מתכנת חובבמ מתכנת חובב

                      @web_master ב google tone שידרו בספקטרום של 10 תדרים (אמנם תדר כפול בכל פעם) ומשך כל סימבול היה בערך 100ms בגלל מגבלות הסביבה
                      בשידור כמו כאן יהיה אפשר לשדר פי 3 יותר מהר כי אפשר לשדר 16 תדרים בערך (+ שינויים ב LPC) ומשך סימבול של 40ms
                      ובכל אופן אני לא טוען שזה משהו שיפתור את בעיית חוסר התקשורת ושליחת המסמכים - זה לא אבל בתור פרוייקט מחקרי יש לזה יותר אופק

                      צבי דורש ציוןצ מנותק
                      צבי דורש ציוןצ מנותק
                      צבי דורש ציון
                      כתב נערך לאחרונה על ידי
                      #145

                      @מתכנת-חובב השאלה אם אין אפשרות אולי לבנות (או שחברה כמו ימות המשיח לדוגמא תבנה) שרת בחברת תקשורת שלא מסנן קולות לא אנושיים?

                      מתכנת חובבמ תגובה 1 תגובה אחרונה
                      0
                      • צבי דורש ציוןצ צבי דורש ציון

                        @מתכנת-חובב השאלה אם אין אפשרות אולי לבנות (או שחברה כמו ימות המשיח לדוגמא תבנה) שרת בחברת תקשורת שלא מסנן קולות לא אנושיים?

                        מתכנת חובבמ מנותק
                        מתכנת חובבמ מנותק
                        מתכנת חובב
                        מדריכים
                        כתב נערך לאחרונה על ידי
                        #146

                        @צבי-דורש-ציון אין אפשרות

                        צריך עזרה בשחזור מידע? ייעוץ? egozkokus1@gmail.com

                        תגובה 1 תגובה אחרונה
                        1

                        • התחברות

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

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