working on theoretical API examples
This commit is contained in:
47
src/khk-working/theoretical/01-say-one-thing.py
Normal file
47
src/khk-working/theoretical/01-say-one-thing.py
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
from dailyai.services.transport.DailyTransport import DailyTransportService
|
||||
from dailyai.services.tts.AzureTTSService import AzureTTSService
|
||||
|
||||
|
||||
transport = None
|
||||
tts = None
|
||||
|
||||
|
||||
def main():
|
||||
global transport
|
||||
global tts
|
||||
|
||||
# create a transport service object using environment variables for
|
||||
# the transport service's API key, room url, and any other configuration.
|
||||
# services can all define and document the environment variables they use.
|
||||
# services all also take an optional config object that is used instead of
|
||||
# environment variables.
|
||||
#
|
||||
# the abstract transport service APIs presumably can map pretty closely
|
||||
# to the daily-python basic API
|
||||
transport = DailyTransportService()
|
||||
|
||||
# similarly, create a tts service
|
||||
tts = AzureTTSService()
|
||||
|
||||
# ask the transport to create a local audio "device"/queue for
|
||||
# chunks of audio to play sequentially. the "mic" object is a handle
|
||||
# we can use to inspect and control the queue if we need to. in this
|
||||
# case we will pipe into this queue from the tts service
|
||||
mic = transport.audio_queue()
|
||||
tts.set_output(mic)
|
||||
|
||||
transport.on("error", lambda e: print(e))
|
||||
transport.on("joined-meeting", say_one_thing)
|
||||
transport.start()
|
||||
|
||||
|
||||
def say_one_thing():
|
||||
# say one thing, then leave
|
||||
tts.run_tts("hello world")
|
||||
transport.on("audio-queue-empty", shutdown)
|
||||
|
||||
|
||||
def shutdown():
|
||||
transport.stop()
|
||||
tts.close()
|
||||
47
src/khk-working/theoretical/02-llm-say-one-thing.py
Normal file
47
src/khk-working/theoretical/02-llm-say-one-thing.py
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
from dailyai.services.transport.DailyTransport import DailyTransportService
|
||||
from dailyai.services.llm.AzureLLMService import AzureLLMService
|
||||
from dailyai.services.tts.AzureTTSService import AzureTTSService
|
||||
|
||||
transport = None
|
||||
mic = None
|
||||
llm = None
|
||||
tts = None
|
||||
|
||||
|
||||
def main():
|
||||
global transport
|
||||
global mic
|
||||
global llm
|
||||
global tts
|
||||
|
||||
transport = DailyTransportService()
|
||||
llm = AzureLLMService()
|
||||
tts = AzureTTSService()
|
||||
mic = transport.audio_queue()
|
||||
tts.set_output(mic)
|
||||
|
||||
# similarly, we can tell the llm to pipe infeference output to our tts
|
||||
# service. the design idea here is that any time we call llm.run_llm()
|
||||
# we are creating a cancelable inference call, and somehow behind the
|
||||
# scenes the full pipeline from the llm to the tts service to the
|
||||
# transport's audio queue is managed in such a way as to be
|
||||
# introspectible and cancelable. also, instead of piping the
|
||||
# output to the tts service directly, we could pipe it through an
|
||||
# adapter object that does chunking or processing or whatever.
|
||||
llm.set_output(tts)
|
||||
|
||||
transport.on("error", lambda e: print(e))
|
||||
transport.on("joined-meeting", make_one_inference_call)
|
||||
transport.start()
|
||||
|
||||
|
||||
def make_one_inference_call():
|
||||
# ask our llm to say one thing, then leave
|
||||
llm.run_llm("tell me a joke about llamas")
|
||||
transport.on("audio-queue-empty", shutdown)
|
||||
|
||||
|
||||
def shutdown():
|
||||
transport.stop()
|
||||
tts.close()
|
||||
14
src/khk-working/theoretical/notes.txt
Normal file
14
src/khk-working/theoretical/notes.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
-01 just say one thing and exit
|
||||
-02 llm say one thing and exit
|
||||
-03 send "still frame" video
|
||||
-04 manual intro utterance and then llm say one thing and exit
|
||||
-05 queue 10 spoken image prompts and synchronize the audio with the generated image frames
|
||||
-06 chat: llm speak and respond (ignoring transcription input while speaking)
|
||||
-07 chat: llm speak and respond (interruptible)
|
||||
-08 two llms arguing about a topic (in the same process)
|
||||
-09 two llms arguing about a topic (two separate bots)
|
||||
-10 listen for wake word before sending commands to llm
|
||||
-11 06 plus sound effects queued from sound file
|
||||
-12 06 plus background music played through a second "mic" device
|
||||
|
||||
Reference in New Issue
Block a user