{"id":36967326,"url":"https://github.com/charles-forsyth/generate-tts","last_synced_at":"2026-01-13T20:02:26.506Z","repository":{"id":328843054,"uuid":"1116983603","full_name":"charles-forsyth/generate-tts","owner":"charles-forsyth","description":"A professional CLI for Google Gemini's Native 2.5 TTS. Generate multi-speaker podcasts ('Deep Dive'), audio summaries, and expressive speech from text/files.","archived":false,"fork":false,"pushed_at":"2025-12-28T17:57:48.000Z","size":127728,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-30T09:45:38.145Z","etag":null,"topics":["ai-tools","audio-generation","cli","gemini-api","google-cloud","multi-speaker","podcast-generator","python","text-to-speech","tts"],"latest_commit_sha":null,"homepage":"https://github.com/charles-forsyth/generate-tts","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/charles-forsyth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-15T16:54:46.000Z","updated_at":"2025-12-28T17:57:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/charles-forsyth/generate-tts","commit_stats":null,"previous_names":["charles-forsyth/generate-tts"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/charles-forsyth/generate-tts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-forsyth%2Fgenerate-tts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-forsyth%2Fgenerate-tts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-forsyth%2Fgenerate-tts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-forsyth%2Fgenerate-tts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/charles-forsyth","download_url":"https://codeload.github.com/charles-forsyth/generate-tts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-forsyth%2Fgenerate-tts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28398991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-tools","audio-generation","cli","gemini-api","google-cloud","multi-speaker","podcast-generator","python","text-to-speech","tts"],"created_at":"2026-01-13T20:02:25.624Z","updated_at":"2026-01-13T20:02:26.500Z","avatar_url":"https://github.com/charles-forsyth.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gen-TTS: Gemini Native Audio Generation CLI\n\n`gen-tts` is a powerful command-line interface for Google's Gemini Native Text-to-Speech (TTS) capabilities. It allows you to generate high-quality, expressive speech from text, including single-speaker narration, multi-speaker conversations, and AI-generated podcasts and summaries.\n\nPowered by the **Gemini 2.5** and **Gemini 2.0** models.\n\n## Features\n\n-   **High-Quality Voices:** Access Gemini's full range of expressive voices (e.g., Charon, Kore, Fenrir, Puck).\n-   **Multi-Speaker Support:** Generate conversations between different speakers with distinct voices.\n-   **Podcast Mode:** Automatically turn any text or file into a lively \"Deep Dive\" podcast conversation between two hosts.\n-   **Summary Mode:** Summarize long text into a concise, information-packed audio briefing read by a warm, professional voice.\n-   **Transcript Generation:** Ask Gemini to write a script for you based on a topic, then immediately synthesize it.\n-   **MP3 Support:** Automatically converts output to MP3 (requires `ffmpeg`) or WAV.\n-   **Cross-Platform Playback:** Automatically plays the generated audio on Linux, macOS, and Windows.\n\n## Installation\n\n### Prerequisites\n-   **Python 3.9+**\n-   **ffmpeg** (Required for MP3 support and playback on Linux)\n    -   *Linux:* `sudo apt install ffmpeg`\n    -   *macOS:* `brew install ffmpeg`\n\n### Install via uv (Recommended)\n```bash\nuv tool install git+https://github.com/charles-forsyth/generate-tts.git\n```\n\n### Install via pip\n```bash\npip install git+https://github.com/charles-forsyth/generate-tts.git\n```\n\n## Configuration\n\nThe tool requires a Google Cloud API Key. On first run, it will create a config file at `~/.config/gen-tts/.env` where you can paste your key.\n\n```bash\n# ~/.config/gen-tts/.env\nGOOGLE_API_KEY=\"your_actual_api_key_here\"\n```\n\n## Usage\n\n### 1. Basic Single Speaker\nGenerate audio from text. Default voice is **Charon** (Deep, Warm Male).\n\n```bash\ngen-tts \"System systems operational.\" --temp\n```\n*`--temp` plays the audio immediately without saving a file.*\n\n### 2. Podcast Mode (\"Deep Dive\")\nTurn an article, report, or text into an engaging podcast conversation between two hosts (**Fenrir** and **Leda**).\n\n```bash\n# From a file\ngen-tts --input-file article.txt --podcast --output-file deep_dive.mp3\n\n# Piping text\necho \"Breaking news...\" | gen-tts --podcast\n```\n\n### 3. Summary Mode\nSummarize text into a concise, professional audio briefing. Default voice is **Charon**.\n\n```bash\ncat report.txt | gen-tts --summary --output-file briefing.mp3\n```\n\n### 4. Topic-Based Generation\nAsk Gemini to write a script for you and then speak it.\n\n```bash\ngen-tts --generate-transcript \"A funny debate about coffee vs tea\" \\\n        --multi-speaker --speaker-voices Alice=Kore Bob=Puck \\\n        --output-file debate.mp3\n```\n\n### 5. Custom Multi-Speaker\nProvide your own script formatted as `Speaker: Text`.\n\n**script.txt:**\n```text\nJoe: Hey Jane, did you see the update?\nJane: Yes, it looks amazing!\n```\n\n**Command:**\n```bash\ngen-tts --input-file script.txt --multi-speaker \\\n        --speaker-voices Joe=Charon Jane=Puck \\\n        --audio-format MP3\n```\n\n### Options Reference\n\n| Flag | Description |\n| :--- | :--- |\n| `--podcast` | Generate a multi-speaker podcast script from input. |\n| `--summary` | Generate a concise summary script from input. |\n| `--generate-transcript \"TOPIC\"` | Generate a script based on a topic. |\n| `--multi-speaker` | Enable multi-speaker mode (requires `--speaker-voices`). |\n| `--speaker-voices` | Map speakers to voices (e.g., `Host=Fenrir Guest=Leda`). |\n| `--voice-name` | Voice for single-speaker mode (Default: `Charon`). |\n| `--audio-format` | `WAV` or `MP3`. Defaults to `MP3` for podcasts/summaries. |\n| `--model` | TTS Model (Default: `gemini-2.5-flash-preview-tts`). |\n| `--transcript-model` | Model for script generation (Default: `gemini-2.5-pro`). |\n| `--list-voices` | List all available Gemini voices. |\n| `--no-play` | Disable automatic playback. |\n\n## License\nMIT License","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharles-forsyth%2Fgenerate-tts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcharles-forsyth%2Fgenerate-tts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharles-forsyth%2Fgenerate-tts/lists"}