https://github.com/fortyseven/aimee
Realtime LLM conversation bot using Ollama, RealtimeTTS and RealtimeSTT
https://github.com/fortyseven/aimee
ai chatbot llm ollama
Last synced: 3 months ago
JSON representation
Realtime LLM conversation bot using Ollama, RealtimeTTS and RealtimeSTT
- Host: GitHub
- URL: https://github.com/fortyseven/aimee
- Owner: Fortyseven
- License: mit
- Created: 2024-12-02T04:16:46.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-02T15:16:54.000Z (over 1 year ago)
- Last Synced: 2025-01-30T15:19:32.745Z (over 1 year ago)
- Topics: ai, chatbot, llm, ollama
- Language: Python
- Homepage:
- Size: 1.48 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AImee
AImee is a realtime LLM conversation bot using Ollama, RealtimeTTS and RealtimeSTT, all of which are built on top of OTHER projects. It's just shoulders all the way down.
This is a terminal app that listens to the currently enabled microphone, transcribes your audio, passes it through to an LLM (maintaining a context window), and then speaks the response.
On a 4090 this can all go pretty fast. Enough to have a reasonable conversation. Though, the system prompting tries to make sure it doesn't give overly verbose responses.
This is just a silly toy project. Use it to make your own. Whatever. :)
I am offering no support for this project.
## Notes and Things To Fix
- Missing: you cannot interrupt the response.
- If you pause too long while talking it will auto-submit and cut you off. But once you begin speaking again, while it's processing, it will treat that like the next bit of dialogue. This is a bug.
- This could use a cleaner TUI.
- Proper command line arguments: currently you just edit the constants at the top of `main.py`.
## Project Structure
- `sprompts` contains Yaml files defining various personalities. Yaml, the devil's config file, was chosen because it fits the multiline prompt situation much better than JSON. I did not look at Toml. Maybe that's even better.
- keys:
- `prompt`: the system prompt itself
- `user`: overrides the default user description
- `temperature`: this has not been implemented yet; it's trivial, why am I slacking...?
- `sprompts/_user.default.yml` is the user injected into the sprompt if `user` is not defined
- `voices` are wav files that Coqui uses to clone voices. You can provide your own. It's not perfect, but it's fun.
## Requirements
- Python >= 3.12 (this is not a hard requirement; just what I used)
## Usage
- Do the usual Python dance: venv, requirements, etc.
- I use a `Makefile` to just type `make` and go. I did this because, if you look inside, I'm overriding LD_LIBRARY_PATH to include a path to a shared file that isn't being referenced properly. This may not be required in your case. Or may not be relevant in future versions. Hell, it may even break something later.