This project is an automated podcast generation buddy that streamlines the process of creating, editing, and publishing podcast episodes. It includes features for generating scripts, converting them to speech, and automating the audio editing process.
- Script generation based on topic, number of speakers, and duration
- Text-to-speech conversion using the
say
command on macOS - Audio editing and stitching using SoX
- Simple content management system (CMS) for managing podcasts and episodes
- RESTful API for generating and regenerating podcast episodes
- Flask web server for serving static content and handling API requests
- macOS operating system
- Python 3.x
- OpenAI API key (for script generation)
- Clone the repository: git clone https://github.com/goggledefogger/podcast-generator.git Copy code
- Navigate to the project directory: cd podcast-generator Copy code
- Install the required Python dependencies: pip install -r requirements.txt Copy code
- Install SoX for audio editing: brew install sox Copy code
- Set up your OpenAI API key:
- Create a file named
.env
in the project root directory. - Add the following line to the
.env
file:OPENAI_API_KEY=your_api_key_here
- Replace
your_api_key_here
with your actual OpenAI API key.
-
Start the Flask web server: python app.py Copy code
-
Open a web browser and navigate to
http://localhost:5000
. -
Use the provided interface to create and manage podcasts and episodes.
-
To create a new episode:
- Click on the "Create Episode" button or link.
- Fill in the episode details (topic, number of speakers, duration).
- Click the "Create Episode" button to generate the episode.
- The generated episode will be saved in the
episodes.json
file, and the audio will be saved in theaudio_output
directory.
app.py
: Flask web server for serving static content and handling API requests.script_generation.py
: Module for generating scripts using the OpenAI API.audio_editing.py
: Module for converting scripts to speech and stitching audio files.public/
: Directory for storing static content (HTML, CSS, JavaScript).index.html
: Frontend HTML file for the CMS.script.js
: Frontend JavaScript file for interacting with the backend API.db/podcasts.json
: JSON file for storing podcast data.db/episodes.json
: JSON file for storing episode data.audio_output/
: Directory for storing generated audio files.
Contributions are welcome! If you find any issues or have suggestions for improvements, please create an issue or submit a pull request.
This project is licensed under the MIT License.