{"id":51303670,"url":"https://github.com/jingangdidi/voice_clone","last_synced_at":"2026-06-30T22:04:49.486Z","repository":{"id":308508693,"uuid":"1033021362","full_name":"jingangdidi/voice_clone","owner":"jingangdidi","description":"An OpenVoice-based voice cloning tool, single executable file (~14M), supporting multiple formats without dependencies on ffmpeg, Python, PyTorch, ONNX. 基于OpenVoice的声音克隆工具，免安装的单个可执行文件（~14M），支持多种格式，不依赖ffmpeg、python、pytorch、onnx","archived":false,"fork":false,"pushed_at":"2026-01-18T05:51:12.000Z","size":31571,"stargazers_count":42,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-18T15:37:42.271Z","etag":null,"topics":["audio-processing","deep-learning","voice-cloning","voice-conversion"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/jingangdidi.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-06T07:21:45.000Z","updated_at":"2026-01-18T12:54:06.000Z","dependencies_parsed_at":"2025-08-06T10:34:40.391Z","dependency_job_id":"2aecbf45-11ea-40f0-82c5-0034e5c44bc6","html_url":"https://github.com/jingangdidi/voice_clone","commit_stats":null,"previous_names":["jingangdidi/voice_clone"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/jingangdidi/voice_clone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingangdidi%2Fvoice_clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingangdidi%2Fvoice_clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingangdidi%2Fvoice_clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingangdidi%2Fvoice_clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jingangdidi","download_url":"https://codeload.github.com/jingangdidi/voice_clone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingangdidi%2Fvoice_clone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34984791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["audio-processing","deep-learning","voice-cloning","voice-conversion"],"created_at":"2026-06-30T22:04:48.940Z","updated_at":"2026-06-30T22:04:49.481Z","avatar_url":"https://github.com/jingangdidi.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# voice_clone\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/jingangdidi/voice_clone/blob/main/LICENSE)\n\n[中文文档](https://github.com/jingangdidi/voice_clone/blob/main/README_zh.md)\n\n**An [OpenVoice](https://github.com/myshell-ai/OpenVoice)-based voice cloning tool, single executable file (~14M), supporting multiple formats without dependencies on ffmpeg, Python, PyTorch, ONNX.**\n\n**基于[OpenVoice](https://github.com/myshell-ai/OpenVoice)的声音克隆工具，免安装的单个可执行文件（~14M），支持多种格式，不依赖ffmpeg、python、pytorch、onnx**\n\n## 👑 Features\n- ​💪​ Single-file executable - no installation required\n- 🎈 Independent of FFmpeg, Python, PyTorch, and ONNX\n- 🎨​ Support multiple formats (e.g. mp4, mp3, wav)\n- 👄 Offer multiple built-in base speakers: en-au, en-br, en-default, en-india, en-newest, en-us, es, fr, jp, kr, zh\n- 💻​ Support CPU \u0026 GPU\n\n## 🚀 Quick-Start\n**structure**\n```\nsome dir\n├─ voice_clone    # single executable file\n└─ checkpoints_v2 # OpenVoice model\n     └─ converter # use -m specify this dir, default: ./checkpoints_v2/converter\n          ├─ config.json\n          └─ checkpoint.pth\n```\n**1. download a pre-built binary**\n\n[latest release](https://github.com/jingangdidi/voice_clone/releases)\n\n**2. download OpenVoice modle**\n\n[checkpoints_v2](https://myshell-public-repo-host.s3.amazonaws.com/openvoice/checkpoints_v2_0417.zip)\n\n**3. convert some voice to your voice**\n```\n./voice_clone -s raw_voice.wav -t your_voice.wav\n```\n\n## 😁 Usage Example\n**1. convert tone color of \"test.mp4\" to default built-in base speaker \"en-default\"**\n```\nvoice_clone -s test.mp4\n```\noutput 1 file:\n```\ntest--en-default.wav # test.mp4 --\u003e en-default\n```\n**2. convert tone color of \"test1.mp4\" and \"test2.wav\" to built-in base speaker \"zh\"**\n```\nvoice_clone -s test1.mp4:test2.wav -t zh\n```\noutput 2 files:\n```\ntest1--zh.wav # test1.mp4 --\u003e zh\ntest2--zh.wav # test2.wav --\u003e zh\n```\n**3. convert tone color of \"test.mp4\" to built-in base speaker \"zh\" and \"my_voice.wav\"**\n```\nvoice_clone -s test.mp4 -t zh:my_voice.wav\n```\noutput 2 files:\n```\ntest--zh.wav       # test.mp4 --\u003e zh\ntest--my_voice.wav # test.mp4 --\u003e my_voice.wav\n```\n**4. convert tone color of \"test1.mp4\" and \"test2.wav\" to built-in base speaker \"zh\" and \"my_voice.wav\", save extracted tone color**\n```\nvoice_clone -s test1.mp4:test2.wav -t zh:my_voice.wav -S -n result1.wav:result2.wav -o ./result\n```\noutput 5 files:\n```\ntest1.tone           # test1.mp4 tone color, next time use test1.mp4, will skip extract tone color from test1.mp4, use test1.tone directly\ntest2.tone           # test2.wav tone color, next time use test2.wav, will skip extract tone color from test2.wav, use test2.tone directly\nmy_voice.tone        # my_voice.wav tone color, next time use my_voice.wav, will skip extract tone color from my_voice.wav, use my_voice.tone directly\n./result/result1.wav # test1.mp4 --\u003e zh\n./result/result2.wav # test2.wav --\u003e my_voice.wav\n```\n\n## ⚡️ Performance\nos: ubuntu 22.04, CPU: i7-13700K, GPU: NVIDIA GeForce RTX 4090, cuda: 12.2\n| CPU/GPU | thread | elapsed time | command                                 |\n| ------- | ------ | ------------ | --------------------------------------- |\n| CPU     | 1      | ~40s         | voice_clone -s test_data/test.wav -T 1  |\n| CPU     | 10     | ~16s         | voice_clone -s test_data/test.wav -T 10 |\n| CPU     | 20     | ~15s         | voice_clone -s test_data/test.wav -T 20 |\n| CPU     | all    | ~14s         | voice_clone -s test_data/test.wav -T 0  |\n| GPU     |        | ~1.6s        | voice_clone -s test_data/test.wav       |\n\n## 🛠 Building from source\n- **default use cpu and simple vad (not require onnx)**\n```\ngit clone https://github.com/jingangdidi/voice_clone.git\ncd voice_clone\ncargo build --release\n```\n\n- **use silero vad (require onnx)**\n```diff\n- default = [\"simple_vad\"]\n+ default = [\"silero_vad\"]\n```\n\n- **use GPU**\n```diff\n- candle-core = { git = \"https://github.com/jingangdidi/candle\", package = \"candle-core\", branch = \"main\" }\n+ candle-core = { git = \"https://github.com/jingangdidi/candle\", package = \"candle-core\", branch = \"main\", features = [\"cuda\"] }\n\n- candle-nn = { git = \"https://github.com/jingangdidi/candle\", package = \"candle-nn\", branch = \"main\" }\n+ candle-nn = { git = \"https://github.com/jingangdidi/candle\", package = \"candle-nn\", branch = \"main\", features = [\"cuda\"] }\n```\n\n## 🚥 Arguments\n```\nUsage: voice_clone -s \u003csource\u003e [-t \u003ctarget\u003e] [-n \u003cname\u003e] [-m \u003cmodel\u003e] [-S] [-T \u003cthread\u003e] [-o \u003coutpath\u003e]\n\nvoice clone\n\nOptions:\n  -s, --source      source files, colon separated\n  -t, --target      target files, colon separated. -t also support base speakers: en-au, en-br, en-default, en-india, en-newest, en-us, es, fr, jp, kr, zh. default: en-default\n  -n, --name        result voice file names, colon separated, default: source--target.wav\n  -m, --model       openvoice model path, default: ./checkpoints_v2/converter\n  -S, --save        save source and target tone color to to the same directory as the specified -s and -t files, maintaining identical nomenclature while altering the format extension to \".tone\"\n  -T, --thread      cpu threads, 0 means all threads, default: 4\n  -o, --outpath     output path, default: ./\n  -h, --help        display usage information\n```\n\n## 📚 Acknowledgements\n- [OpenVoice](https://github.com/myshell-ai/OpenVoice)\n- [candle](https://github.com/huggingface/candle)\n- [silero-vad](https://github.com/snakers4/silero-vad)\n- [simple-vad](https://github.com/MorenoLaQuatra/vad)\n- [stft](https://github.com/phudtran/rustft)\n- [audio resample](https://github.com/bmcfee/resampy)\n\n## ⏰ changelog\n- [2026.01.18] release [v0.1.2](https://github.com/jingangdidi/voice_clone/releases/tag/v0.1.2)\n  - 🛠Fix: Audio file data types S24 and U24 parsing error.\n  - 🛠Fix: When specifying `-S`, the `.tone` file corresponding to the `-t` audio file was not saved.\n- [2025.08.25] release [v0.1.1](https://github.com/jingangdidi/voice_clone/releases/tag/v0.1.1)\n  - 🛠Fix: Replace the fixed value 44100 in the code with the actual sample rate of the source and target voice.\n  - ⭐️Add: Support print source and target tone cosine similarity.\n  - 💪🏻Optimize: Support voice less than 10 seconds.\n- [2025.08.08] release [v0.1.0](https://github.com/jingangdidi/voice_clone/releases/tag/v0.1.0)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjingangdidi%2Fvoice_clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjingangdidi%2Fvoice_clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjingangdidi%2Fvoice_clone/lists"}