@מענין-לשמוע למיטב זכרוני אם פותחים את הקובץ דרך Libra office זה עוקף את הסיסמאות.
האדם החושב
-
בירור | תוכנת פריצה לסיסמאות VBA -
שיתוף | 'פלאפון מייל' - כולל קבלת ושליחת מיילים דרך הפלאפון, קריינות מקצועית, ועוד...@פלמנמוני כתב בשיתוף | 'פלאפון מייל' - הגירסא המשופרת של מייל לפלאפון, כולל קבלת ושליחת מיילים דרך הפלאפון, קריינות מקצועית, ועוד...:
בנתיים יש מעלות לזה ולזה, למשל: בג'מיני אפשר לעשות קולות שונים לכותרות, אבל בגוגל קלאוד אפשר לשלוט על מהירות ההקראה.
גם בgemini אפשר עם פרומפט, אם כי זה לא מדע מדוייק.
-
שיתוף | 'פלאפון מייל' - כולל קבלת ושליחת מיילים דרך הפלאפון, קריינות מקצועית, ועוד...@שקיעות-בלימוד רק לך.
-
שיתוף | 'פלאפון מייל' - כולל קבלת ושליחת מיילים דרך הפלאפון, קריינות מקצועית, ועוד...function tts(text){ const model = "gemini-2.5-flash-preview-tts" const token = "gemini token" const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${token}` const payload = { contents: [{ parts:[{ text: text }] }], generationConfig: { responseModalities: ["AUDIO"], speechConfig: { voiceConfig: { prebuiltVoiceConfig: { voiceName: "Kore" } } } }, model: "gemini-2.5-flash-preview-tts", } const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify(payload) } const response = JSON.parse(UrlFetchApp.fetch(url, options)) console.log(response) return response.candidates[0].content.parts[0].inlineData.data } function test(){ const text = "בדיקת tts gemini"; const pcmBase64 = tts(text); const pcmBytes = Utilities.base64Decode(pcmBase64); const blob = Utilities.newBlob(pcmBytes, 'application/octet-stream', 'test.pcm'); DriveApp.createFile(blob); }ואז הורדת הקובץ מהדרייב והמרה בעזרת ffmpeg
ffmpeg -f s16le -ar 24000 -ac 1 -i test.pcm test.wavצריך למצוא דרך להמיר את זה בגוגל סקריפט.
עריכה:
הצלחתיfunction tts(text){ const model = "gemini-2.5-flash-preview-tts" const token = "gemini token" const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${token}` const payload = { contents: [{ parts:[{ text: text }] }], generationConfig: { responseModalities: ["AUDIO"], speechConfig: { voiceConfig: { prebuiltVoiceConfig: { voiceName: "Kore" } } } }, model: "gemini-2.5-flash-preview-tts", } const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify(payload) } const response = JSON.parse(UrlFetchApp.fetch(url, options)) return response.candidates[0].content.parts[0].inlineData.data } function createWavFromPcm(pcmBytes, sampleRate, numChannels, bitsPerSample) { const byteRate = sampleRate * numChannels * (bitsPerSample / 8); const blockAlign = numChannels * (bitsPerSample / 8); const dataSize = pcmBytes.length; const fileSize = 44 - 8 + dataSize; const header = []; function pushString(s) { for (let i = 0; i < s.length; i++) header.push(s.charCodeAt(i)); } function pushUint32LE(val) { header.push(val & 0xFF, (val >> 8) & 0xFF, (val >> 16) & 0xFF, (val >> 24) & 0xFF); } function pushUint16LE(val) { header.push(val & 0xFF, (val >> 8) & 0xFF); } pushString("RIFF"); pushUint32LE(fileSize); pushString("WAVE"); pushString("fmt "); pushUint32LE(16); pushUint16LE(1); pushUint16LE(numChannels); pushUint32LE(sampleRate); pushUint32LE(byteRate); pushUint16LE(blockAlign); pushUint16LE(bitsPerSample); pushString("data"); pushUint32LE(dataSize); const headerBytes = new Uint8Array(header); const out = new Uint8Array(headerBytes.length + pcmBytes.length); out.set(headerBytes, 0); out.set(pcmBytes, headerBytes.length); return out; } function test(){ const text = "נשלחה אליך הודעת מייל חדשה בתאריך א כסליו תשפו"; const pcmBase64 = tts(text); const pcmBytes = Utilities.base64Decode(pcmBase64); const pcmBlob = Utilities.newBlob(pcmBytes, 'application/octet-stream', 'test.pcm'); DriveApp.createFile(pcmBlob); const sampleRate = 24000; const channels = 1; const bits = 16; const wavBytes = createWavFromPcm(pcmBytes, sampleRate, channels, bits); const wavBlob = Utilities.newBlob(wavBytes, 'audio/wav', 'test.wav'); DriveApp.createFile(wavBlob); }אגב, לגבי שליחת מיילים אפשר לשלוח על ידי שלוחת api במקום לקרוא את הymgr בשלוחת קבלת נתונים (יצטרכו לעשות פריסה של הסקריפט ולהוסיף פונקציית doGet ולהשתיק את הודעת אין מענה משרת api.) כך הוא לא יצטרך בכל ריצה לבדוק את הymgr וכך הסקריפט יהיה מהיר יותר.
-
שיתוף | 'פלאפון מייל' - כולל קבלת ושליחת מיילים דרך הפלאפון, קריינות מקצועית, ועוד...@פלמנמוני זאת ספרייה לpython, הבקשות מאחורי הקלעים.
לכאו' זה הלינק הזה:https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-tts:generateContent?key= -
שיתוף | 'פלאפון מייל' - כולל קבלת ושליחת מיילים דרך הפלאפון, קריינות מקצועית, ועוד...@פלמנמוני בpython זה נראה כך:
import io import wave from google import genai from google.genai import types def tts_single_speaker(token: str, text: str, model: str = "gemini-2.5-flash-preview-tts", voice: str = "Zephyr") -> bytes | None: client = genai.Client(api_key=token) response = client.models.generate_content( model=model, contents=[types.Part.from_text(text=text)], config=types.GenerateContentConfig( response_modalities=["AUDIO"], speech_config=types.SpeechConfig( voice_config=types.VoiceConfig( prebuilt_voice_config=types.PrebuiltVoiceConfig( voice_name=voice ) ) ), ) ) if response and response.candidates and response.candidates[0] and response.candidates[0].content and response.candidates[0].content.parts and response.candidates[0].content.parts[0].inline_data: return response.candidates[0].content.parts[0].inline_data.data return None def wave_file(pcm, channels=1, rate=24000, sample_width=2) -> bytes: buf = io.BytesIO() with wave.open(buf, "wb") as wf: wf.setnchannels(channels) wf.setsampwidth(sample_width) wf.setframerate(rate) wf.writeframes(pcm) return buf.getvalue() def main(): text = "שלום, זהו מבחן של המערכת להמרת טקסט לדיבור." token = "YOUR_API_KEY_HERE" audio_pcm = tts_single_speaker(token, text) if audio_pcm: audio_bytes = wave_file(audio_pcm) with open("output.wav", "wb") as f: f.write(audio_bytes) print("Audio content written to output.wav") else: print("Failed to generate audio.")פעם ניסיתי לעשות את זה בgoogle script אבל לא הצלחתי לתרגם את החלק של המרת הpcm לwav.
-
שיתוף | 'פלאפון מייל' - כולל קבלת ושליחת מיילים דרך הפלאפון, קריינות מקצועית, ועוד...@פלמנמוני למה שלא תעשה tts דרך gemini?
(מודלgemini-2.5-flash-preview-ttsgemini-2.5-pro-preview-tts הוא חינמי עד 15 בקשות ביום).
דרך גוגל קלאוד זה חינמי רק עד 3 חודשים ולדעתי הוא מביא תוצאות פחות טובות. -
בקשת מידע | שמיעת מיקום וזמן המנין הקרוב@במה כתב בבקשת מידע | שמיעת מיקום וזמן המנין הקרוב:
האם זה שנדרים פלוס שחררו את API שלהם יכול לעזור בענין?
היכן נמצא התיעוד?
-
בקשת מידע | ספרים דיגיטליים@cfopuser יש גם את המאגר הזה:
https://github.com/zevisvei/sefaria_ebooks
אתר:
https://sefaria-ebooks.onrender.com/ -
בקשה | פתרון יצירתי לסידור תפילה לנוקיה שלא תומכת בJAR -
מדריך | הקלטות תא קולי והתראת שיחות שלא נענו לקו טלפוני, מייל, וואטסאפ וטלגרם@חיים100 שוכר מתכנת שיכתוב לך את הקוד בשביל הדבר הזה...
-
מדריך | הקלטות תא קולי והתראת שיחות שלא נענו לקו טלפוני, מייל, וואטסאפ וטלגרם@י.ע כתב במדריך | הקלטות תא קולי והתראת שיחות שלא נענו לקו טלפוני, מייל, וואטסאפ וטלגרם:
אם זה כבר עובד אם ג'מיני אולי כדאי שג'מיני גם יענה במקומי
בשלוחה אחת אני יסביר לו מי אני ואיך אני רוצה שהוא יענה לשיחות שלי....בשביל זה צריך live-api + שרת שיתווך בין gemini live api ל sip ולהפנות את השיחה לsip ההוא, קיצער, לא ישים בgoogle script בשביל זה צריך שרת אמיתי.
-
מדריך | הקלטות תא קולי והתראת שיחות שלא נענו לקו טלפוני, מייל, וואטסאפ וטלגרם@kasnik נכון, אני מחכה שהמפח הקבוע יהיה בכל הapi.
-
מדריך | הקלטות תא קולי והתראת שיחות שלא נענו לקו טלפוני, מייל, וואטסאפ וטלגרם@חיים100 זה הקוד שאמור להקפיץ את החלון לבקשת הטוקן.
זה עובד רק אם פתחת את googlescript מתוך googlesheets.@kasnik כתב במדריך | הקלטות תא קולי והתראת שיחות שלא נענו לקו טלפוני, מייל, וואטסאפ וטלגרם:
ב. זה לא באמת משנה כי עוד שניה זה כבר לא עובד בגלל שיטת האימות הדו''ש
יהיה אפשר להכניס טוקן קבוע.
-
בירור | איך לקרוא קבצי EPUB עבריים במראה נורמלי@זלדי איך אתה מפעיל את calibre?, לא יצא לי להיתקל בקובץ שלא נפתח כראוי בcalibre.
-
בירור | איך לקרוא קבצי EPUB עבריים במראה נורמלי@זלדי calibre קורא מצויין קבצי epub בעברית, אולי הבעיה היא בקובץ הספציפי שיש לך.
-
שיתוף | תוסף לנוחות העבודה בימות המשיח (פוטר את הקודים והבלאגן...) -
שיתוף | תוסף לנוחות העבודה בימות המשיח (פוטר את הקודים והבלאגן...)@מים-אחרונים אני מציע מבנה json משהו בסגנון הזה:
{ "models": [ { "type": "playfile", "description": "השמעת קבצים", "documentation": "https://f2.freeivr.co.il/topic/7010/%D7%94%D7%A9%D7%9E%D7%A2%D7%AA-%D7%A7%D7%91%D7%A6%D7%99%D7%9D?_=1758840422645", "system messages": [ ], "additionalCommands": [ { "command": "folder_to_play", "options": [ { "option": "path without prefix", "description": "נתיב ללא /" }, { "option": "tfr", "description": "בחירה מאיזה שלוחה להשמיע את הקבצים", "system messages": [ { "message number": "M2801", "message text": "להפעלת השמעות אנא הקישו את השלוחה המבוקשת. להפעלת השמעות מתתי תיקיות הקישו את הכתובת המלאה, כאשר בין תיקייה לתיקייה הקישו כוכבית. בסיום הכתובת המלאה הקישו סולמית, להפעלת השלוחה הראשית הקישו סולמית, לחזרה לתפריט קודם הקישו כוכבית וסולמית", "replaceable": true } ] } ] } ] } ] }תוכל להיעזר גם בgoogle sheets הזה:
https://docs.google.com/spreadsheets/d/17kVm1LvQaJQFQBaHCgdE0rK6Oxr63xg9/edit?gid=1812319104#gid=1812319104אני רואה ש @אביי התחיל גם לעבוד על משהו כאן:
https://github.com/abaye123/YemotSettings/blob/desk/data/AllSettingsYemot/menu.json