forked from React-Group/interstellar_ai
Compare commits
3 commits
edc7260966
...
4e878b28f3
Author | SHA1 | Date | |
---|---|---|---|
4e878b28f3 | |||
|
6d03e1fafc | ||
|
42b12f73b4 |
4 changed files with 25 additions and 4 deletions
|
@ -6,6 +6,7 @@ from ai import AI
|
||||||
from db import DB
|
from db import DB
|
||||||
from weather import Weather
|
from weather import Weather
|
||||||
from voice import VoiceRecognition
|
from voice import VoiceRecognition
|
||||||
|
from tts import TTS
|
||||||
|
|
||||||
|
|
||||||
class API:
|
class API:
|
||||||
|
@ -17,6 +18,7 @@ class API:
|
||||||
self.db = DB()
|
self.db = DB()
|
||||||
self.weather = Weather()
|
self.weather = Weather()
|
||||||
self.voice = VoiceRecognition()
|
self.voice = VoiceRecognition()
|
||||||
|
self.tts = TTS()
|
||||||
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)
|
||||||
|
@ -98,7 +100,7 @@ class API:
|
||||||
@self.app.route('/interstellar_ai/api/voice_recognition', methods=['POST'])
|
@self.app.route('/interstellar_ai/api/voice_recognition', methods=['POST'])
|
||||||
def voice_recognition():
|
def voice_recognition():
|
||||||
recognition_type = request.args.get('type')
|
recognition_type = request.args.get('type')
|
||||||
audio = request.args.get('audio_data')
|
audio = request.files['audio']
|
||||||
option = request.args.get('option')
|
option = request.args.get('option')
|
||||||
if recognition_type == "basic":
|
if recognition_type == "basic":
|
||||||
return jsonify({'status': 200, 'response': self.voice.basic_recognition(audio, option)})
|
return jsonify({'status': 200, 'response': self.voice.basic_recognition(audio, option)})
|
||||||
|
@ -113,6 +115,11 @@ class API:
|
||||||
|
|
||||||
self.app.run(debug=True, host='0.0.0.0', port=5000)
|
self.app.run(debug=True, host='0.0.0.0', port=5000)
|
||||||
|
|
||||||
|
@self.app.route('/interstellar_ai/api/tts', methods=['POST'])
|
||||||
|
def tts():
|
||||||
|
text = request.args.get('text')
|
||||||
|
return jsonify({'status': 200, 'response': self.tts.gen_tts(text)})
|
||||||
|
|
||||||
|
|
||||||
api = API()
|
api = API()
|
||||||
api.run()
|
api.run()
|
||||||
|
|
|
@ -11,3 +11,5 @@ google-cloud-speech
|
||||||
google-generativeai
|
google-generativeai
|
||||||
python-weather
|
python-weather
|
||||||
pycouchdb
|
pycouchdb
|
||||||
|
pyttsx3
|
||||||
|
pip-licenses
|
10
py/tts.py
Normal file
10
py/tts.py
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
import pyttsx3
|
||||||
|
|
||||||
|
|
||||||
|
class TTS:
|
||||||
|
@staticmethod
|
||||||
|
def gen_tts(text):
|
||||||
|
engine = pyttsx3.init()
|
||||||
|
engine.setProperty('rate', 70)
|
||||||
|
engine.say(text)
|
||||||
|
engine.runAndWait()
|
|
@ -6,8 +6,10 @@ class VoiceRecognition:
|
||||||
def basic_recognition(audio, option):
|
def basic_recognition(audio, option):
|
||||||
r = sr.Recognizer()
|
r = sr.Recognizer()
|
||||||
if option == "online":
|
if option == "online":
|
||||||
return r.recognize_google_cloud(audio)
|
with audio as source:
|
||||||
|
return r.recognize_google_cloud(source)
|
||||||
elif option == "offline":
|
elif option == "offline":
|
||||||
return r.recognize_sphinx(audio)
|
with audio as source:
|
||||||
|
return r.recognize_sphinx(source)
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
Loading…
Reference in a new issue