Skip to content

Commit f3e1d6b

Browse files
committed
Added NeoPixel and Sleep code
1 parent 23b2a4f commit f3e1d6b

File tree

4 files changed

+196
-57
lines changed

4 files changed

+196
-57
lines changed

Magic_AI_Storybook/bookprompt.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Write a complete story with a title and a body of approximately
2+
{STORY_WORD_LENGTH} words long and a happy ending. The specific
3+
story request is "{STORY_REQUEST}".

Magic_AI_Storybook/keys.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[openai]
2+
OPENAI_API_KEY = sk-...

Magic_AI_Storybook/listener.py

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,42 @@ def __init__(self, energy_threshold=1000, phrase_timeout=3.0, record_timeout=30)
2424
self.data_queue = Queue()
2525
self.mic_dev_index = None
2626

27-
def listen(self):
27+
def listen(self, ready_callback=None):
28+
self.phrase_complete = False
29+
start = datetime.utcnow()
30+
self.start_listening()
31+
if ready_callback:
32+
ready_callback()
33+
while (
34+
self.listener_handle
35+
and not self.speech_waiting()
36+
or not self.phrase_complete
37+
):
38+
if self.phrase_time and start - self.phrase_time > timedelta(
39+
seconds=self.phrase_timeout
40+
):
41+
self.last_sample = bytes()
42+
self.phrase_complete = True
43+
self.phrase_time = start
44+
self.stop_listening()
45+
46+
def start_listening(self):
2847
if not self.listener_handle:
2948
with sr.Microphone() as source:
30-
print(source.stream)
3149
self.recognizer.adjust_for_ambient_noise(source)
32-
audio = self.recognizer.listen(source, timeout=self.record_timeout)
33-
data = audio.get_raw_data()
34-
self.data_queue.put(data)
50+
self.listener_handle = self.recognizer.listen_in_background(
51+
sr.Microphone(),
52+
self.record_callback,
53+
phrase_time_limit=self.record_timeout,
54+
)
55+
56+
def stop_listening(self, wait_for_stop=False):
57+
if self.listener_handle:
58+
self.listener_handle(wait_for_stop=wait_for_stop)
59+
self.listener_handle = None
60+
61+
def is_listening(self):
62+
return self.listener_handle is not None
3563

3664
def record_callback(self, _, audio: sr.AudioData) -> None:
3765
# Grab the raw bytes and push it into the thread safe queue.

0 commit comments

Comments
 (0)