├── functions ├── tts │ ├── __init__.py │ ├── gui │ │ ├── __init__.py │ │ └── player.py │ ├── args.py │ ├── utils.py │ └── processing.py ├── scraping │ ├── web.py │ ├── documents.py │ └── reddit.py ├── search │ ├── google.py │ ├── brave.py │ ├── discovery.py │ └── api.py ├── utils.py ├── ai.py ├── config.py ├── args.py └── processing │ ├── summarization.py │ ├── youtube_descriptor.py │ └── report_generation.py ├── settings ├── music │ ├── intro │ │ └── Warrior_Intro.mp3 │ └── outro │ │ └── Warrior_Outro.mp3 ├── images │ ├── background │ │ └── Podcast_Background.png │ ├── guest │ │ ├── open │ │ │ ├── Reed_Gasp-removebg-preview.png │ │ │ ├── Reed_BigMouth-removebg-preview.png │ │ │ ├── Reed_Talking-removebg-preview.png │ │ │ └── Reed_Talkingv2-removebg-preview.png │ │ └── closed │ │ │ └── Reed_MouthClosed_Smiling-removebg-preview.png │ └── host │ │ ├── open │ │ ├── Dundell_Open-removebg-preview.png │ │ ├── Dundell_Surprised-removebg-preview.png │ │ └── Dundell_Talkingv2-removebg-preview.png │ │ └── closed │ │ └── Dundell_Mouth_Closedv2-removebg-preview.png ├── voices │ ├── leo.yaml │ ├── tara.yaml │ └── default.yaml ├── llm_settings │ └── example_ai_models.yml ├── env.example └── characters │ ├── host.yml │ └── guest.yml ├── research └── Example_Docs_Folder │ ├── Mabinogi F2P Reforges Guide_.docx │ ├── Weekly Dungeon Vouchers Guide-.docx │ ├── Fynni Gems Passive Income Guide_.docx │ ├── Mabinogi Farming Lord_Abyss Passes.docx │ └── Mabinogi Adventure Seals Weekly Guide_.docx ├── .gitignore ├── requirements_host.txt ├── run_control_panel.sh ├── templates ├── history.html ├── settings.html ├── main_dashboard.html ├── podcast_builder_form.html └── script_builder_form.html ├── Installer_Windows.bat ├── run_control_panel.bat ├── README.md ├── installation_readme.md ├── LICENSE └── static └── main.css /functions/tts/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /functions/tts/gui/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /settings/music/intro/Warrior_Intro.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/music/intro/Warrior_Intro.mp3 -------------------------------------------------------------------------------- /settings/music/outro/Warrior_Outro.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/music/outro/Warrior_Outro.mp3 -------------------------------------------------------------------------------- /settings/images/background/Podcast_Background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/background/Podcast_Background.png -------------------------------------------------------------------------------- /settings/images/guest/open/Reed_Gasp-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/guest/open/Reed_Gasp-removebg-preview.png -------------------------------------------------------------------------------- /settings/images/host/open/Dundell_Open-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/host/open/Dundell_Open-removebg-preview.png -------------------------------------------------------------------------------- /settings/images/guest/open/Reed_BigMouth-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/guest/open/Reed_BigMouth-removebg-preview.png -------------------------------------------------------------------------------- /settings/images/guest/open/Reed_Talking-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/guest/open/Reed_Talking-removebg-preview.png -------------------------------------------------------------------------------- /research/Example_Docs_Folder/Mabinogi F2P Reforges Guide_.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/research/Example_Docs_Folder/Mabinogi F2P Reforges Guide_.docx -------------------------------------------------------------------------------- /research/Example_Docs_Folder/Weekly Dungeon Vouchers Guide-.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/research/Example_Docs_Folder/Weekly Dungeon Vouchers Guide-.docx -------------------------------------------------------------------------------- /settings/images/guest/open/Reed_Talkingv2-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/guest/open/Reed_Talkingv2-removebg-preview.png -------------------------------------------------------------------------------- /settings/images/host/open/Dundell_Surprised-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/host/open/Dundell_Surprised-removebg-preview.png -------------------------------------------------------------------------------- /settings/images/host/open/Dundell_Talkingv2-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/host/open/Dundell_Talkingv2-removebg-preview.png -------------------------------------------------------------------------------- /research/Example_Docs_Folder/Fynni Gems Passive Income Guide_.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/research/Example_Docs_Folder/Fynni Gems Passive Income Guide_.docx -------------------------------------------------------------------------------- /research/Example_Docs_Folder/Mabinogi Farming Lord_Abyss Passes.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/research/Example_Docs_Folder/Mabinogi Farming Lord_Abyss Passes.docx -------------------------------------------------------------------------------- /settings/images/host/closed/Dundell_Mouth_Closedv2-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/host/closed/Dundell_Mouth_Closedv2-removebg-preview.png -------------------------------------------------------------------------------- /research/Example_Docs_Folder/Mabinogi Adventure Seals Weekly Guide_.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/research/Example_Docs_Folder/Mabinogi Adventure Seals Weekly Guide_.docx -------------------------------------------------------------------------------- /settings/images/guest/closed/Reed_MouthClosed_Smiling-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ETomberg391/Ecne-AI-Podcaster/HEAD/settings/images/guest/closed/Reed_MouthClosed_Smiling-removebg-preview.png -------------------------------------------------------------------------------- /settings/voices/leo.yaml: -------------------------------------------------------------------------------- 1 | # settings/voices/leo.yaml 2 | gain_factor: 1.0 3 | trim_end_ms: 100 4 | nr_level: 0 5 | compress_thresh: 0.001 6 | compress_ratio: 1 7 | norm_frame_len: 10 8 | norm_gauss_size: 3 9 | deesser_freq: 5000 -------------------------------------------------------------------------------- /settings/voices/tara.yaml: -------------------------------------------------------------------------------- 1 | # settings/voices/tara.yaml 2 | gain_factor: 1 3 | trim_end_ms: 120 4 | nr_level: 35 5 | compress_thresh: 0.03 6 | compress_ratio: 2 7 | norm_frame_len: 20 8 | norm_gauss_size: 15 9 | deesser_freq: 5000 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | settings/llm_settings/ai_models.yml 3 | /orpheus_tts_setup/* 4 | functions/__pycache__/* 5 | */*/__pycache__/* 6 | /outputs/* 7 | /research/* 8 | /uploads/* 9 | */*/__pycache__/* 10 | */*/*/__pycache__/* 11 | temp_audio/* 12 | 13 | -------------------------------------------------------------------------------- /requirements_host.txt: -------------------------------------------------------------------------------- 1 | requests 2 | PyYAML 3 | python-dotenv 4 | beautifulsoup4 5 | newspaper4k 6 | PyPDF2 7 | python-docx 8 | selenium 9 | soundfile 10 | numpy 11 | Pillow 12 | nltk 13 | pydub 14 | matplotlib 15 | scipy 16 | pygame 17 | lxml_html_clean 18 | flask 19 | moviepy==1.0.3 20 | # audioop-lts not available for Python 3.12 on Windows - using built-in audioop for now -------------------------------------------------------------------------------- /settings/voices/default.yaml: -------------------------------------------------------------------------------- 1 | # settings/voices/default.yaml 2 | gain_factor: 1.0 3 | trim_end_ms: 0 4 | nr_level: 0 5 | compress_thresh: 1.0 # Threshold effectively disables compression (1.0 = 0dBFS) 6 | compress_ratio: 1 # Ratio 1 means no compression 7 | norm_frame_len: 10 # Lowest default value used 8 | norm_gauss_size: 3 # Lowest default value used (must be odd) 9 | deesser_freq: 3000 # Lowest allowed frequency -------------------------------------------------------------------------------- /settings/llm_settings/example_ai_models.yml: -------------------------------------------------------------------------------- 1 | # Model configurations for the AI Podcast Generator 2 | # Define different models and their parameters for /chat/completions API calls. 3 | 4 | # Configuration for the default model accessed via the current endpoint 5 | default_model: 6 | api_endpoint: "" 7 | api_key: "sk1-example" 8 | model: "QwQ-32B_Example" # Example: Replace with the actual default model if known 9 | temperature: 0.7 10 | 11 | # Configuration for Gemini 2.0 Flash (Experimental) 12 | gemini_flash: 13 | api_endpoint: "https://generativelanguage.googleapis.com/v1beta/openai/" 14 | api_key: "" 15 | model: "gemini-2.5-flash-preview-05-20" 16 | max_tokens: 65536 17 | # top_p: 0.95 # Optional parameter -------------------------------------------------------------------------------- /settings/env.example: -------------------------------------------------------------------------------- 1 | # .env file for AI Podcast Generator 2 | 3 | # --- Model Selection --- 4 | # Specifies the default model configuration to use from ai_models.yml 5 | # Options: default_model, gemini_flash (or others defined in ai_models.yml) 6 | DEFAULT_MODEL_CONFIG="default_model" # Change this to 'gemini_flash' to use Gemini by default 7 | 8 | # --- Search APIs --- 9 | # Google Custom Search API Credentials 10 | # 1. Get API Key from Google Cloud Console (Credentials page) 11 | GOOGLE_API_KEY="" 12 | # 2. Get Search Engine ID (cx) from Programmable Search Engine control panel (make sure "Search entire web" is ON) 13 | GOOGLE_CSE_ID="" 14 | 15 | # Brave Search API Key (Get from https://api.search.brave.com/) 16 | BRAVE_API_KEY="" 17 | -------------------------------------------------------------------------------- /run_control_panel.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script to activate virtual environment and run control panel app 4 | # Navigate to the script's directory 5 | cd "$(dirname "$0")" 6 | 7 | # Check if virtual environment exists 8 | if [ ! -d "host_venv" ]; then 9 | echo "Error: Virtual environment 'host_venv' not found in current directory." 10 | echo "Please ensure you're running this script from the project root directory." 11 | exit 1 12 | fi 13 | 14 | # Check if control_panel_app.py exists 15 | if [ ! -f "control_panel_app.py" ]; then 16 | echo "Error: control_panel_app.py not found in current directory." 17 | echo "Please ensure you're running this script from the project root directory." 18 | exit 1 19 | fi 20 | 21 | echo "Activating virtual environment..." 22 | source host_venv/bin/activate 23 | 24 | # Check if activation was successful 25 | if [ $? -ne 0 ]; then 26 | echo "Error: Failed to activate virtual environment." 27 | exit 1 28 | fi 29 | 30 | echo "Virtual environment activated successfully." 31 | echo "Starting Control Panel App..." 32 | echo "================================================================" 33 | 34 | # Function to open URL in default browser 35 | open_url() { 36 | local url="http://127.0.0.1:5000" 37 | echo "Attempting to open $url in your default browser..." 38 | case "$(uname -s)" in 39 | Linux*) xdg-open "$url" >/dev/null 2>&1 & ;; 40 | Darwin*) open "$url" & ;; 41 | *) echo "Please open your browser and navigate to $url" ;; 42 | esac 43 | } 44 | 45 | # Open the browser in the background after a short delay 46 | (sleep 2 && open_url) & 47 | 48 | # Run the control panel app in the foreground 49 | python control_panel_app.py -------------------------------------------------------------------------------- /templates/history.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |Browse and manage all your generated scripts, audio, and videos.
13 | 14 | Back to Dashboard 15 | 16 | {% if output_files %} 17 |Type: {{ file.type | capitalize }}
22 |Path: {{ file.path }}
23 |Size: {{ "%.2f" | format(file.size / 1024 / 1024) }} MB
24 |Last Modified: {{ file.modified }}
25 | Download 26 | {% if file.type == 'video' %} 27 | View/Play Video 28 | {% elif file.type == 'script' %} 29 | View Script 30 | {% endif %} 31 |No generated output files found yet.
36 | {% endif %} 37 |Welcome to your centralized hub for generating podcast scripts and audio/video content.
13 | 14 | 32 | 33 | 34 | 47 |