--- title: Sinhala Chatbot emoji: "🎙️" colorFrom: blue colorTo: indigo sdk: docker app_port: 7860 pinned: false --- # Sinhala Chatbot A voice-enabled Sinhala/English chatbot that uses speech recognition, translation, RAG, and text-to-speech. ## Features - Voice recording in Sinhala or English - Speech-to-text using Whisper ASR (`seniruk/whisper-small-si`) - Translation to English before querying RAG - RAG from uploaded PDFs (FAISS + embeddings) - AI fallback (Gemini or Hugging Face) - Text-to-speech with Google TTS ## Project Structure ``` chatbot-project-python/ app/ __init__.py main.py admin.py rag.py static/ css/style.css js/script.js templates/ index.html admin.html rag_data/ .env .env.example requirements.txt README.md ``` ## Prerequisites - Python 3.9+ - A modern browser (Chrome, Edge, Firefox) - Microphone access - Gemini API key (optional but recommended) - Hugging Face API token (optional fallback) ## Installation ### 1. Create a virtual environment ```bash # Windows python -m venv venv venv\Scripts\activate # macOS/Linux python3 -m venv venv source venv/bin/activate ``` ### 2. Install dependencies ```bash pip install -r requirements.txt ``` ### 3. Configure environment variables Copy the example environment file and add your API keys: ```bash # Windows copy .env.example .env # macOS/Linux cp .env.example .env ``` Edit `.env` and add: ``` GEMINI_API_KEY=your_gemini_key_here HF_API_TOKEN=your_huggingface_token_here ``` If you do not provide a Gemini key, the app will fall back to the free Hugging Face API. ## Running the Application ### Start the main chatbot (port 8000) ```bash # From the project root python -m app.main uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` Or using uvicorn directly: ```bash swas ``` ### Start the admin panel (port 9000) In a separate terminal: ```bash python -m app.admin ``` Or using uvicorn directly: ```bash uvicorn app.admin:admin_app --reload --host 0.0.0.0 --port 9000 ``` ### Access the applications - Chatbot UI: http://localhost:8000 - Admin panel (PDF upload): http://localhost:9000 ## Usage 1. Upload PDFs using the admin panel (port 9000) 2. Open the chatbot UI (port 8000) 3. Click the microphone and speak in Sinhala or English 4. The app transcribes, translates to English, then queries RAG 5. The response is shown in text and can be played via TTS ## Troubleshooting - If RAG answers are always from AI, upload at least one PDF and verify RAG status. - If you see a missing API key error, check `.env` and restart the server. - If model loading is slow, the first run downloads Whisper and embeddings. - If PDFs already exist under `rag_data/`, the app now rebuilds/loads RAG at startup automatically. - You can manually rebuild from all PDFs with `POST /api/rag/rebuild`. ## Deploy on Hugging Face Spaces (Docker) This project can be deployed with UI on Hugging Face Spaces using Docker. ### 1. Create a new Space - Go to Hugging Face Spaces and create a new Space. - Set `SDK` to `Docker`. - Upload/push this project files to that Space repository. ### 2. Add Space secrets In Space settings, add these secrets: - `GEMINI_API_KEY` (optional) - `HF_API_TOKEN` (optional fallback) ### 3. Build and run The provided `Dockerfile` starts: - Main UI at `/` - Admin UI at `/admin` When Space build completes, open: - `https://.hf.space/` - `https://.hf.space/admin`