BrainWavr is a Streamlit application that transforms online articles into professional-sounding podcasts with just a few clicks. Using AI technology, it summarizes article content and recreates it in the natural speaking style of your chosen virtual host.
- Instant Podcast Generation: Convert any online article into a podcast with a single click
- Multiple Host Options: Choose from a variety of virtual hosts with different voices and presentation styles
- Adjustable Content Length: Select between short, medium, or long podcast formats
- Downloadable Episodes: Save your generated podcasts for listening anywhere
- Episode History: Access previously generated episodes from the library
- Customization Options: Add intro music and outros to your podcasts
- Python 3.7+
- pip
-
Clone the repository:
git clone https://github.com/yourusername/brainwavr.git cd brainwavr -
Create and activate a virtual environment (optional but recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install the required dependencies:
pip install -r requirements.txt -
Create necessary directories:
mkdir -p saved_podcasts mkdir -p images -
Add host images to the
imagesdirectory:- jean.png
- alex.png
- taylor.png
- logo.png
-
Start the application:
streamlit run app.py -
Open your web browser and navigate to the address shown in the terminal (typically http://localhost:8501)
-
Using BrainWavr:
- Select a podcast host
- Enter the URL of an article you want to convert
- Click "Generate Podcast"
- Wait for processing to complete
- Listen to, download, or share your new podcast
brainwavr/
├── app.py # Main Streamlit application
├── api.py # API functions for fetching articles and generating content
├── custom_player.py # Custom audio player implementation
├── requirements.txt # Python dependencies
├── saved_podcasts/ # Directory for storing generated podcasts
└── images/ # Host and logo images
├── jean.png
├── alex.png
├── taylor.png
└── logo.png
The application relies on several key functions defined in api.py:
fetch_article_text(url): Extracts the text content from a given article URLgenerate_summary(text): Creates a concise summary of the article appropriate for audiogenerate_podcast_audio(summary, voice): Converts the summary into spoken audio using the selected host's voice
You can customize various aspects of the podcasts through the settings sidebar:
- Podcast Length: Choose between short (2-3 min), medium (4-6 min), or long (7-10 min) episodes
- Intro Music: Toggle inclusion of intro music
- Outro: Toggle inclusion of an outro segment
Contributions to BrainWavr are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Streamlit - The web application framework used
- OpenAI - Text generation capabilities
- ElevenLabs - Text-to-speech technology
© 2023 BrainWavr