A voice-first job interview simulator. Paste a job description, pick how tough you want the room to be, then hold a real spoken conversation with an AI interviewer and get a scored debrief at the end.
Built on the Hugging Face speech-to-speech pipeline for fully local voice interviews, with an optional LiveAvatar video interviewer and a fully online mode for machines without a GPU.
| Set up the role | Pick your interviewer |
|---|---|
![]() |
![]() |
| The briefing | Live avatar interview |
|---|---|
![]() |
![]() |
| Mode | Speech + brain | Needs |
|---|---|---|
| On this machine | HF speech-to-speech (VAD, STT, LLM, TTS) with LM Studio | LM Studio + s2s conda env |
| Local, with a face | Same local brain; a LiveAvatar video interviewer lip-syncs the replies | Above + LiveAvatar API key |
| Fully online | LiveAvatar FULL mode runs the whole conversation in the cloud | LiveAvatar API key only* |
*The briefing and feedback still use whatever OpenAI-compatible endpoint is in .env (LM Studio by default, or any hosted API).
- Setup - describe the role, choose difficulty, question focus, and engine mode
- Briefing - the model writes a realistic scenario: company, interviewer, likely questions
- Interview - live voice conversation with a real-time transcript (and optional avatar video)
- Feedback - score out of 10, strengths, improvement areas, recommendations, full transcript
In local modes the browser streams mic audio (16 kHz PCM over WebSocket) to the server, which proxies it to the speech-to-speech pipeline running in its own conda env. The pipeline is restarted per interview so each session gets its own interviewer persona.
- Windows / macOS / Linux, Python 3.10+
- LM Studio running its local server with
google/gemma-4-e4b(or any model; setLLM_MODEL) - A conda env named
s2swith speech-to-speech installed (local modes) - A LiveAvatar API key (avatar / online modes)
git clone https://github.com/dwain-barnes/interview-room.git
cd interview-room
pip install -r requirements.txt
cp env.example .env # then edit
python app.py # http://localhost:7860LLM_BASE_URL="http://127.0.0.1:1234/v1" # LM Studio
LLM_MODEL="google/gemma-4-e4b"
LLM_API_KEY="lm-studio"
S2S_CONDA_ENV="s2s" # or set S2S_PYTHON explicitly
S2S_STT="parakeet-tdt"
S2S_TTS="qwen3"
S2S_TTS_REF_AUDIO="C:/path/to/voice.wav" # optional: clone a custom voice
LIVEAVATAR_API_KEY="" # enables avatar + online modes
LIVEAVATAR_SANDBOX=falseFastAPI + WebSockets, Hugging Face speech-to-speech (Silero VAD, Parakeet-TDT STT, Qwen3-TTS with voice cloning), LM Studio (OpenAI-compatible), LiveAvatar Web SDK, vanilla JS + AudioWorklet frontend.
MIT



