Spaces:
Runtime error
Runtime error
try improved life management
Browse files- app.py +24 -12
- charles_actor.py +4 -0
app.py
CHANGED
|
@@ -15,6 +15,7 @@ import torch
|
|
| 15 |
from sample_utils.turn import get_ice_servers
|
| 16 |
import json
|
| 17 |
from typing import List
|
|
|
|
| 18 |
|
| 19 |
st.set_page_config(layout="wide")
|
| 20 |
|
|
@@ -28,8 +29,7 @@ webrtc_ctx = None
|
|
| 28 |
|
| 29 |
# Initialize Ray
|
| 30 |
import ray
|
| 31 |
-
|
| 32 |
-
import subprocess
|
| 33 |
try:
|
| 34 |
subprocess.check_output(["ray", "start", "--head"])
|
| 35 |
except Exception as e:
|
|
@@ -40,12 +40,11 @@ if not ray.is_initialized():
|
|
| 40 |
ray.init(ray_address, namespace="project_charles")
|
| 41 |
else:
|
| 42 |
ray.init(namespace="project_charles")
|
| 43 |
-
import platform
|
| 44 |
-
print (f"platform:{platform.system()}")
|
| 45 |
-
if platform.system() == 'Linux':
|
| 46 |
-
charles_actor_proc = subprocess.Popen(["python3", "charles_actor.py"])
|
| 47 |
|
| 48 |
|
|
|
|
|
|
|
|
|
|
| 49 |
async def main():
|
| 50 |
st.title("Project Charles")
|
| 51 |
|
|
@@ -60,9 +59,13 @@ async def main():
|
|
| 60 |
charles_actor_debug_output = st.empty()
|
| 61 |
environment_state_ouput = st.empty()
|
| 62 |
with nested_col3:
|
| 63 |
-
if st.button('Reboot
|
| 64 |
-
st.write('
|
| 65 |
-
subprocess.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
|
| 67 |
with col2:
|
| 68 |
if "streamlit_av_queue" not in st.session_state:
|
|
@@ -103,7 +106,7 @@ async def main():
|
|
| 103 |
if "streamlit_av_queue" in st.session_state:
|
| 104 |
st.session_state.streamlit_av_queue.set_looking_listening(looking, listening)
|
| 105 |
if not webrtc_ctx.state.playing:
|
| 106 |
-
system_one_audio_status.write("
|
| 107 |
await asyncio.sleep(0.1)
|
| 108 |
continue
|
| 109 |
if charles_actor is None:
|
|
@@ -111,14 +114,23 @@ async def main():
|
|
| 111 |
charles_actor = ray.get_actor("CharlesActor")
|
| 112 |
system_one_audio_status.write("Charles is here.")
|
| 113 |
except ValueError as e:
|
| 114 |
-
|
| 115 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
if charles_actor is not None:
|
| 117 |
try:
|
| 118 |
# new_environment_state = await charles_actor.get_environment_state.remote()
|
| 119 |
# environment_state_ouput.markdown(f"{new_environment_state}")
|
| 120 |
charles_debug_str = await charles_actor.get_charles_actor_debug_output.remote()
|
| 121 |
charles_actor_debug_output.markdown(charles_debug_str)
|
|
|
|
|
|
|
| 122 |
except Exception as e:
|
| 123 |
# assume we disconnected
|
| 124 |
charles_actor = None
|
|
|
|
| 15 |
from sample_utils.turn import get_ice_servers
|
| 16 |
import json
|
| 17 |
from typing import List
|
| 18 |
+
import subprocess
|
| 19 |
|
| 20 |
st.set_page_config(layout="wide")
|
| 21 |
|
|
|
|
| 29 |
|
| 30 |
# Initialize Ray
|
| 31 |
import ray
|
| 32 |
+
def init_ray():
|
|
|
|
| 33 |
try:
|
| 34 |
subprocess.check_output(["ray", "start", "--head"])
|
| 35 |
except Exception as e:
|
|
|
|
| 40 |
ray.init(ray_address, namespace="project_charles")
|
| 41 |
else:
|
| 42 |
ray.init(namespace="project_charles")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
|
| 45 |
+
if not ray.is_initialized():
|
| 46 |
+
init_ray()
|
| 47 |
+
|
| 48 |
async def main():
|
| 49 |
st.title("Project Charles")
|
| 50 |
|
|
|
|
| 59 |
charles_actor_debug_output = st.empty()
|
| 60 |
environment_state_ouput = st.empty()
|
| 61 |
with nested_col3:
|
| 62 |
+
if st.button('Reboot Charles'):
|
| 63 |
+
st.write('Killing RAY...')
|
| 64 |
+
subprocess.check_output(["ray", "start", "--head"])
|
| 65 |
+
st.write('Restarting RAY...')
|
| 66 |
+
init_ray()
|
| 67 |
+
charles_actor = None
|
| 68 |
+
st.write('Reboot Charles')
|
| 69 |
|
| 70 |
with col2:
|
| 71 |
if "streamlit_av_queue" not in st.session_state:
|
|
|
|
| 106 |
if "streamlit_av_queue" in st.session_state:
|
| 107 |
st.session_state.streamlit_av_queue.set_looking_listening(looking, listening)
|
| 108 |
if not webrtc_ctx.state.playing:
|
| 109 |
+
system_one_audio_status.write("Camera has stopped.")
|
| 110 |
await asyncio.sleep(0.1)
|
| 111 |
continue
|
| 112 |
if charles_actor is None:
|
|
|
|
| 114 |
charles_actor = ray.get_actor("CharlesActor")
|
| 115 |
system_one_audio_status.write("Charles is here.")
|
| 116 |
except ValueError as e:
|
| 117 |
+
charles_actor_proc = subprocess.Popen(["python3", "charles_actor.py"])
|
| 118 |
+
system_one_audio_status.write("Creating an instance of Charles...")
|
| 119 |
+
# import platform
|
| 120 |
+
# print (f"platform:{platform.system()}")
|
| 121 |
+
# if platform.system() == 'Linux':
|
| 122 |
+
# charles_actor_proc = subprocess.Popen(["python3", "charles_actor.py"])
|
| 123 |
+
# system_one_audio_status.write("Creating Charles.")
|
| 124 |
+
# else:
|
| 125 |
+
# system_one_audio_status.write("Charles is sleeping.")
|
| 126 |
if charles_actor is not None:
|
| 127 |
try:
|
| 128 |
# new_environment_state = await charles_actor.get_environment_state.remote()
|
| 129 |
# environment_state_ouput.markdown(f"{new_environment_state}")
|
| 130 |
charles_debug_str = await charles_actor.get_charles_actor_debug_output.remote()
|
| 131 |
charles_actor_debug_output.markdown(charles_debug_str)
|
| 132 |
+
state = await charles_actor.get_state.remote()
|
| 133 |
+
system_one_audio_status.write(state)
|
| 134 |
except Exception as e:
|
| 135 |
# assume we disconnected
|
| 136 |
charles_actor = None
|
charles_actor.py
CHANGED
|
@@ -29,17 +29,20 @@ class CharlesActor:
|
|
| 29 |
async def _initalize_resources(self):
|
| 30 |
# Initialize resources
|
| 31 |
print("000 - create StreamlitAVQueue")
|
|
|
|
| 32 |
from streamlit_av_queue import StreamlitAVQueue
|
| 33 |
self._streamlit_av_queue = StreamlitAVQueue()
|
| 34 |
self._out_audio_queue = self._streamlit_av_queue.get_out_audio_queue()
|
| 35 |
|
| 36 |
print("001 - create RespondToPromptActor")
|
|
|
|
| 37 |
from respond_to_prompt_actor import RespondToPromptActor
|
| 38 |
self._environment_state_actor = EnvironmentStateActor.remote()
|
| 39 |
self._agent_state_actor = AgentStateActor.remote()
|
| 40 |
self._respond_to_prompt_actor = RespondToPromptActor.remote(self._environment_state_actor, self._out_audio_queue)
|
| 41 |
|
| 42 |
print("002 - create SpeechToTextVoskActor")
|
|
|
|
| 43 |
from speech_to_text_vosk_actor import SpeechToTextVoskActor
|
| 44 |
self._speech_to_text_actor = SpeechToTextVoskActor.remote("small")
|
| 45 |
# self._speech_to_text_actor = SpeechToTextVoskActor.remote("big")
|
|
@@ -50,6 +53,7 @@ class CharlesActor:
|
|
| 50 |
]
|
| 51 |
|
| 52 |
print("003 - create Prototypes")
|
|
|
|
| 53 |
from prototypes import Prototypes
|
| 54 |
self._prototypes = Prototypes()
|
| 55 |
print("010")
|
|
|
|
| 29 |
async def _initalize_resources(self):
|
| 30 |
# Initialize resources
|
| 31 |
print("000 - create StreamlitAVQueue")
|
| 32 |
+
self._state = "000 - creating StreamlitAVQueue"
|
| 33 |
from streamlit_av_queue import StreamlitAVQueue
|
| 34 |
self._streamlit_av_queue = StreamlitAVQueue()
|
| 35 |
self._out_audio_queue = self._streamlit_av_queue.get_out_audio_queue()
|
| 36 |
|
| 37 |
print("001 - create RespondToPromptActor")
|
| 38 |
+
self._state = "001 - creating RespondToPromptActor"
|
| 39 |
from respond_to_prompt_actor import RespondToPromptActor
|
| 40 |
self._environment_state_actor = EnvironmentStateActor.remote()
|
| 41 |
self._agent_state_actor = AgentStateActor.remote()
|
| 42 |
self._respond_to_prompt_actor = RespondToPromptActor.remote(self._environment_state_actor, self._out_audio_queue)
|
| 43 |
|
| 44 |
print("002 - create SpeechToTextVoskActor")
|
| 45 |
+
self._state = "002 - creating SpeechToTextVoskActor"
|
| 46 |
from speech_to_text_vosk_actor import SpeechToTextVoskActor
|
| 47 |
self._speech_to_text_actor = SpeechToTextVoskActor.remote("small")
|
| 48 |
# self._speech_to_text_actor = SpeechToTextVoskActor.remote("big")
|
|
|
|
| 53 |
]
|
| 54 |
|
| 55 |
print("003 - create Prototypes")
|
| 56 |
+
self._state = "003 - creating Prototypes"
|
| 57 |
from prototypes import Prototypes
|
| 58 |
self._prototypes = Prototypes()
|
| 59 |
print("010")
|