Harper is a conversational AI process inspired by Sesame.
It implements a full voice-based conversation loop with speech recognition, text generation, and speech synthesis, all running locally or via APIs.
Shout out to Chris Hong! 😊
Please watch demo video 🎬!
Features Implemented
silero-vad and pipecat/smart-turn-v3.Notes
gpt-oss-20b.gpt-4.1-mini via API is recommended.gpt-4.1-mini costs less than $0.10.For voice cloning
Currently, to reduce TTFT (Time to First Token), the system pre-generates audio for several dozen common “starting words.” During conversation, the LLM is always prompted to begin with one of these words, and the corresponding pre-generated audio is played immediately to minimize initial delay.
If you want to change the voice, update the new voice audio file path in utils/constants.py and then run voiceprepare.py.
This will regenerate the pre-generated audio clips using the new voice.
thanks to the following projects 🔥
gpt-4.1-mini (API) or gpt-oss-20b (via Ollama)ffmpeg required for some audio operationsgit clone https://github.com/thxxx/harper.git
cd server
python3.10 -m venv .venv
source .venv/bin/activate
bash setup.sh
git clone https://github.com/thxxx/harper.git
cd client
npm install
npm run dev
Run the client
npm run dev
Run the server
1. For Local LLM
server/utils/constants.py, setLLM_MODEL = "local"ollama server
ollama run gpt-oss:20b
uvicorn companionserver:app --host 0.0.0.0 --port 5000
2. For GPT API
Set your API key in server/utils/constants.py
or export it as an environment variable:
export OPENAI_KEY="sk-xxxxxx"
uvicorn companionserver:app --host 0.0.0.0 --port 5000
Questions or feedback?
Feel free to reach out: khj605123@gmail.com
Best regards, From Korea
2 commits
Python
94.9%
TypeScript
4.1%
Harper is a conversational AI process inspired by Sesame.
It implements a full voice-based conversation loop with speech recognition, text generation, and speech synthesis, all running locally or via APIs.
Shout out to Chris Hong! 😊
Please watch demo video 🎬!
Features Implemented
silero-vad and pipecat/smart-turn-v3.Notes
gpt-oss-20b.gpt-4.1-mini via API is recommended.gpt-4.1-mini costs less than $0.10.For voice cloning
Currently, to reduce TTFT (Time to First Token), the system pre-generates audio for several dozen common “starting words.” During conversation, the LLM is always prompted to begin with one of these words, and the corresponding pre-generated audio is played immediately to minimize initial delay.
If you want to change the voice, update the new voice audio file path in utils/constants.py and then run voiceprepare.py.
This will regenerate the pre-generated audio clips using the new voice.
thanks to the following projects 🔥
gpt-4.1-mini (API) or gpt-oss-20b (via Ollama)ffmpeg required for some audio operationsgit clone https://github.com/thxxx/harper.git
cd server
python3.10 -m venv .venv
source .venv/bin/activate
bash setup.sh
git clone https://github.com/thxxx/harper.git
cd client
npm install
npm run dev
Run the client
npm run dev
Run the server
1. For Local LLM
server/utils/constants.py, setLLM_MODEL = "local"ollama server
ollama run gpt-oss:20b
uvicorn companionserver:app --host 0.0.0.0 --port 5000
2. For GPT API
Set your API key in server/utils/constants.py
or export it as an environment variable:
export OPENAI_KEY="sk-xxxxxx"
uvicorn companionserver:app --host 0.0.0.0 --port 5000
Questions or feedback?
Feel free to reach out: khj605123@gmail.com
Best regards, From Korea
2 commits
Python
94.9%
TypeScript
4.1%