VoiceTTS Studio 是一个面向剧本、话剧、有声书和多角色朗读制作的桌面 TTS 编辑器。它把剧本文本解析、角色音色管理、SSML 表现控制、AI 剧本分析和音频生成整合到一个可反复调整的制作工作流中,适合需要长文本、多角色、多段落精细处理的语音内容创作场景。
GitHub 项目描述: 面向剧本、有声书和多角色朗读制作的 Tauri 桌面 TTS 编辑器,支持 SSML、AI 剧本分析、角色音色管理与多 Provider 语音合成。
- 剧本文本导入与解析:支持导入
txt、md、pdf、epub、html、json、xml、ssml等文本或文档格式,并将内容整理为可编辑的剧本工程。 - 多角色朗读工作流:识别台词、旁白、舞台提示、场景和角色信息,为不同角色分配模型、音色、语速、音高、音量和表演提示。
- SSML 编辑能力:提供普通文本、可视化 SSML 和原始 SSML 编辑路径,用于控制停顿、朗读方式、读音、语言、韵律、强调和环境音等表现。
- AI 剧本辅助:通过 OpenAI-compatible、Anthropic 或 LM Studio 类接口分析剧本,生成场景摘要、人物档案、声音形象、角色提示词和结构化台词。
- 多 Provider TTS 适配:后端已实现 CosyVoice、Qwen-TTS、MiniMax 等 Provider 适配,并对模型、音色、采样率、格式和 SSML 能力做了 Provider 级兼容处理。
- 自定义音色管理:支持声音设计、声音复刻、自定义音色列表查询、更新、删除,以及将 AI 生成的角色声音提示词转换为可复用音色预设。
- 音频生成与拼接:按台词片段生成音频,保存音频记录,在应用内试听,并可将多个片段拼接为完整演出音频。
- 本地工程数据:Provider、AI Provider、音色预设、SSML 模板、工程、剧本状态和音频记录保存在本地 SQLite 数据库中。
- 桌面框架:Tauri 2
- 前端:React 19、TypeScript、Vite、CodeMirror、Zustand、lucide-react
- 后端:Rust、Tokio、reqwest、rusqlite、quick-xml、pdf-extract、zip
- 本地存储:SQLite
- 文档解析:TXT/Markdown/JSON/XML/SSML、PDF、EPUB、HTML
- AI 接口:OpenAI-compatible、Anthropic、LM Studio 兼容接口
- TTS Provider:CosyVoice、Qwen-TTS、MiniMax
.
├── src/ # React 前端应用
│ ├── components/ # 编辑器、配置、播放器、布局等 UI 组件
│ ├── hooks/ # 前端业务 hooks
│ ├── lib/ # 剧本解析、SSML、TTS 请求、音色目录等工具
│ ├── stores/ # Zustand 状态管理
│ └── types/ # 前端类型与 Provider/模型/音色定义
├── src-tauri/ # Tauri/Rust 后端
│ ├── src/commands/ # 配置、LLM、TTS、文档读取等 Tauri 命令
│ ├── src/providers/ # TTS Provider 适配器
│ ├── src/db.rs # SQLite 初始化与数据访问
│ └── tauri.conf.json # Tauri 应用配置
├── scripts/ # 本地测试与打包脚本
├── public/ # 静态资源
├── test_resource/ # 本地测试资源
└── build/ # 前端构建产物
- Node.js
^20.19.0 || >=22.12.0,建议使用当前 LTS 版本 - npm
- Rust 1.77.2+
- Tauri 2 所需的系统依赖
- Windows:Microsoft C++ Build Tools / Visual Studio Build Tools、WebView2
- macOS:Xcode Command Line Tools
- Linux:WebKitGTK、GTK、libayatana-appindicator 等 Tauri 依赖
详细系统依赖可参考 Tauri 2 官方环境准备文档。不同平台的包名会有差异。
安装前端依赖:
npm install启动 Tauri 桌面开发模式:
npm run tauri dev也可以只启动前端开发服务:
npm run dev只运行前端时,依赖 Tauri 命令的能力无法完整工作,例如本地文件读取、SQLite 配置、TTS 请求和音频保存。
| 命令 | 说明 |
|---|---|
npm run dev |
启动 Vite 前端开发服务 |
npm run build |
执行 TypeScript 检查并构建前端产物 |
npm run preview |
预览前端构建结果 |
npm run tauri |
调用 Tauri CLI |
npm run test:run |
执行前端构建、Rust cargo check,然后启动 Tauri dev app |
npm run package:release |
构建 release app,不生成安装包 |
npm run package:installer |
构建 Tauri 安装包 |
Rust 后端也可以单独检查:
cd src-tauri
cargo check构建前端:
npm run build构建 release 可执行文件:
npm run package:release构建安装包:
npm run package:installer默认输出目录:
- 可执行文件:
src-tauri/target/release - 安装包:
src-tauri/target/release/bundle
首次运行后,在应用内打开服务配置,添加至少一个 TTS Provider。
TTS Provider 常用字段:
- 名称:用于在应用内区分不同服务配置。
- 类型:
cosyvoice_http、qwentts_http、minimax_http等。 - 区域:内置 DashScope 地址目前区分
beijing和singapore。 - API Key:对应服务商的访问密钥。
- 自定义 endpoint:可选;填写后会覆盖内置接口地址。
- 并发与速率:后端会按 Provider 维度做请求队列和速率限制。
AI Provider 常用字段:
- 协议:
openai、anthropic、lmstudio或其他兼容协议。 - Base URL:OpenAI-compatible 或本地 LM Studio 服务地址。
- API Key:本地 LM Studio 可留空,远程服务通常必填。
- 模型:用于剧本分析、角色设计和提示词生成。
默认本地 LM Studio 配置指向:
http://127.0.0.1:4321
应用会在本地保存数据库、音频和工程文件。API Key 也会随 Provider 配置保存在本地 SQLite 数据库中,请不要将个人数据目录提交到仓库。
默认数据库位置:
- Windows:
%APPDATA%\voiceTTS\voicetts.db - macOS:
~/Library/Application Support/voiceTTS/voicetts.db - Linux:
$XDG_DATA_HOME/voiceTTS/voicetts.db或~/.local/share/voiceTTS/voicetts.db
默认音频位置:
- Windows:
%APPDATA%\voiceTTS\audio - macOS/Linux:
~/.voicetts/audio
如果工程指定了独立目录,生成音频会写入该工程目录下的 audio 子目录。
- 在配置面板中添加 TTS Provider,并填写 API Key、模型和默认音色。
- 可选:添加 AI Provider,用于剧本结构化分析、角色声音设计和提示词生成。
- 导入剧本文稿,或直接在编辑器中输入文本。
- 使用本地解析或 AI 分析生成场景、角色和台词结构。
- 为角色选择音色预设,调整语速、音高、音量、情绪和朗读提示。
- 对需要细节控制的片段插入 SSML 标签。
- 按台词生成音频,在播放器中试听。
- 对成品片段进行拼接,导出完整音频。
不同 TTS 服务对参数和 SSML 的支持范围不同。项目会在请求前做部分兼容处理,例如:
- Qwen-TTS 会强制使用服务支持的输出格式和采样率,并关闭 SSML。
- CosyVoice 只在支持 SSML 的音色上保留 SSML 开关。
- MiniMax 会使用自身支持的模型、音色、情绪和音频格式参数。
- 自定义或设计音色会尽量保留传入的
voice_id,避免被系统内置音色覆盖。
最终合成效果和可用参数仍以服务商接口能力为准。
发布到 GitHub 前建议确认以下事项:
- 添加明确的
LICENSE文件,例如 MIT、Apache-2.0、GPL-3.0 或其他符合你目标的许可证。 - 移除个人 API Key、本地数据库、生成音频、调试日志和临时构建产物。
- 确认
test_resource/中的示例文本、EPUB 或剧本资源拥有可公开分发的授权。 - 检查
build/是否需要纳入仓库;多数开源项目只提交源码,不提交构建产物。 - 在发布页面补充应用截图、支持平台、已知限制和第三方服务费用说明。
欢迎通过 Issue 或 Pull Request 参与改进。比较适合优先完善的方向包括:
- 补充自动化测试和端到端测试。
- 增加更多 TTS Provider。
- 改进 SSML 可视化编辑体验。
- 增强长篇剧本的分段、断点续跑和失败重试能力。
- 补充跨平台打包与发布流水线。
本项目使用 MIT License 开源。详见 LICENSE。