状态:v1.0.0 Release Candidate。尚未通过全部发布硬门,不是正式发布版。
面向 Windows 10/11 的本地文字转语音、零样本声音克隆和 GPT-SoVITS V2ProPlus 微调桌面程序。模型推理、转写和训练均在本机运行;AI 翻唱的“联网找歌词”会把歌名、歌手、搜索词和歌曲时长发送到 LRCLIB,以查找公开歌词,不会上传音频、路径或使用统计。该功能需要网络,也可以继续导入 LRC 或使用本地识别。
- 界面由 QtWebEngine 渲染 HTML v4 原型(与
VoiceStudio_Full_UI_Prototype_v4.html视觉一致),全部工作流通过 QWebChannel 接入真实本地服务:AI 翻唱(导入、权利声明、UVR5/RoFormer 分离、变调建议、AI 人声、混音、导出)、文字生成、我的声音、训练声音、音频分离、导出中心、任务中心与设置。 - AI 翻唱工作台视觉已与 HTML 原型对齐,包含歌曲/声音筛选、波形内紧凑“版本对比”、五轨时间线、同步歌词和快速混音。支持时间戳 LRC 随播放高亮、点击歌词 Seek、手动校准偏移;也可本地识别或联网搜索公开 LRC。在线结果按用户选择写入当前工程,纯文本歌词不伪造时间轴;原唱 Remix 等不一定能找到精确匹配,需核对候选歌手与时长。
- Singing Model 产品链已接入独立锁定的 RVC v2/RMVPE/HuBERT 运行时:正式“一键训练”页面只接受当前声音的 SourceAsset ID,由 Worker 在项目内构建不可变训练快照;RVC 模型经受限加载、Index 校验和授权短音频真实推理验证后才可启用。
- 正式 AI 翻唱页面可从已分离 Vocal 生成带
ai_generated标识的 AI Vocal,支持真实波形、Seek、原唱/AI 人声 A/B 单轨试听、Pitch、缓存、取消与重开恢复。 - Quick Mixer 支持 AI 人声、伴奏和可选原唱人声增益;最终渲染在 Worker 后台统一转换为 48 kHz 立体声,执行混音归一化、防削波限制、缓存和原子发布,并登记
final_mixCoverAsset。 - 成品 Export Dialog 支持 WAV、320 kbps MP3 或同时导出,绝不静默覆盖文件;每次导出同时生成
.voicestudio.json,记录 AI 生成标识、歌曲权利声明、声音/模型、混音参数及输出 SHA-256。 - Cover 工程已分为 Application Command、Domain、Preview Controller、Mix/Export Service 与基础设施适配层;旧版 CoverProject 和 Worker JSONL 接口保持兼容。
- 导入音频和麦克风录音统一保存为
SourceAsset;SHA-256 去重、解码、声道、响度、削波和长静音检查,原始文件永不覆盖。 - 声音配置可在尚无参考转写时保存;状态、素材、零样本参考、数据集快照及 GPT/SoVITS 检查点持久化,并同步刷新三个页面。
- 中文/英文混合长文本安全分段、可恢复任务记录、WAV 分段和 WAV/320 kbps MP3 合并输出。
- “数据与训练”默认直接使用声音库素材,经单声道标准化、可选人声分离/降噪、VAD、ASR、人工校对后冻结不可变快照;录音仅用于补充。
- 每次数据准备使用独立
preparation_id,训练特征与冻结快照 ID/哈希强绑定;每次新训练使用独立运行、日志和检查点目录,不会静默恢复旧训练。 - 持久化
TrainingWorkflow和DatasetDraft;每个阶段原子落盘,重启后由用户点击“继续上次任务”,不会自动占用 GPU。 - 训练结果保存为
ModelVersion。候选模型通过真实加载及固定中文/中英混合 WAV 验证后自动启用,旧活动版本始终保留并可回退。 - 60 秒训练门槛只统计“已人工确认、文本非空、纳入训练且无质量问题”的切片,不统计原文件总时长。
- 真实临时试听调用 GPT-SoVITS 并用 QMediaPlayer 自动播放,只写入
%LOCALAPPDATA%\LocalVoiceStudio\cache\preview的 WAV,不生成 MP3。 - stdin/stdout JSON Lines 单任务工作进程;新增
render_cover、export_cover,歌唱训练、转换、最终渲染和导出均使用严格字段白名单,客户端不能指定受控输入或模型路径。 - 固定 GPT-SoVITS 提交
d523079fc05d9a8028d6085bffe4a2757c32abb6与 V2ProPlus 推理接口。 - 私有 Python 3.11、PyTorch 2.7.1+cu128、FFmpeg 和模型的一键安装/修复,不修改系统 PATH。
- SQLite 任务/设置索引;可迁移
project.json和raw/processed/datasets/checkpoints/exports项目结构。
当前电脑已有 Python 3.10 和 PySide6,可在 PowerShell 中运行:
$env:PYTHONPATH = "src"
& "C:\Users\cruelworld\AppData\Local\Programs\Python\Python310\python.exe" -m local_voice_studio界面是 QtWebEngine 渲染的 HTML v4 工作台,启动后即可导入歌曲、训练声音、生成语音与导出成品。
打开“设置”,点击“安装/修复本地引擎”。默认从 ModelScope 下载,适合中国大陆网络;也可在 PowerShell 中选择其他来源:
.\scripts\bootstrap_runtime.ps1 -DataRoot "$env:LOCALAPPDATA\LocalVoiceStudio" -Source HF安装会下载数 GB 运行环境和模型。完成后检测报告必须同时显示:
- Torch
2.7.1+cu128 - GPU
RTX 5070 Ti - 架构
sm_120 - 真实 CUDA 张量测试通过
旧的 Torch 2.6.0+cu124 即使显示 CUDA 可用也不能在该显卡上生成或训练。
- 在“AI 翻唱”导入本地 WAV、MP3 或 FLAC;程序复制源歌曲到
covers/<cover_id>/source/,原文件永不修改。 - 可载入同名 LRC 或手动选择 LRC。波形按 FFmpeg 流式解码,最多保存 6000 个峰值。
- 点击“分离人声 / 伴奏”,确认歌曲处理与使用权利声明后选择 UVR5。普通分离 stem 标记为
separated,不是 AI 翻唱成品。 - 完成后选择已授权且具备“已验证”歌唱模型的声音,设置 Pitch 并点击“生成 AI 人声”。生成结果登记为项目
CoverAsset,重开后自动恢复真实波形。 - 使用 Quick Mixer 实时试听 AI 人声、伴奏和可选原唱,所有播放器共享播放、暂停、Seek,并自动校正超过 50 ms 的漂移。
- 点击“生成最终翻唱”得到真实
final_mix波形;相同资产与混音参数直接命中缓存。随后可导出 WAV、MP3 或两者及 AI provenance sidecar。 - manifest、stem、歌词、波形和最终混音均保存在当前项目,关闭并重开后可恢复。
已实现音高平滑(Pitch Smoothing:关闭 / 轻度 / 中度),用于平滑 F0 曲线,不提供调式检测或音符吸附。自动歌词使用本地 SenseVoice/FSMN-VAD,需先完成固定模型安装;自动识别结果可编辑,并不代表官方歌词。同步 LRC 的时间点通常按行对齐,不代表逐字卡拉 OK 对齐。
当前尚未实现:音阶吸附式修音、和声分离、逐字歌词、账号与支付。在线歌词依赖外部 LRCLIB 服务及其公开曲库,覆盖率和可用性无法保证。RVC 训练/推理和 RoFormer 高质量分离仅在独立运行时及其必需模型资产完成安装、校验后可用;未就绪时不会生成假文件。
- 在“一键训练”填写声音名称并确认授权,拖入一批音频或选择整个文件夹。
- 点击“开始自动处理”;程序自动质检、去重、优化、标准化、切片并本地识别文字。
- 页面默认只显示异常片段。修正后点击“确认并训练”,所有合格片段会一次性写入人工确认状态;不足 60 秒会直接提示还差多少秒。
- 程序自动冻结快照、准备特征、开始全新训练并生成两条固定验证试听;验证成功后自动启用新版本,失败时保留旧版本。
- 在“我的声音”可试听、追加素材、重新训练或回退旧版本;在“一键生成”输入文字即可同时得到 WAV 和 320 kbps MP3。
新版目录结构如下:
processed/<profile_id>/runs/<preparation_id>/{normalized,separated,denoised,segments}
datasets/working/<profile_id>/<preparation_id>/{asr,preparation.json}
datasets/<snapshot_id>/{audio,dataset.list,manifest.json}
%LOCALAPPDATA%/LocalVoiceStudio/training/<profile_id>/<snapshot_sha256>/features
%LOCALAPPDATA%/LocalVoiceStudio/training/<profile_id>/<snapshot_sha256>/runs/<training_run_id>
checkpoints/<profile_id>/<training_run_id>
covers/<cover_id>/{manifest.json,source,stems,lyrics,waveform,generated,exports}
旧版 project.json 会无损迁移到项目 schema 4,并增加稳定 project_uid、训练步骤结果和持久化生成记录;冻结快照仍保持 schema 2 和原有哈希算法。旧绝对路径快照会把仍可找到的音频复制进快照 audio 目录并改写为相对路径,缺失文件会明确报错。缺失的授权记录不会被自动伪造。
MP3 转成 WAV 不会恢复已经丢失的信息。带配乐、混响或他人声音的素材应先清理并逐段试听,训练数据优先使用无配乐的原始 WAV/FLAC。
python -m pytest
& "C:\Users\cruelworld\AppData\Local\Programs\Python\Python310\python.exe" scripts\smoke_ui.py
.\scripts\build.ps1 -SkipInstaller安装 Inno Setup 6 后运行 .\scripts\build.ps1,安装程序输出到 dist\installer。卸载只删除应用本体,默认保留 %LOCALAPPDATA%\LocalVoiceStudio 和“文档”中的项目、模型、录音及输出。
- 声音配置必须确认说话人本人或明确授权。
- 工作进程不监听端口,不提供局域网或公网 API。
- 原始音频不覆盖;声音素材复制到项目
raw,歌曲副本复制到covers/<cover_id>/source。 - 未确认本人或授权使用的
VoiceProfile在翻唱目标声音选择器中不可选。歌曲权利确认只是用户声明,VoiceStudio 不声称替用户取得歌曲、录音或发行授权。 content_origin仅使用original、separated、ai_generated;第二阶段没有 AI 音频输出,UVR5 stem 不会被错标为 AI 生成。- 公开源码仓库不包含真人声音;
参考声音/与常见私钥格式由预推送检查阻止提交。 - 运行时资产、依赖和模型按版本化 SHA-256 清单验证;模型仅允许 PyTorch 受限反序列化,不回退到
weights_only=False。 - 开发构建会明确标记为未签名;正式 Release 必须通过 Authenticode 签名校验,并生成 SHA256SUMS、CycloneDX SBOM 和构建证明。
- 同一时间只运行一个 GPU 任务;取消训练会终止完整子进程树。
- 当前不提供实时变声、账号、云同步或移动端。