๐๏ธ๐ฏ ืืืืื ืืืืืจ ืืขืืจืืช โ ืืื ื, ืืืืืชื, ืืืืืง!!
-
ืืฉืื ืืขืืจื. ืขืฉืืชื ืืช ืืงืื ืืื ืืจื ืืจ.
ืื ืืืืจ ืืืืืช ืืืืืจ ืืฉืืืื ืฉื ืืืืืื ืืืืืจ? (ืื ืงืื ืฉืืืืจ ืืฉืืื ืืื ืืช ืืืจืช ืืืืืืจ ืฉื ืืืืืื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)
-
@ืืขืงื-1
ืืฉืืืื ืืชื ืฆืจืื ืืืืืืจ ืฉืืฉืื ืืช ืืืงืืื ืืฉืจืช
ืืื ืชืืืืจ ืืtype=api api_link=ืฉืื ืืช ืืืื ืง ืฉื ืืฉืจืช api_000=stockname,no,record,/9,,no,yes ืืืืื ืืฉืืืื ืื ืืชืืง (ืืืืืฅ) api_hangup_send=no ืืขืืจ ืืกืืื api_end_goto=/ืฉืื ืืช ืื ืชืื ืืืขืืจ
ืืื ืชืฉืื ืืืขืืืช ืงืืืฅ ืฉืืข ืืฉื 000 ืืฉืืืื ืฉืืืืจ ืืฉืื ืืื "ืื ื ืืงืื ืืช ืืืืขืชื, ืืืกืืื ืืงืฉ ืกืืืืืช"
-
@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 ืืฆืืืช ืืืชืงืื ffmpeg ืขื Render ืืื ืฉืืื ืงืจืก ืืชืืืื ืืื ืืื??
-
@CUBASE ืืชื ื
๏ธ
ืืืืื ืืืืืจ ืืขืืจืืช โ ืืื ื, ืืืืืชื, ืืืืืง!!:
ffmpeg
ืื ืงืจืก
-
@y6714453 ืืฉ ืื ืืืืช ืฉืืืืืช ืืืื ื ืชืื ืฉืืื
ืื ืื ื9 ืืฉืืจื ืืืืช?
api_000=file_url,no,record,/9,,no,yes -
@ืืขืงื-1
ืืืคื ืืืงืืื ื ืฉืืจืช
ืฆืืืื ืืืืฉืืื ืฉื ืืืืืื:ืืขืจื ืืจืืืขื (ืืงืืื)
ืืขืจื ืื ื ืืชื ืืืืืืจ ืืืื ืชืืฉืืจ ืืืงืืื ืืืขืจืืช
ืืจืืจืช ืืืื ืื ื ืฉืืจ ืืชืืงืืื ืฉืืืืืจืช ื-api_dir
ื ืืชื ืืืืืืจ ืืืงืื ืฉืื ื
ืืืืืื
/8
(ืกืืฉ ืฉืืื ื)
ืืืงืจื ืืื ืืืงืืื ืชืืฉืืจ ืืฉืืืื 8
ืืขืจื: ืืืื ืืฉืื/
ืืืชืืื. ืืกืืจ ืืฉืื/
ืืกืืฃ -
@CUBASE ืืชื ื
๏ธ
ืืืืื ืืืืืจ ืืขืืจืืช โ ืืื ื, ืืืืืชื, ืืืืืง!!:
@ืืขืงื-1 ืืฆืืืช ืืืชืงืื ffmpeg ืขื Render ืืื ืฉืืื ืงืจืก ืืชืืืื ืืื ืืื??
ืืื ืฉืืงืจืืก? ืื ื ืืฉื ืกืคืจืื ืืืื, ืื ืื ื ืชืืืช??
-
@y6714453 ืืืืจื ืืืืืช ืจืฉืืื ืฉื ืืฉืืืื ืฉืื ืืืงืืื ืชืืฉืืจ ืื ืฉืืื ื ืืงื ืืช ืืืงืืื ืืืืจื? ืืื ืื ืืืื ืืืืืจ ืฉืืืื ืฉืื ืืืฆื ืืช ืื ืชืื 6&file_url=/9/000.wav
-
@ืืขืงื-1 ืืชื ื
๏ธ
ืืืืื ืืืืืจ ืืขืืจืืช โ ืืื ื, ืืืืืชื, ืืืืืง!!:
@y6714453 ืืืืจื ืืืืืช ืจืฉืืื ืฉื ืืฉืืืื ืฉืื ืืืงืืื ืชืืฉืืจ ืื ืฉืืื ื ืืงื ืืช ืืืงืืื ืืืืจื? ืืื ืื ืืืื ืืืืืจ ืฉืืืื ืฉืื ืืืฆื ืืช ืื ืชืื 6&file_url=/9/000.wav
ืืฉืืืื ืฉืื ืืืงืืื ืชืืฉืืจ - ืืื ืงืฉืจ ืืื ืฉืืฉืจืช ืืงืื, (ืืชื ืืืื ืื ืืืฉืืืจ ืืช ืืขืจื ืจืืง ืืื ืืืงืืื ืชืืฉืืจ ืืชืืงืืื
api_dir
).
ืื ืื ืืกืืื ืืฉืืืื.ืชืขืื ืคื ืืช ืืฉืืืื ืฉืืชื ืืงืื
-
@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 -
. -
@ืืขืงื-1 ืืืชืืืช ืืื ื ื ืืื ื, ืื ืืืืจ ืืืืืช
https://www.call2all.co.il/ym/api/DownloadFile?token=$token&path=ivr2:/9715/000.wav
-
@y6714453 ืืชื ื
๏ธ
ืืืืื ืืืืืจ ืืขืืจืืช โ ืืื ื, ืืืืืชื, ืืืืืง!!:
@CUBASE ืืชื ื
๏ธ
ืืืืื ืืืืืจ ืืขืืจืืช โ ืืื ื, ืืืืืชื, ืืืืืง!!:
@ืืขืงื-1 ืืฆืืืช ืืืชืงืื ffmpeg ืขื Render ืืื ืฉืืื ืงืจืก ืืชืืืื ืืื ืืื??
ืืื ืฉืืงืจืืก? ืื ื ืืฉื ืกืคืจืื ืืืื, ืื ืื ื ืชืืืช??
ืืขืืจ ื ืืกืืชื ืืืชืงืื ืืช ืื ืืื ืืื ืื, ืืณืืืื ื ืืขื ืฉืื ืกืคืจืื ืืืื ืืืื, ืื ืจืื ืืืชื ืืขืื ืืืจืช ืืืณืืืื ื ืืจืื ืชืณืืื (ืืื ืื ืคืขื ืฉืืื ืื ืื ืืืืจ..)
@y6714453 ืืชื ื
๏ธ
ืืืืื ืืืืืจ ืืขืืจืืช โ ืืื ื, ืืืืืชื, ืืืืืง!!:
ืืื ืืืงืืื ืชืืฉืืจ ืืชืืงืืื api_dir
ืืขืืช, ืืืงืืื ืชืืฉืืจ ืืืคื ืฉืืืืืจ ื-api_dir ืฉืื ืืืืจื ืืืืคื ืืืงื ืืช ืืงืืฆืื ืืฉืืื ื-api, ืืืื ืื ื-api_dir ืืืืืจ /1 ืื ืืฉืชืืคืืก
id_list_message=f-000
ืื ืืฉืืืข ืืช ืืงืืืฅ/1/000.wav
ืืื ืืช ืืงืืืฅ 000 ืืืฉืืืื ืื ืืืืืช -
@CUBASE ืชืืื ! ืขืืื ืื ืืขืืื
ืืฉ ืืคืฉืจืืช ืืืืืืจ ืฉืืืจื ืืืืจื ืืฉืืืข ืืืืืื ืืช ืืืงืกื ืฉืืืืจ ืืืื ืืืืจ ืื ืืืฉืจ?
ืื ืืื"ืค ืืคืฉืจืืช ืฉืืฉืืข ืืช ืืืงืืื ืืจืืืื ืฉืื ืืืืืจ ืื ืืืฉืจ, ืื ืืจืืข ืืกืืืืืช ืื ืืื ืืืฉืจ -
@ืืขืงื-1 ืืื ืื ืืืฉื ืืคืืืชืื
-
ืชืืงืฉ ื-gpt ืื gemini ืฉืืช ืืชืืืื ืืืคืืก ืื:
id_list_message=t-{the text without '-' '.' '"'}&read=m-3230=confirm,,1,1,,NO,,,,12,,,,,no
ืืื ืืชืงืื ืคืจืืืจ confirm ืฉืืขืจื ืฉืื ืืื 1 ืื ืืชืืืื ืืืืฉืจ ืืื 2 ืื ืืฉ ืืชืืื ืืืืฉ ืืืืืคืืก ืฉืื ืืช ืืชืืืื ืืืืขืื
-
ืชืืื! ืขืืื ืืขืืื
-
ืืื ืืขืืืจืื ืืืืกืืืขืื ืืคืืจืื - ืืืื ืืืฉืื ืืชื ืื ืืืขืืืช ืืืจืื ืขื ืืืืจืืช ืืจืืจืืช ืื ืืฉืื ืืื ืฉืืืื ืืื ืืืื ืชืืขืืช ืื ืืื ืฉืื ืืืืข ืขืืืื ืืืชืขืกืง ืขื ืื ืืงืืืื.
ืชืืื ืืฉืื ืชืืื!!! -
ืืฉ ืืื ืื ืnodejs?