Skip to main content

BanterBot

BanterBot is a user-friendly chatbot application that leverages OpenAI models for generating context-aware responses, Azure Neural Voices for text-to-speech synthesis, and Azure speech-to-text recognition. The package offers a comprehensive toolkit for building chatbot applications with an intuitive interface and a suite of utilities.

Features

  • Utilizes OpenAI models to generate context-aware responses
  • Leverages Azure Neural Voices for premium text-to-speech synthesis
  • Offers a wide range of output formats, multilingual voices, and speaking styles
  • Allows real-time monitoring of the chatbot's responses
  • Supports asynchronous speech-to-text microphone input
  • Includes an abstract base class for creating custom frontends for the BanterBot application
  • Features a tkinter-based frontend implementation
  • Automatically selects an appropriate emotion or tone based on the conversation context

Requirements

Three environment variables are required for full functionality:

  • OPENAI_API_KEY: A valid OpenAI API key
  • AZURE_SPEECH_KEY: A valid Azure Cognitive Services Speech API key for text-to-speech and speech-to-text functionality
  • AZURE_SPEECH_REGION: The region associated with your Azure Cognitive Services Speech API key

Components

TKInterface

A graphical user interface (GUI) establishes a multiplayer conversation environment where up to nine users can interact with the chatbot simultaneously. The GUI includes a conversation history area and user panels with 'Listen' buttons to process user input. It also supports key bindings for user convenience.

OpenAIService

A class responsible for managing interactions with the OpenAI ChatCompletion API. It offers functionality to generate responses from the API based on input messages. It supports generating responses in their entirety or as a stream of response blocks.

SpeechSynthesisService

A class that handles text-to-speech synthesis using Azure's Cognitive Services. It supports a wide range of output formats, voices, and speaking styles. The synthesized speech can be interrupted, and the progress can be monitored in real-time.

SpeechRecognitionService

A class that provides an interface to convert spoken language into written text using Azure Cognitive Services. It allows continuous speech recognition and provides real-time results as sentences are recognized.

Installation

Important Note

BanterBot requires several spaCy language models to run, and will automatically download them on first-time initialization, if they are missing or incompatible -- this process can sometimes take a while.

Pip (Recommended)

BanterBot can be installed or updated using the Python Package Index (PyPi):

python -m pip install --upgrade banterbot

Manual

To install BanterBot, simply clone the repository and install the required dependencies:

git clone https://github.com/gabrielscabrera/banterbot.git
cd banterbot
python -m pip install .

Usage

Launch with Command Line

Start BanterBot with an enhanced graphical user interface by running the command banterbot in your terminal. This GUI allows multiple users to interact with the bot, each with a dedicated button for speech input and a display for responses.

--prompt: Set a system prompt at the beginning of the conversation (e.g., --prompt "You are Grendel the Quiz Troll, a charismatic troll who loves to host quiz shows.").

--model: Choose the OpenAI model for conversation generation. Defaults to GPT-4, but other versions can be selected if specified in the code.

--voice: Select a Microsoft Azure Cognitive Services text-to-speech voice. The default is "Aria," but other voices can be specified if available.

--debug: Enable debug mode to display additional information in the terminal for troubleshooting.

--greet: Have the bot greet the user upon startup.

--name: Assign a name to the assistant for aesthetic purposes. This does not inform the bot itself; to provide the bot with information, use the --prompt flag.

Here is an example:

banterbot --greet --model gpt-4-turbo --voice davis --prompt "You are Grondle the Quiz Troll, a charismatic troll who loves to host quiz shows." --name Grondle

Additionally, you can use banterbot character to select a pre-loaded character to interact with. For example:

banterbot character therapist

Will start a conversation with Grendel the Therapy Troll. To list all available characters, run:

banterbot character -h

You can also use banterbot voice-search to search through all the available voices. For example:

banterbot voice-search --language en fr

Will list all English (en) and French (fr) voice models. Run banterbot voice-search -h for more information.

Launch with a Python script

To use BanterBot in a script, create an instance of the TKInterface class and call the run method:

from banterbot import AzureNeuralVoiceManager, OpenAIModelManager, TKInterface

model = OpenAIModelManager.load("gpt-4o")
voice = AzureNeuralVoiceManager.load("Davis")
assistant_name = "Grendel"

# Optional system prompt to set up a custom character prior to initializing BanterBot.
system = "You are Grendel the Quiz Troll, a charismatic troll who loves to host quiz shows."

# The four arguments `model`, `voice`, `system`, and `assistant_name` are optional.
interface = TKInterface(model=model, voice=voice, system=system, assistant_name=assistant_name)

# Setting `greet` to True instructs BanterBot to initiate the conversation. Otherwise, the user must initiate.
interface.run(greet=True)

Chat Logs

Chat logs are saved in the $HOME/Documents/BanterBot/Conversations/ directory as individual .txt files.

Documentation

For more complete documentation, please refer to the BanterBot Docs.

Metadata

Release files for BanterBot 0.0.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for BanterBot 0.0.16
File Size Uploaded
BanterBot-0.0.16.tar.gz 67.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for BanterBot 0.0.16
File Interpreter ABI Platform
BanterBot-0.0.16-py3-none-any.whl Python 3 none any Details

Total release size: 156.9 kB

Release files / BanterBot-0.0.16.tar.gz

Download URL BanterBot-0.0.16.tar.gz
Size 67.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3b61ab79c4664e060c2eb5540e7677dd66a557fb89ce73410ca7656111041505
BLAKE2b-256 checksum
How to use checksums
2981100090b9660a3e29576e1243a6a514cc4768f45e089f82d0161bd2276d1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.9

Release files / BanterBot-0.0.16-py3-none-any.whl

Download URL BanterBot-0.0.16-py3-none-any.whl
Size 89.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
886ca42f153b6a825e0db152120e7d5dc7f6da82824941e91ca7918d2a5cdfe0
BLAKE2b-256 checksum
How to use checksums
3dfb44c3d8529b21cc408b9529f659273f27a52cbe10f124d87963a1fe2e5786
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.0.16 This release

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page