{"id":25478387,"url":"https://github.com/yesutkarsh/notebook-ml-open-source","last_synced_at":"2025-11-06T09:30:30.814Z","repository":{"id":278144523,"uuid":"934651278","full_name":"yesutkarsh/NOTEBOOK-ML-OPEN-SOURCE","owner":"yesutkarsh","description":"OPEN SOURCE NOTEBOOK ML  - PODCAST GENERATOR","archived":false,"fork":false,"pushed_at":"2025-02-18T07:44:07.000Z","size":33536,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-18T08:35:53.300Z","etag":null,"topics":["artificial-intelligence","google-cloud","javascript","llm","notebookml"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/yesutkarsh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2025-02-18T07:24:10.000Z","updated_at":"2025-02-18T07:52:32.000Z","dependencies_parsed_at":"2025-02-18T08:46:59.708Z","dependency_job_id":null,"html_url":"https://github.com/yesutkarsh/NOTEBOOK-ML-OPEN-SOURCE","commit_stats":null,"previous_names":["yesutkarsh/notebook-ml-open-source"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yesutkarsh%2FNOTEBOOK-ML-OPEN-SOURCE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yesutkarsh%2FNOTEBOOK-ML-OPEN-SOURCE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yesutkarsh%2FNOTEBOOK-ML-OPEN-SOURCE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yesutkarsh%2FNOTEBOOK-ML-OPEN-SOURCE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yesutkarsh","download_url":"https://codeload.github.com/yesutkarsh/NOTEBOOK-ML-OPEN-SOURCE/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239488853,"owners_count":19647278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["artificial-intelligence","google-cloud","javascript","llm","notebookml"],"created_at":"2025-02-18T14:31:50.850Z","updated_at":"2025-11-06T09:30:30.764Z","avatar_url":"https://github.com/yesutkarsh.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎙️ NOTEBOOK ML WITH NODE JS OPEN SOURCE\n\nAn open-source project that dynamically generates AI-driven podcast-style conversations using **Google Cloud Text-to-Speech** (SSML), saves audio files, and combines them into a final podcast episode.\n\n## ✨ Features\n\n- 🔹 **Text-to-Speech Conversion**: Generates natural conversations using Google Cloud's Studio voices. [Right now hardcoded but you can use llm to dynamically generate data]\n- 🔹 **SSML Markup**: Enhances speech with pauses, intonations, and expressive tones.\n- 🔹 **Dynamic Audio Processing**: Saves each segment as an individual file.\n- 🔹 **Final Podcast Compilation**: Merges all generated audio into a single **final.mp3**.\n- 🔹 **Firebase Integration**: Automatically uploads the final podcast (Not detailed here). [Working on client side too]\n\n---\n\n## 📂 Project Structure\n\n```plaintext\n📁 server/\n ├── 📁 public/\n │    ├── 📁 audio/           # Stores all generated MP3 files\n │    │    ├── 1.mp3\n │    │    ├── 2.mp3\n │    │    ├── ...\n │    │    ├── final.mp3     # The combined podcast\n │\n ├── 📁 routes/\n │    ├── generate.js        # Main script for generating \u0026 combining audio\n │\n ├── 📁 config/\n │    ├── google-credentials.json # Google Cloud authentication\n │\n ├── package.json            # Dependencies\n ├── server.js               # Express API server\n```\n\n---\n\n## ⚙️ How It Works\n\n### 1️⃣ Generate AI-Driven Speech\nThe conversation is structured in an array, where **male** and **female** AI voices interact using **SSML-enhanced speech**.\n\n```javascript\nconst conversationData = [\n  {\n    male: '\u003cspeak\u003eHey! \u003cbreak time=\"0.3s\"/\u003e Have you heard about AI-driven learning?\u003c/speak\u003e',\n    female: '\u003cspeak\u003eHmm, sounds interesting! Tell me more.\u003c/speak\u003e'\n  },\n  ...\n];\n```\n\nEach segment is processed using Google Cloud **Text-to-Speech** and saved as an MP3 file in `/public/audio/`.\n\n---\n\n### 2️⃣ Combining Audio Files\nOnce all audio segments are successfully generated, they are merged into a single **final.mp3**.\n\n```javascript\nconst command = `ffmpeg -f concat -safe 0 -i \"${fileListPath}\" -c copy \"${finalFilePath}\"`;\nexec(command, (error, stdout, stderr) =\u003e {\n  if (error) {\n    console.error('Error combining audio:', error);\n  } else {\n    console.log('Final podcast created:', finalFilePath);\n  }\n});\n```\n\n📌 **Ensure FFmpeg is installed** for this process to work.\n\n---\n\n### 3️⃣ 🎧 Enjoy Your AI Podcast!\nAfter completion, you can access your full AI-powered podcast in:\n\n```\n/public/audio/final.mp3\n```\n\n---\n\n## 🛠️ Setup \u0026 Run\n### Install Dependencies\n```bash\nnpm install\n```\n\n### Start the Server\n```bash\nnode server.js\n```\n\n### Generate Podcast\nHit the API endpoint:\n```http\nGET /generate-all\n```\n\n---\n\n## 🚀 Contributions \u0026 Improvements\nThis project is **open-source** and welcomes contributions! Feel free to add new features, improve SSML markup, or optimize audio merging.\n\nHappy coding! 🎵\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyesutkarsh%2Fnotebook-ml-open-source","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyesutkarsh%2Fnotebook-ml-open-source","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyesutkarsh%2Fnotebook-ml-open-source/lists"}