Skip to content
kothingPublic
forked from yixunfei/voiceTTS

About

VoiceTTS Studio 是一个面向剧本、话剧、有声书和多角色朗读场景的桌面 TTS 编辑器。通过导入剧本到工作台中,基于AI进行人物角色分析,语音生成,场景布置。项目基于 Tauri、React 和 Rust 构建,前端负责文本编辑、SSML 标记、角色管理和音频播放,后端负责配置存储、TTS 请求、音频保存以及大模型辅助能力。

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

VoiceTTS Studio

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 子目录。

典型使用流程

  1. 在配置面板中添加 TTS Provider,并填写 API Key、模型和默认音色。
  2. 可选:添加 AI Provider,用于剧本结构化分析、角色声音设计和提示词生成。
  3. 导入剧本文稿,或直接在编辑器中输入文本。
  4. 使用本地解析或 AI 分析生成场景、角色和台词结构。
  5. 为角色选择音色预设,调整语速、音高、音量、情绪和朗读提示。
  6. 对需要细节控制的片段插入 SSML 标签。
  7. 按台词生成音频,在播放器中试听。
  8. 对成品片段进行拼接,导出完整音频。

Provider 能力差异

不同 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。

About

VoiceTTS Studio 是一个面向剧本、话剧、有声书和多角色朗读场景的桌面 TTS 编辑器。通过导入剧本到工作台中,基于AI进行人物角色分析,语音生成,场景布置。项目基于 Tauri、React 和 Rust 构建,前端负责文本编辑、SSML 标记、角色管理和音频播放,后端负责配置存储、TTS 请求、音频保存以及大模型辅助能力。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages