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
|
||||
from ai import AI
|
||||
from db import DB
|
||||
from voice import VoiceRecognition
|
||||
|
||||
|
||||
class API:
|
||||
|
@ -13,18 +14,19 @@ class API:
|
|||
self.ai_response = {}
|
||||
self.ai = AI()
|
||||
self.db = DB()
|
||||
self.voice = VoiceRecognition()
|
||||
self.db.load_database()
|
||||
self.ai_response_lock = threading.Lock()
|
||||
CORS(self.app)
|
||||
|
||||
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():
|
||||
access_token = secrets.token_urlsafe(self.crypt_size)
|
||||
self.ai_response[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():
|
||||
data = request.get_json()
|
||||
messages = data.get('messages')
|
||||
|
@ -63,27 +65,39 @@ class API:
|
|||
|
||||
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():
|
||||
data = request.args.get('access_token')
|
||||
if data not in self.ai_response:
|
||||
return jsonify({'status': 401, 'error': 'Invalid access token'})
|
||||
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():
|
||||
action = request.args.get('action')
|
||||
data = request.args.get('data')
|
||||
if action == "create_account":
|
||||
self.db.add_user(data)
|
||||
return jsonify({'status': 200, 'response': self.db.add_user(data)})
|
||||
elif action == "change_password":
|
||||
self.db.update_password(data)
|
||||
return jsonify({'status': 200, 'response': self.db.update_password(data)})
|
||||
elif action == "get_data":
|
||||
self.db.get_data(data)
|
||||
return jsonify({'status': 200, 'response': self.db.get_data(data)})
|
||||
elif action == "change_data":
|
||||
self.db.change_data(data)
|
||||
return jsonify({'status': 200, 'response': self.db.change_data(data)})
|
||||
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)
|
||||
|
||||
|
|
|
@ -7,5 +7,7 @@ class VoiceRecognition:
|
|||
r = sr.Recognizer()
|
||||
if option == "online":
|
||||
return r.recognize_google_cloud(audio)
|
||||
if option == "offline":
|
||||
elif option == "offline":
|
||||
return r.recognize_sphinx(audio)
|
||||
|
||||
return False
|
||||
|
|
Loading…
Reference in a new issue