forked from React-Group/interstellar_ai
		
	Fixed the Backend and added Voice recognition API
This commit is contained in:
		
							parent
							
								
									3588a4b703
								
							
						
					
					
						commit
						de4a6145af
					
				
					 3 changed files with 27 additions and 11 deletions
				
			
		
							
								
								
									
										32
									
								
								py/api.py
									
										
									
									
									
								
							
							
						
						
									
										32
									
								
								py/api.py
									
										
									
									
									
								
							|  | @ -4,6 +4,7 @@ import secrets | ||||||
| import threading | import threading | ||||||
| from ai import AI | from ai import AI | ||||||
| from db import DB | from db import DB | ||||||
|  | from voice import VoiceRecognition | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class API: | class API: | ||||||
|  | @ -13,18 +14,19 @@ class API: | ||||||
|         self.ai_response = {} |         self.ai_response = {} | ||||||
|         self.ai = AI() |         self.ai = AI() | ||||||
|         self.db = DB() |         self.db = DB() | ||||||
|  |         self.voice = VoiceRecognition() | ||||||
|         self.db.load_database() |         self.db.load_database() | ||||||
|         self.ai_response_lock = threading.Lock() |         self.ai_response_lock = threading.Lock() | ||||||
|         CORS(self.app) |         CORS(self.app) | ||||||
| 
 | 
 | ||||||
|     def run(self): |     def run(self): | ||||||
|         @self.app.route('/interstellar/api/ai_create', methods=['GET']) |         @self.app.route('/interstellar_ai/api/ai_create', methods=['GET']) | ||||||
|         def create_ai(): |         def create_ai(): | ||||||
|             access_token = secrets.token_urlsafe(self.crypt_size) |             access_token = secrets.token_urlsafe(self.crypt_size) | ||||||
|             self.ai_response[access_token] = "" |             self.ai_response[access_token] = "" | ||||||
|             return jsonify({'status': 200, 'access_token': access_token}) |             return jsonify({'status': 200, 'access_token': access_token}) | ||||||
| 
 | 
 | ||||||
|         @self.app.route('/interstellar/api/ai_send', methods=['POST']) |         @self.app.route('/interstellar_ai/api/ai_send', methods=['POST']) | ||||||
|         def send_ai(): |         def send_ai(): | ||||||
|             data = request.get_json() |             data = request.get_json() | ||||||
|             messages = data.get('messages') |             messages = data.get('messages') | ||||||
|  | @ -63,27 +65,39 @@ class API: | ||||||
| 
 | 
 | ||||||
|             return jsonify({'status': 401, 'error': 'Invalid AI model type'}) |             return jsonify({'status': 401, 'error': 'Invalid AI model type'}) | ||||||
| 
 | 
 | ||||||
|         @self.app.route('/interstellar/api/ai_get', methods=['GET']) |         @self.app.route('/interstellar_ai/api/ai_get', methods=['GET']) | ||||||
|         def get_ai(): |         def get_ai(): | ||||||
|             data = request.args.get('access_token') |             data = request.args.get('access_token') | ||||||
|             if data not in self.ai_response: |             if data not in self.ai_response: | ||||||
|                 return jsonify({'status': 401, 'error': 'Invalid access token'}) |                 return jsonify({'status': 401, 'error': 'Invalid access token'}) | ||||||
|             return jsonify({'status': 200, 'response': self.ai_response[data]}) |             return jsonify({'status': 200, 'response': self.ai_response[data]}) | ||||||
| 
 | 
 | ||||||
|         @self.app.route('/interstellar/api/db', methods=['POST']) |         @self.app.route('/interstellar_ai/db', methods=['POST']) | ||||||
|         def db_manipulate(): |         def db_manipulate(): | ||||||
|             action = request.args.get('action') |             action = request.args.get('action') | ||||||
|             data = request.args.get('data') |             data = request.args.get('data') | ||||||
|             if action == "create_account": |             if action == "create_account": | ||||||
|                 self.db.add_user(data) |                 return jsonify({'status': 200, 'response': self.db.add_user(data)}) | ||||||
|             elif action == "change_password": |             elif action == "change_password": | ||||||
|                 self.db.update_password(data) |                 return jsonify({'status': 200, 'response': self.db.update_password(data)}) | ||||||
|             elif action == "get_data": |             elif action == "get_data": | ||||||
|                 self.db.get_data(data) |                 return jsonify({'status': 200, 'response': self.db.get_data(data)}) | ||||||
|             elif action == "change_data": |             elif action == "change_data": | ||||||
|                 self.db.change_data(data) |                 return jsonify({'status': 200, 'response': self.db.change_data(data)}) | ||||||
|             elif action == "check_credentials": |             elif action == "check_credentials": | ||||||
|                 self.db.check_credentials(data) |                 return jsonify({'status': 200, 'response': self.db.check_credentials(data)}) | ||||||
|  | 
 | ||||||
|  |             return jsonify({'status': 401, 'response': "Invalid action"}) | ||||||
|  | 
 | ||||||
|  |         @self.app.route('/interstellar_ai/api/voice_recognition', methods=['POST']) | ||||||
|  |         def db_manipulate(): | ||||||
|  |             recognition_type = request.args.get('type') | ||||||
|  |             audio = request.args.get('audio_data') | ||||||
|  |             option = request.args.get('option') | ||||||
|  |             if recognition_type == "basic": | ||||||
|  |                 return jsonify({'status': 200, 'response': self.voice.basic_recognition(audio, option)}) | ||||||
|  | 
 | ||||||
|  |             return jsonify({'status': 401, 'response': "Invalid type"}) | ||||||
| 
 | 
 | ||||||
|         self.app.run(debug=True, host='0.0.0.0', port=5000) |         self.app.run(debug=True, host='0.0.0.0', port=5000) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,5 +7,7 @@ class VoiceRecognition: | ||||||
|         r = sr.Recognizer() |         r = sr.Recognizer() | ||||||
|         if option == "online": |         if option == "online": | ||||||
|             return r.recognize_google_cloud(audio) |             return r.recognize_google_cloud(audio) | ||||||
|         if option == "offline": |         elif option == "offline": | ||||||
|             return r.recognize_sphinx(audio) |             return r.recognize_sphinx(audio) | ||||||
|  | 
 | ||||||
|  |         return False | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Patrick_Pluto
						Patrick_Pluto