{"id":40233932,"url":"https://github.com/timcsy/song-mixer","last_synced_at":"2026-01-19T23:03:45.913Z","repository":{"id":326477703,"uuid":"1105691340","full_name":"timcsy/song-mixer","owner":"timcsy","description":"AI 驅動的歌曲混音工具，從影片中分離音軌（人聲、鼓、貝斯、其他），支援即時混音控制。","archived":false,"fork":false,"pushed_at":"2025-12-01T13:37:47.000Z","size":17635,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-03T21:20:36.899Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://timcsy.github.io/song-mixer/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timcsy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-11-28T02:37:29.000Z","updated_at":"2025-12-01T13:48:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/timcsy/song-mixer","commit_stats":null,"previous_names":["timcsy/vocal-remover","timcsy/song-mixer"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/timcsy/song-mixer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timcsy%2Fsong-mixer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timcsy%2Fsong-mixer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timcsy%2Fsong-mixer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timcsy%2Fsong-mixer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timcsy","download_url":"https://codeload.github.com/timcsy/song-mixer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timcsy%2Fsong-mixer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28588971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"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":[],"created_at":"2026-01-19T23:03:45.838Z","updated_at":"2026-01-19T23:03:45.903Z","avatar_url":"https://github.com/timcsy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Song Mixer 歌曲混音器\n\nAI 驅動的歌曲混音工具，從影片中分離音軌（人聲、鼓、貝斯、其他），支援即時混音控制。\n\n使用 [Demucs](https://github.com/facebookresearch/demucs) AI 模型進行音源分離。\n\n## 線上試用\n\nGitHub Pages: https://timcsy.github.io/song-mixer/\n\n## 功能特色\n\n- 支援 YouTube 網址直接處理（需後端）\n- 支援本地影片檔案上傳\n- AI 音源分離（Demucs htdemucs 模型）\n- 四軌獨立控制（人聲、鼓、貝斯、其他樂器）\n- 即時音量調整與靜音\n- 升降 Key 調整\n- 多種輸出格式（MP4、MP3、M4A、WAV）\n- 純前端處理模式（使用 WebAssembly）\n- 處理結果本地儲存（IndexedDB）\n\n## 使用方式\n\n### 純前端模式（GitHub Pages）\n\n直接訪問 https://timcsy.github.io/song-mixer/ ，上傳本地檔案即可處理。\n\n### Docker 模式（支援 YouTube）\n\n#### 使用預建映像（推薦）\n\n直接從 GitHub Container Registry 拉取映像：\n\n```bash\n# 拉取最新版本\ndocker pull ghcr.io/timcsy/song-mixer:latest\n\n# 執行\ndocker run -p 8080:80 ghcr.io/timcsy/song-mixer:latest\n```\n\n#### 自行建置映像\n\n```bash\n# 建置映像\ndocker build -t song-mixer .\n\n# 執行（CPU 模式）\ndocker run -p 8080:80 song-mixer\n\n# 執行（GPU 模式，需要 NVIDIA GPU）\ndocker run --gpus all -p 8080:80 -e DEVICE=cuda song-mixer\n```\n\n啟動後訪問: http://localhost:8080\n\n### 使用 docker-compose\n\n#### 使用預建映像\n\n建立 `docker-compose.yml`：\n\n```yaml\nservices:\n  song-mixer:\n    image: ghcr.io/timcsy/song-mixer:latest\n    ports:\n      - \"8080:80\"\n    restart: unless-stopped\n```\n\n```bash\n# 啟動\ndocker compose up -d\n\n# 查看日誌\ndocker compose logs -f\n\n# 停止\ndocker compose down\n```\n\n#### 自行建置\n\n```bash\n# 使用專案內的 docker-compose.yml 建置並啟動\ndocker compose up --build -d\n```\n\n## 環境變數\n\n| 變數 | 預設值 | 說明 |\n|------|--------|------|\n| `DEVICE` | `cpu` | 運算裝置 (cpu/cuda) |\n| `MAX_CONCURRENT_JOBS` | `2` | 最大並發任務數 |\n| `MAX_VIDEO_DURATION` | `600` | 最大影片長度（秒） |\n| `JOB_TIMEOUT_MINUTES` | `30` | 任務超時時間（分鐘） |\n\n## 技術架構\n\n- **Frontend:** Vue 3 + TypeScript + Vite + Tone.js\n- **Backend:** FastAPI + Python 3.11（YouTube 代理）\n- **AI Model:** Demucs (htdemucs) / ONNX Runtime (WebAssembly)\n- **Audio Processing:** Web Audio API + Tone.js\n- **Storage:** IndexedDB（前端）\n\n## 開發\n\n### 本地開發（前端）\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n### 本地開發（後端 + 前端）\n\n```bash\n# 啟動後端\ncd backend\npip install -r requirements.txt\nuvicorn app.main:app --reload\n\n# 啟動前端\ncd frontend\nnpm install\nnpm run dev\n```\n\n## 注意事項\n\n- 純前端模式需要瀏覽器支援 SharedArrayBuffer\n- CPU 模式下處理時間較長，請耐心等待\n- 建議單次處理一個任務以獲得最佳效能\n- 影片長度限制預設為 10 分鐘\n\n## 授權\n\nMIT License\n\n## 致謝\n\n- [Demucs](https://github.com/facebookresearch/demucs) - Meta AI 的音源分離模型\n- [Tone.js](https://tonejs.github.io/) - Web Audio API 框架\n- [yt-dlp](https://github.com/yt-dlp/yt-dlp) - YouTube 下載工具\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimcsy%2Fsong-mixer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimcsy%2Fsong-mixer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimcsy%2Fsong-mixer/lists"}