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

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

מתוזמן נעוץ נעול הועבר רשתות
45 פוסטים 12 כותבים 746 צפיות 18 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • פלמנמוניפ פלמנמוני

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

    יש כאן משהו שהצליח לעשות קריינות של גוגל קלאד בשמיעת המיילים?

    אני...
    עריכה: וכעת גם אתה...

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

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

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

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

      @פלמנמוני למה שלא תעשה tts דרך gemini?

      אפשר הדרכה? אני לא מצליח

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

      @פלמנמוני ב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.

      פלמנמוניפ תגובה 1 תגובה אחרונה
      0
      • האדם החושבה האדם החושב

        @פלמנמוני ב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.

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

        @האדם-החושב מהו הקישור דרכו מתבצע התקשורת?

        האדם החושבה תגובה 1 תגובה אחרונה
        0
        • פלמנמוניפ פלמנמוני

          @האדם-החושב מהו הקישור דרכו מתבצע התקשורת?

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

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

          https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-tts:generateContent?key=
          
          פלמנמוניפ תגובה 1 תגובה אחרונה
          0
          • האדם החושבה האדם החושב

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

            https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-tts:generateContent?key=
            
            פלמנמוניפ מנותק
            פלמנמוניפ מנותק
            פלמנמוני
            מדריכים עימוד
            כתב נערך לאחרונה על ידי
            #37

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

            האדם החושבה תגובה 1 תגובה אחרונה
            0
            • פלמנמוניפ מנותק
              פלמנמוניפ מנותק
              פלמנמוני
              מדריכים עימוד
              כתב נערך לאחרונה על ידי
              #38

              גירסא 1.1

              מה נוסף?

              • גליון 'אנשי קשר'
              • שליטה במהירות ההקראה בקריינות גוגל קלאוד
              • תוקן באג שהיה במנוע זיהוי דיבור
              תגובה 1 תגובה אחרונה
              1
              • פלמנמוניפ פלמנמוני

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

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

                @פלמנמוני

                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
                

                test.wav
                test.pcm

                צריך למצוא דרך להמיר את זה בגוגל סקריפט.

                עריכה:
                הצלחתי

                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 וכך הסקריפט יהיה מהיר יותר.

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

                  @פלמנמוני

                  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
                  

                  test.wav
                  test.pcm

                  צריך למצוא דרך להמיר את זה בגוגל סקריפט.

                  עריכה:
                  הצלחתי

                  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 וכך הסקריפט יהיה מהיר יותר.

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

                  משהוא יודע למה זה קורה ?
                  אולי בגלל הסינון שלי ?

                  675ed095-0810-43fe-80b7-4f67385e86fa-image.png

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

                    משהוא יודע למה זה קורה ?
                    אולי בגלל הסינון שלי ?

                    675ed095-0810-43fe-80b7-4f67385e86fa-image.png

                    ח מנותק
                    ח מנותק
                    חסיד פשוט
                    כתב נערך לאחרונה על ידי
                    #41

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

                    ש תגובה 1 תגובה אחרונה
                    0
                    • ח חסיד פשוט

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

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

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

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

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

                        ח מנותק
                        ח מנותק
                        חסיד פשוט
                        כתב נערך לאחרונה על ידי
                        #43

                        @שקיעות-בלימוד שלח להם הסרטות מסך מהקובץ הגדרות

                        ש תגובה 1 תגובה אחרונה
                        1
                        • ח חסיד פשוט

                          @שקיעות-בלימוד שלח להם הסרטות מסך מהקובץ הגדרות

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

                          @חסיד-פשוט
                          וזה ישחרר לכולם או רק לי ?

                          האדם החושבה תגובה 1 תגובה אחרונה
                          0
                          • ש שקיעות בלימוד

                            @חסיד-פשוט
                            וזה ישחרר לכולם או רק לי ?

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

                            @שקיעות-בלימוד רק לך.

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

                            • התחברות

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

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