A personal knowledge repository system that uses voice transcription to capture your thoughts, insights, and wisdom. This tool helps you build a comprehensive database of your knowledge that can eventually be used to create a personal reasoning partner.
- 🎙️ Voice Recording: Simple browser-based audio recording
- 🤖 AI Transcription: Uses OpenAI-compatible Whisper STT service for voice-to-text conversion
- 🔊 Question Playback: Uses OpenAI-compatible Piper TTS service to read questions aloud
- 📊 Progress Tracking: Visual progress indicators and statistics
- 💾 Local Database: SQLite for simple, portable storage
- 🎯 Question-Guided: Structured approach with customizable questions
- 📱 Responsive UI: Clean, modern interface that works on desktop and mobile
- Python 3.8 or higher
- Modern web browser (Chrome, Firefox, Safari, Edge)
- Microphone access
- Local speech services running:
- Whisper STT (
http://localhost:5002/v1) - Piper TTS (
http://localhost:5001/v1)
- Whisper STT (
cd ProjectSelfpython -m venv venv
# On Linux/Mac:
source venv/bin/activate
# On Windows:
venv\Scripts\activatepip install -r requirements.txtThe app defaults to local services on localhost and can be overridden with env vars:
export SPEECH_STT_BASE_URL=http://localhost:5002/v1
export SPEECH_STT_MODEL=whisper-1
export SPEECH_STT_API_KEY=none
export SPEECH_TTS_BASE_URL=http://localhost:5001/v1
export SPEECH_TTS_MODEL=piper
export SPEECH_TTS_VOICE=en_US-lessac-medium
export SPEECH_TTS_API_KEY=noneYou can start with the sample questions or import your own:
# Use the sample questions (30 questions)
python import_questions.py sample_questions.json
# Or import your own questions
python import_questions.py your_questions.jsonpython app.pyNavigate to: http://localhost:5000
- Grant microphone permissions when prompted
- Read the question
- Click "Start Recording"
- Speak your answer
- Click "Stop Recording"
- Review the transcription
- Click "Next Question" to continue
You can also click Listen to Question to hear each prompt via Piper TTS.
Questions should be in JSON format. You can use either simple strings or objects with categories:
[
"What is your core philosophy on life?",
"How do you approach problem-solving?",
"What are your most important values?"
][
{
"question": "What is your core philosophy on life?",
"category": "Philosophy"
},
{
"question": "How do you approach problem-solving?",
"category": "Problem Solving"
}
]To create a comprehensive knowledge base, consider organizing your questions into categories:
- Philosophy & Values (10-15%)
- Personal Growth & Development (15-20%)
- Professional & Career (15-20%)
- Relationships & Communication (10-15%)
- Problem Solving & Decision Making (10-15%)
- Health & Wellness (5-10%)
- Creativity & Innovation (5-10%)
- Specific Domain Knowledge (15-20%)
- Make questions open-ended
- Focus on "how" and "why" rather than "what"
- Include scenarios and examples
- Ask about principles, not just facts
- Cover different time perspectives (past lessons, current practices, future goals)
The system uses SQLite with three main tables:
- questions: Stores all questions with categories
- responses: Stores transcriptions linked to questions
- session_metadata: Tracks progress and statistics
The Flask backend provides these endpoints:
GET /api/current-question- Get the current questionPOST /api/transcribe- Transcribe audio via external Whisper STT and save responsePOST /api/speak- Synthesize text via external Piper TTS (used by question playback)POST /api/next-question- Move to next questionGET /api/stats- Get overall statisticsGET /api/responses- Get all responsesPOST /api/import-questions- Import questionsPOST /api/reset-progress- Reset progress to start
SPEECH_STT_BASE_URL(default:http://localhost:5002/v1)SPEECH_STT_MODEL(default:whisper-1)SPEECH_STT_API_KEY(default:none)
SPEECH_TTS_BASE_URL(default:http://localhost:5001/v1)SPEECH_TTS_MODEL(default:piper)SPEECH_TTS_VOICE(default:en_US-lessac-medium)SPEECH_TTS_RESPONSE_FORMAT(default:mp3)SPEECH_TTS_API_KEY(default:none)
To export all your responses to JSON:
from database import KnowledgeDB
db = KnowledgeDB()
responses = db.get_all_responses()
import json
with open('my_knowledge.json', 'w') as f:
json.dump(responses, f, indent=2)This system is designed as the foundation for creating a personal reasoning partner. Potential next steps:
- Fine-tuning a Model: Use your responses to fine-tune an LLM
- RAG System: Build a retrieval-augmented generation system
- Vector Database: Create embeddings for semantic search
- Knowledge Graph: Extract entities and relationships
- Multi-modal: Add support for images and documents
- Ensure you've granted microphone permissions in your browser
- Check browser settings (Settings → Privacy → Microphone)
- Try a different browser
- Verify speech backends are running:
curl http://localhost:5002/health(Whisper STT)curl http://localhost:5001/health(Piper TTS)
- Verify configured env vars point to reachable service URLs.
- Check app server logs for upstream HTTP errors.
Change the port in app.py:
app.run(debug=True, host='0.0.0.0', port=5001) # Use different portProjectSelf/
├── app.py # Flask backend
├── database.py # Database management
├── requirements.txt # Python dependencies
├── import_questions.py # Question import utility
├── sample_questions.json # Example questions
├── static/
│ ├── index.html # Main UI
│ ├── styles.css # Styling
│ └── app.js # Frontend logic
├── uploads/ # Audio files (created automatically)
└── knowledge.db # SQLite database (created automatically)
This is a personal knowledge capture system, but feel free to fork and adapt it for your own needs!
MIT License - Feel free to use and modify as needed.
This project uses Beads for AI-optimized issue tracking:
# Install beads
npm install -g @beads/bd
# View ready tasks
bd ready
# See full setup guide
cat BEADS_SETUP.mdBeads maintains persistent task context and dependencies, perfect for long-horizon AI development.
- Speech serving via OpenAI-compatible adapters (Whisper STT + Piper TTS)
- Powered by Flask and vanilla JavaScript
- Task management via Beads
- Inspired by the goal of creating personal AI reasoning partners
Ready to capture your knowledge and wisdom! 🚀