from Perceptrix.engine import perceptrix, robotix, identify_objects_from_text, search_keyword from CircumSpect import answer_question, find_object_description, locate_object from flask import Flask, request, jsonify import numpy as np import threading import whisper import cv2 import os model = whisper.load_model("base") def transcribe(audio): result = model.transcribe(audio) transcription = result['text'] print(transcription) return transcription app = Flask(__name__) @app.route('/locate_object', methods=['POST']) def display_image(): try: image_data = request.json['image_data'] prompt = request.json['prompt'] image_data = np.array(image_data, dtype=np.uint8) image = cv2.imdecode(image_data, cv2.IMREAD_COLOR) cv2.imwrite('API.jpg', image) answer, annotated_image = locate_object(prompt, "API.jpg") return jsonify({'message': answer, 'annotated_image': annotated_image}) except Exception as e: return jsonify({'error': str(e)}) @app.route('/vqa', methods=['POST']) def display_image(): try: image_data = request.json['image_data'] prompt = request.json['prompt'] image_data = np.array(image_data, dtype=np.uint8) image = cv2.imdecode(image_data, cv2.IMREAD_COLOR) cv2.imwrite('API.jpg', image) answer = answer_question(prompt, "API.jpg") return jsonify({'message': answer}) except Exception as e: return jsonify({'error': str(e)}) @app.route('/object_description', methods=['POST']) def display_image(): try: image_data = request.json['image_data'] image_data = np.array(image_data, dtype=np.uint8) image = cv2.imdecode(image_data, cv2.IMREAD_COLOR) cv2.imwrite('API.jpg', image) answer = find_object_description("API.jpg") return jsonify({'message': answer}) except Exception as e: return jsonify({'error': str(e)}) @app.route('/perceptrix', methods=['POST']) def display_image(): try: prompt = request.json['prompt'] answer = perceptrix(prompt) return jsonify({'message': answer}) except Exception as e: return jsonify({'error': str(e)}) @app.route('/robotix', methods=['POST']) def display_image(): try: prompt = request.json['prompt'] answer = robotix(prompt) return jsonify({'message': answer}) except Exception as e: return jsonify({'error': str(e)}) @app.route('/search_keyword', methods=['POST']) def display_image(): try: prompt = request.json['prompt'] answer = search_keyword(prompt) return jsonify({'message': answer}) except Exception as e: return jsonify({'error': str(e)}) @app.route('/identify_objects_from_text', methods=['POST']) def display_image(): try: prompt = request.json['prompt'] answer = identify_objects_from_text(prompt) return jsonify({'message': answer}) except Exception as e: return jsonify({'error': str(e)}) @app.route('/transcribe', methods=['POST']) def upload_audio(): audio_file = request.files['audio'] filename = os.path.join("database", audio_file.filename) audio_file.save(filename) return jsonify({'message': transcribe(filename)}) def run_app(): app.run(port=7777) if __name__ == "__main__": runner = threading.Thread(target=run_app) runner.start()