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")
|