| Crates.io | gpt-sovits |
| lib.rs | gpt-sovits |
| version | 0.1.0 |
| created_at | 2025-09-16 02:40:25.530429+00 |
| updated_at | 2025-09-16 02:40:25.530429+00 |
| description | A Rust implementation of GPT-SoVITS for high-performance voice synthesis and voice cloning |
| homepage | |
| repository | https://github.com/mzdk100/GPT-SoVITS.git |
| max_upload_size | |
| id | 1840862 |
| size | 8,984,996 |
本库是使用Rust实现的GPT-SoVITS模型推理引擎,GPT-SoVITS是一个强大的语音合成和语音克隆模型。通过Rust实现,本项目提供了高效、跨平台的部署能力,并对模型进行了深度优化。
直接从crates.io上获取:
cargo add gpt-sovits
use gpt_sovits::{GptSoVitsModel, LangId, SamplingParams, StreamExt};
async fn example() -> Result<(), Box<dyn std::error::Error>> {
// 初始化模型
let assets_dir = std::path::Path::new("assets");
let mut tts = GptSoVitsModel::new(
assets_dir.join("custom_vits.onnx"),
assets_dir.join("ssl.onnx"),
assets_dir.join("custom_t2s_encoder.onnx"),
assets_dir.join("custom_t2s_fs_decoder.onnx"),
assets_dir.join("custom_t2s_s_decoder.onnx"),
Some(assets_dir.join("bert.onnx")),
Some(assets_dir.join("g2pW.onnx")),
Some(assets_dir.join("g2p_en")),
)?;
// 获取参考音频数据
let ref_data = tts
.get_reference_data("assets/ref.wav", "参考音频的文本", LangId::Auto)
.await?;
// 设置采样参数
let sampling_params = SamplingParams::builder()
.top_k(4)
.top_p(0.9)
.temperature(1.0)
.repetition_penalty(1.35)
.build();
// 合成语音
let mut stream = tts
.synthesize("要合成的文本内容", ref_data, sampling_params, LangId::Auto)
.await?;
// 处理合成的音频流
while let Some(item) = stream.next().await {
let audio_samples = item?;
// 处理音频样本...
}
Ok(())
}
项目提供了两个示例应用:
桌面应用 - 位于desktop文件夹,支持Windows和macOS平台
cargo run --release -p gpt-sovits-desktop
移动应用 - 位于mobile文件夹,支持Android平台
# 需要先安装cargo-apk2
cargo install cargo-apk2
# 然后构建并运行
cargo apk2 run -p gpt-sovits-mobile --release
详细使用方法请查看各示例文件夹中的README文件。
使用本库需要下载以下模型文件:
下载后,将模型文件放置在assets目录中。
详细的API文档可通过以下命令生成:
cargo doc --open
本项目对GPT-SoVITS模型进行了多项优化:
欢迎提交Pull Request或Issue来改进本项目。贡献前请先查看项目的Issue列表,确保不与现有工作重复。
感谢gpt-sovits-onnx-rs对模型优化做出的巨大工作。
本项目采用Apache 2.0许可证。