From 63c443f64821f7902449f7f80fdaef4f6715722e Mon Sep 17 00:00:00 2001 From: maglore9900 Date: Wed, 2 Oct 2024 22:52:22 -0400 Subject: [PATCH] updated readme --- README.md | 4 ++++ images/flow.png | Bin 0 -> 29216 bytes 2 files changed, 4 insertions(+) create mode 100644 images/flow.png diff --git a/README.md b/README.md index 3601d10..0919391 100644 --- a/README.md +++ b/README.md @@ -93,3 +93,7 @@ If you want to modify the wake word look in main.py, you will see the logic wher Max has a unique stutter glitch and I recreated this by modifying the voice stream as its being received. If you want to use all-talk with a different model or just dont want glitchiness then comment out `graph.spk.glitch_stream_output(response)` in main.py and uncomment `graph.spk.stream(response)`. for a custom voice selection look at `modules/speak.py` under the function `stream` and set the voice model there. I will probably make this easier, aka in the .env at some point. + +# Process Flow + +![Alt text](images/flow.png) diff --git a/images/flow.png b/images/flow.png new file mode 100644 index 0000000000000000000000000000000000000000..ffab513f9a6f69b568c2c4c163a78f6044241508 GIT binary patch literal 29216 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