Skip to content

Repository files navigation

Interview Room

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.

Screenshots

Set up the role Pick your interviewer
Setup page Avatar picker
The briefing Live avatar interview
Briefing Live interview with avatar

Engine modes

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).

How it works

  1. Setup - describe the role, choose difficulty, question focus, and engine mode
  2. Briefing - the model writes a realistic scenario: company, interviewer, likely questions
  3. Interview - live voice conversation with a real-time transcript (and optional avatar video)
  4. 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.

Requirements

  • Windows / macOS / Linux, Python 3.10+
  • LM Studio running its local server with google/gemma-4-e4b (or any model; set LLM_MODEL)
  • A conda env named s2s with speech-to-speech installed (local modes)
  • A LiveAvatar API key (avatar / online modes)

Install & run

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:7860

Configuration (.env)

LLM_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=false

Tech stack

FastAPI + 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.

License

MIT

About

Voice-first AI interview practice. Hold a real spoken mock interview with a local speech-to-speech pipeline and LM Studio, or go fully online with a lifelike video interviewer. Get a scored debrief at the end.

Topics

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages