Skip to main content

Voice-based AI chatbot powered by OpenAI

Project description

Chatbot

Chatbot

forthebadge forthebadge

GitHub issues GitHub pull requests GitHub repo size GitHub stars License

This project is a voice-based chatbot that uses OpenAI's API to interact with users. The chatbot listens to user input via voice, processes the input using OpenAI's whisper model for transcription, generates a response using the GPT-3.5-turbo model, and replies using text-to-speech model tts-1.


Features

  • Voice Input: Users interact with the chatbot using their voice.
  • Real-Time Transcription: Converts voice input into text using OpenAI's whisper model.
  • Intelligent Responses: Generates context-aware and empathetic responses using OpenAI's GPT-3.5-turbo model.
  • Voice Output: Uses OpenAI's tts-1 model to respond back in audio form.
  • Continuous Conversation: Maintains conversation history for context-aware interactions.
  • Language support: whisper can detect any language. Your accent can affect language detection!

Prerequisites

  • Python 3.9+
  • uv — a modern Python package manager
  • OpenAI API Key
  • Virtual environment (optional but recommended)
  • A working microphone and speaker

Installation

Option 1: Install from PyPI

pip install chatbot-encodedmind

Option 2: Install from source

  1. Clone the repository
    git clone https://github.com/EncodedMind/Chatbot.git
    cd Chatbot
    
  2. Create and activate a virtual environment
    python -m venv venv
    source venv/bin/activate # On Windows: venv\Scripts\activate
    
  3. Sync dependencies
    uv sync
    
  4. Set your OpenAI API key Replace YOUR_OPENAI_API_KEY in the script with your actual OpenAI API key.

Usage

  1. Run the chatbot If installed via PyPI:
chatbot

or, if installed from source:

uv run chatbot
  1. Interact with the chatbot
  • Speak into your microphone when prompted.
  • Listen to the chatbot's response.
  • Say "Goodbye" to end the session and exit the program.

Project Structure

├── chatbot/
│   ├── __init__.py
│   ├── ai_client.py       # Handles OpenAI API calls   ├── audio_io.py        # Manages audio input/output   └── core.py            # Main conversation loop
├── pyproject.toml         # Project metadata and dependencies
├── .python-version        # Python version for uv
└── README.md              # Project documentation

Key Components

Functions

  • record_audio(duration, fs, device): Captures audio input from the user.
  • get_chatgpt_response(conversation_history): Sends user messages to the GPT-3.5-turbo model and retrieves responses.
  • main(): Orchestrates the chatbot's voice input/output loop and conversation logic.

Libraries Used

  • OpenAI: For GPT and Whisper APIs.
  • Sounddevice: For capturing audio input.
  • Numpy: For handling audio data.
  • Pydub: For playing audio responses.
  • Scipy: For saving audio files as .wav.
  • Requests: For making HTTP requests to the OpenAI API.

Future Improvements

  • Silence Detection: Avoid the limitation of defining a duration parameter.

Notes

Ensure you have a stable internet connection for API calls. The interaction pause time (or response speed) of the chatbot depends on the quality and speed of your internet connection, as it relies on real-time API calls to OpenAI servers. Modify the chatbot behavior by changing the initial conversation_history system message.


Troubleshooting

Audio Issues: Ensure your microphone is properly configured and accessible to the program. API Errors: Verify your API key and check for usage limits on your OpenAI account. Dependency Issues: Ensure all required libraries are installed using uv sync.


Project Extension: Teddy Bear Voice Assistant

In addition to the core functionality of the voice chatbot, I extended the project by integrating it with an Asus Tinker Board. The board acts as the central controller for the chatbot's operations. I connected a microphone and speaker to the Tinker Board and embedded everything inside a teddy bear to create a kid-friendly interactive toy, similar to the Furby.

This project extension aims to provide a fun and engaging experience for children while maintaining the capabilities of the voice chatbot.

Watch the Interaction in Action

You can see the teddy bear in action with the chatbot by watching this video on YouTube:


License

This project is open-source and available under the MIT License.


Acknowledgements

  • OpenAI for providing the models.
  • The developers of Sounddevice, Pydub and Scipy for enabling audio processing.

Enjoy using the Chatbot!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chatbot_encodedmind-1.0.5.tar.gz (54.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chatbot_encodedmind-1.0.5-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file chatbot_encodedmind-1.0.5.tar.gz.

File metadata

  • Download URL: chatbot_encodedmind-1.0.5.tar.gz
  • Upload date:
  • Size: 54.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for chatbot_encodedmind-1.0.5.tar.gz
Algorithm Hash digest
SHA256 994ad0d593330d99f0cfb5797593a340c3f523367d2384f711c779ff4dd45045
MD5 c512a8cee2a76ba0ec84cf4138b539fa
BLAKE2b-256 2d2e48fea3d81a3fced2f2e8604e24d0af66f2d2b2b88200ca51a588dbe9fe17

See more details on using hashes here.

File details

Details for the file chatbot_encodedmind-1.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for chatbot_encodedmind-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 dfab4cb7bcf9a0326a3f42ec8e9de098d222a6105ec147bd8ebcca20e5400822
MD5 c441593759d6c340f07d11398272ddbb
BLAKE2b-256 87edafa0f3cce32782ad0afe0920bdb3f7ad7de0867cc32e9f43885035768694

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page