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.6.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.6-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: chatbot_encodedmind-1.0.6.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.6.tar.gz
Algorithm Hash digest
SHA256 207cb5a45a819e2df4793409cc8f91b3bfeaef5a8fef4d15b72a412da9cb3642
MD5 ac6e3434f93ab8b2baecfd32b96d6700
BLAKE2b-256 f94b5082b91d030cf4e68efc8c19dfc6eb6959aa1612a23e8fbb1d751441dbc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for chatbot_encodedmind-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 c3535ca40e3e2ae7dc1b27487ec219b8114c1c5f5984457eb2682b585b6dfbd2
MD5 47dd661038607ba7e5a4828e99ee74b0
BLAKE2b-256 f52f787c43a25b2aa982adbf224a7245052cd98dfe4bae7ffbf0d77105bd0f15

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