Browse Source

new logging and replace some bools

metya 2 năm trước cách đây
mục cha
commit
1d51516fab
2 tập tin đã thay đổi với 27 bổ sung22 xóa
  1. 23 18
      app.py
  2. 4 4
      templates/index.html

+ 23 - 18
app.py

@@ -33,6 +33,7 @@ class State:
     need_generation = True
     new_audio = False
     need_audio = False
+    need_generation_from_client = True
 
 state = State()
 
@@ -46,21 +47,22 @@ def send_data():
     # Получаем данные из запроса
     data = request.form['data']
     need_generation = request.form['state']
-    state.need_generation = (need_generation in ["true", 'True'])
+    state.need_generation_from_client = (need_generation in ["true", 'True'])
     # Обработка полученных данных
     detections = json.loads(data)
     if detections['face']:
         if state.count < 0 or state.new_audio: state.count = 0
-        if state.count > 5 and state.need_generation:
+        if state.count > 5 and state.need_generation and state.need_generation_from_client:
+            app.logger.info(f"time for generation {state.count=}, {state.need_generation=}, {state.need_generation_from_client=}")
             state.count = 0
             # emotion = max(set(state['emotion']), key=state['emotion'].count), 
             # sex = max(set(state['gender']), key=state['gender'].count), 
             # age = sum(state['age'])/len(state['age']),
             state.emotion, state.age, state.gender = [], [], []
-            emotion = detections['face'][0]['age']
+            emotion = detections['face'][0]['emotion']
             sex = detections['face'][0]['gender']
             age = detections['face'][0]['age']
-            app.logger.info(f'{emotion=}, {sex=}, {age=}') 
+            app.logger.info(f'\n{emotion=}, \n{sex=}, \n{age=}') 
             state.prompt = generate_prompt(emotion, age, sex)
             state.generation_text = generate_text(state.prompt) 
         elif detections['face'][0]['size'][0] > 200:
@@ -79,20 +81,12 @@ def send_data():
 
     return data
 
-@app.route('/generate_audio', methods = ["GET", "POST"])
-def generate_audio():
-    app.logger.info('checking need generation')
+@app.route('/check_audio', methods = ["GET", "POST"])
+def check_audio():
+    app.logger.info(f'checking need generation {state.need_generation=}, {state.need_audio=}')
 
     if state.need_audio:
-        app.logger.info('starting audio generation')
-        audio_paths = model.save_wav(text=state.generation_text,
-                                    speaker=speaker,
-                                    sample_rate=sample_rate,
-                                    audio_path="static/audio.wav")
-        app.logger.info('generating audio is done')
-        state.new_audio = True
-        state.need_generation = False
-        state.need_audio = False
+        generate_audio(state.generation_text)
     else:
         state.new_audio = False
         
@@ -105,7 +99,7 @@ def generate_audio():
         'text': state.generation_text,
         'prompt': state.prompt
     }
-
+    app.logger.info("response if ready")
     return jsonify(response)
 
 @app.route("/audio.wav")
@@ -143,6 +137,7 @@ def generate_prompt(emotion, age, sex):
     return prompt
 
 def generate_text(prompt):
+    state.need_generation = False
     app.logger.info("start generating text from openai")
     response = openai.ChatCompletion.create(
                         model="gpt-3.5-turbo",
@@ -152,11 +147,21 @@ def generate_text(prompt):
                                 {"role": "system", "content": "Ты — это арт объект выставки про взаимодействие машины и человека."},
                                 {"role": "user", "content": prompt},
                                 ])
-    state.need_generation = False
     state.need_audio = True
     app.logger.info("openai generation is done")
     return response['choices'][0]['message']['content'] # type: ignore
 
+def generate_audio(sample_text):
+    app.logger.info('starting audio generation')
+    state.need_audio = False
+    state.need_generation = False
+    audio_paths = model.save_wav(text=sample_text,
+                                speaker=speaker,
+                                sample_rate=sample_rate,
+                                audio_path="static/audio.wav")
+    app.logger.info('generating audio is done')
+    state.new_audio = True
+
 
 if __name__ == '__main__':
     app.logger.info('start app')

+ 4 - 4
templates/index.html

@@ -89,10 +89,10 @@
 
             async function checkForNewAudio() {
                 $.ajax({
-                    url: '/generate_audio',
+                    url: '/check_audio',
                     method: 'GET',
                     success: function (response) {
-                        need_generation = response.need_generation;
+                        // need_generation = response.need_generation;
                         if (response.newAudio && need_playing) {
                             console.log(response.newAudio)
                             // Если есть новый аудиофайл, проигрывайте его на странице
@@ -140,7 +140,7 @@
                     else human.webcam.pause();
                 };
                 await setInterval(drawLoop, 30); // start draw loop
-                await setInterval(send_data, 2000);
+                await setInterval(send_data, 1000);
                 await setInterval(checkForNewAudio, 5000)
             };
 
@@ -152,4 +152,4 @@
         </script>
 </body>
 
-</html>
+</html>