• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private

    🎙️🎯 זיהוי דיבור בעברית – חינם, איכותי, מדויק!!

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

      אשמח לעזרה. עשיתי את הקוד הזה ברנדר.
      מה אמור להיות מוגדר בשלוחה של הזיהוי דיבור? (זה קוד שאמור לשלוח אלי את המרת הדיבור של המאזין

      import os
      import tempfile
      import logging
      import requests
      from flask import Flask, request, jsonify
      from pydub import AudioSegment
      import speech_recognition as sr
      
      # ------------------ Logging ------------------
      logging.basicConfig(
          level=logging.INFO,
          format="%(asctime)s | %(levelname)s | %(message)s",
          datefmt="%H:%M:%S"
      )
      
      app = Flask(__name__)
      
      # ------------------ Telegram Config ------------------
      
      TELEGRAM_BOT_TOKEN = "***"
      TELEGRAM_CHAT_ID = "***"
      
      # ------------------ Helper Functions ------------------
      
      def add_silence(input_path: str) -> AudioSegment:
          audio = AudioSegment.from_file(input_path, format="wav")
          silence = AudioSegment.silent(duration=1000)
          return silence + audio + silence
      
      def recognize_speech(audio_segment: AudioSegment) -> str:
          recognizer = sr.Recognizer()
          try:
              with tempfile.NamedTemporaryFile(suffix=".wav", delete=True) as temp_wav:
                  audio_segment.export(temp_wav.name, format="wav")
                  with sr.AudioFile(temp_wav.name) as source:
                      data = recognizer.record(source)
                  text = recognizer.recognize_google(data, language="he-IL")
                  logging.info(f"Recognized text: {text}")
                  return text
          except sr.UnknownValueError:
              return ""
          except Exception as e:
              logging.error(f"Speech recognition error: {e}")
              return ""
      
      def send_to_telegram(text: str, file_url: str):
          message = f"🎙️ הודעה חדשה מהמערכת:\n\n{text}\n\n🔗 קובץ ההקלטה:\n{file_url}"
          url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
          requests.post(url, data={"chat_id": TELEGRAM_CHAT_ID, "text": message})
      
      # ------------------ API Endpoint ------------------
      
      @app.route("/upload_audio", methods=["GET"])
      def upload_audio():
          file_url = request.args.get("file_url")
          if not file_url:
              return jsonify({"error": "Missing 'file_url' parameter"}), 400
      
          logging.info(f"Downloading audio from: {file_url}")
          try:
              response = requests.get(file_url, timeout=15)
              if response.status_code != 200:
                  return jsonify({"error": "Failed to download audio file"}), 400
      
              with tempfile.NamedTemporaryFile(suffix=".wav", delete=True) as temp_input:
                  temp_input.write(response.content)
                  temp_input.flush()
      
                  processed_audio = add_silence(temp_input.name)
                  recognized_text = recognize_speech(processed_audio)
      
                  if recognized_text:
                      send_to_telegram(recognized_text, file_url)
                      return jsonify({"recognized_text": recognized_text})
                  else:
                      send_to_telegram(" לא זוהה דיבור.", file_url)
                      return jsonify({"recognized_text": ""})
      
          except Exception as e:
              logging.error(f"Error: {e}")
              return jsonify({"error": str(e)}), 500
      
      # ------------------ Run ------------------
      if __name__ == "__main__":
          port = int(os.environ.get("PORT", 5000))
          app.run(host="0.0.0.0", port=port)
      
      Y תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • Y
        y6714453 @יעקב 1 נערך לאחרונה על ידי

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

        type=api
        api_link=שים את הלינק של השרת
        
        api_000=stockname,no,record,/9,,no,yes
        
        ביטול השליחה בניתוק (מומלץ)
        api_hangup_send=no
        
        מעבר בסיום
        api_end_goto=/שים את הנתיב למעבר
        

        ואל תשכח להעלות קובץ שמע בשם 000 לשלוחה שאומר משהו כמו "אנא הקלט את הודעתך, ובסיום הקש סולמית"

        י תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • י
          יעקב 1 @y6714453 נערך לאחרונה על ידי יעקב 1

          @y6714453 תודה!

          Y C 2 תגובות תגובה אחרונה תגובה ציטוט 0
          • Y
            y6714453 @יעקב 1 נערך לאחרונה על ידי y6714453

            @יעקב-1
            בשביל למנוע שגיאה - תחליף בהגדרות השלוחה במקום

            api_000=stockname,no,record,/9,,no,yes
            

            את זה:

            api_000=file_url,no,record,/9,,no,yes
            

            בגלל שבקוד - הוא מחפש פרמטר בשם file_url

            לפי השורה הזאת בקוד

                file_url = request.args.get("file_url")
            

            י תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • C
              CUBASE @יעקב 1 נערך לאחרונה על ידי

              @יעקב-1 הצלחת להתקין ffmpeg על Render בלי שהוא קרס בתהליך הבנייה??

              י Y 2 תגובות תגובה אחרונה תגובה ציטוט 0
              • י
                יעקב 1 @CUBASE נערך לאחרונה על ידי

                @CUBASE כתב ב🎙️🎯 זיהוי דיבור בעברית – חינם, איכותי, מדויק!!:

                ffmpeg

                לא קרס

                תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • י
                  יעקב 1 @y6714453 נערך לאחרונה על ידי

                  @y6714453 יש לי באמת שגיאות בגלל נתיב שגוי
                  מה זה ה9 בשורה הזאת?
                  api_000=file_url,no,record,/9,,no,yes

                  Y תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • Y
                    y6714453 @יעקב 1 נערך לאחרונה על ידי y6714453

                    @יעקב-1
                    איפה ההקלטה נשמרת
                    ציטוט מהאשכול של המודול:

                    הערך הרביעי (הקלטה)
                    בערך זה ניתן להגדיר היכן תישמר ההקלטה במערכת
                    ברירת מחדל זה נשמר בתיקייה שמוגדרת ב-api_dir
                    ניתן להגדיר מיקום שונה
                    לדוגמה
                    /8 (סלש שמונה)
                    במקרה כזה ההקלטה תישמר בשלוחה 8
                    הערה: חובה לשים / בהתחלה. אסור לשים / בסוף

                    י תגובה 1 תגובה אחרונה תגובה ציטוט 1
                    • Y
                      y6714453 @CUBASE נערך לאחרונה על ידי

                      @CUBASE כתב ב🎙️🎯 זיהוי דיבור בעברית – חינם, איכותי, מדויק!!:

                      @יעקב-1 הצלחת להתקין ffmpeg על Render בלי שהוא קרס בתהליך הבנייה??

                      למה שיקרוס? זה נחשב ספריה כבדה, או לא נתמכת??

                      C תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • י
                        יעקב 1 @y6714453 נערך לאחרונה על ידי

                        @y6714453 אמורה להיות רשומה שם השלוחה שבה ההקלטה תישמר או שממנה יקח את ההקלטה להמרה? הוא כל הזמן מחזיר שגיאה שלא מוצא את הנתיב 6&file_url=/9/000.wav

                        Y תגובה 1 תגובה אחרונה תגובה ציטוט 0
                        • Y
                          y6714453 @יעקב 1 נערך לאחרונה על ידי y6714453

                          @יעקב-1 כתב ב🎙️🎯 זיהוי דיבור בעברית – חינם, איכותי, מדויק!!:

                          @y6714453 אמורה להיות רשומה שם השלוחה שבה ההקלטה תישמר או שממנה יקח את ההקלטה להמרה? הוא כל הזמן מחזיר שגיאה שלא מוצא את הנתיב 6&file_url=/9/000.wav

                          השלוחה שבה ההקלטה תישמר - בלי קשר למה שהשרת מקבל, (אתה יכול גם להשאיר את הערך ריק ואז ההקלטה תישמר בתיקייה api_dir).
                          זה לא הסיבה לשגיאה.

                          תעלה פה את השגיאה שאתה מקבל

                          י תגובה 1 תגובה אחרונה תגובה ציטוט 0
                          • י
                            יעקב 1 @y6714453 נערך לאחרונה על ידי יעקב 1

                            @y6714453
                            -כתבתי בשלוחה במקום 9 - 9715, והוא לא מוצא נתיב
                            11:18:22 | מידע | מוריד אודיו מ: https://www.call2all.co.il/ym/ivr2/9715/000.wav
                            11:18:23 | שגיאה | הורדת הקובץ נכשלה , סטטוס: 404
                            11:18:23 | מידע | 127.0.0.1 - - [21/אוקטובר/2025 11:18:23] " קבל /upload_audio?ApiCallId=41c5197c930a84efea2dd8376b949af8994aa0cc&ApiYFCallId=6e6431b4-32d1-4b97-931b-f908c52a096d&ApiDID=&ApiRealDID=&ApiPhone=&ApiExtension=9713&ApiTime=1761045496&file_url=/9715/000.wav HTTP/1.1 " 400 -
                            .

                            C תגובה 1 תגובה אחרונה תגובה ציטוט 0
                            • C
                              CUBASE @יעקב 1 נערך לאחרונה על ידי CUBASE

                              @יעקב-1 הכתובת אינה נכונה, זה אמור להיות

                              https://www.call2all.co.il/ym/api/DownloadFile?token=$token&path=ivr2:/9715/000.wav
                              
                              י תגובה 1 תגובה אחרונה תגובה ציטוט 1
                              • C
                                CUBASE @y6714453 נערך לאחרונה על ידי

                                @y6714453 כתב ב🎙️🎯 זיהוי דיבור בעברית – חינם, איכותי, מדויק!!:

                                @CUBASE כתב ב🎙️🎯 זיהוי דיבור בעברית – חינם, איכותי, מדויק!!:

                                @יעקב-1 הצלחת להתקין ffmpeg על Render בלי שהוא קרס בתהליך הבנייה??

                                למה שיקרוס? זה נחשב ספריה כבדה, או לא נתמכת??

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

                                @y6714453 כתב ב🎙️🎯 זיהוי דיבור בעברית – חינם, איכותי, מדויק!!:

                                ואז ההקלטה תישמר בתיקייה api_dir

                                טעות, ההקלטה תישמר איפה שמוגדר ב-api_dir שזו הגדרה מאיפה ייקח את הקבצים בשביל ה-api, לדוג אם ב-api_dir מוגדר /1 אז כשתדפיס id_list_message=f-000 זה ישמיע את הקובץ /1/000.wav ולא את הקובץ 000 מהשלוחה הנוכחית

                                י תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                • י
                                  יעקב 1 @CUBASE נערך לאחרונה על ידי

                                  @CUBASE תודה ! עובד לי מעולה
                                  יש אפשרות להגדיר שאחרי ההמרה ישמיע למאזין את הטקסט שהומר והוא יבחר אם לאשר?
                                  או לכה"פ אפשרות שישמע את ההקלטה הרגילה שלו ויבחר אם לאשר, כי כרגע בסולמית זה מיד מאשר

                                  C 2 תגובות תגובה אחרונה תגובה ציטוט 0
                                  • C
                                    CUBASE @יעקב 1 נערך לאחרונה על ידי

                                    @יעקב-1 אין לי מושג בפייתון

                                    תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                    • C
                                      CUBASE @יעקב 1 נערך לאחרונה על ידי

                                      @יעקב-1

                                      תבקש מ-gpt או gemini שאת התמלול ידפיס כך:

                                      id_list_message=t-{the text without '-' '.' '"'}&read=m-3230=confirm,,1,1,,NO,,,,12,,,,,no
                                      

                                      ואם התקבל פרמטר confirm שהערך שלו הוא 1 אז התמלול מאושר ואם 2 אז יש לתמלל מחדש ולהדפיס שוב את התמלול כדלעיל

                                      תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                      • י
                                        יעקב 1 @CUBASE נערך לאחרונה על ידי יעקב 1

                                        תודה! עובד מעולה

                                        תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                        • ק
                                          קו הרהיטים נערך לאחרונה על ידי

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

                                          תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                          • ע
                                            עידו נערך לאחרונה על ידי

                                            יש כזה גם לnodejs?

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