IndexTTS2 本地语音合成
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_d0c0b7f4/index-tts2-skills。
技能介绍
解决的痛点
在本地使用 IndexTTS2 生成口播或旁白音频时,通常需要手动打开 WebUI,输入文本,点击“生成语音”按钮,然后等待并下载文件。这种交互方式难以集成到自动化流水线中,且每次启动或切换任务都需要人工介入。此外,如果直接调用底层模型,会导致模型被重复加载,瞬间吃掉双倍显存,给本地部署带来不必要的资源压力。
核心能力与工作流
该技能通过 gradio_client 直接与已经运行的 IndexTTS2 WebUI (webui.py) 进程通信,完美复用了 WebUI 的推理路径。这意味着模型只会在 WebUI 启动时加载一次,后续的自动化调用不会增加额外的 VRAM 开销。
核心工作流如下:
- 环境与进程检查:首先探测
127.0.0.1:7860端口。若 WebUI 未运行且允许自动启动,技能会在后台拉起webui.py(首次加载需 1-2 分钟)。 - 音色与文案准备:默认使用
outputs/presets/下的 Hai 预设(prompt.wav)作为声音参考。文案长度可参考约 4.5 字/秒的节奏来估算。 - 程序化调用:执行
scripts/generate_tts.py。脚本会动态读取/gen_single接口签名,填充默认参数,并覆写需要控制的字段,最终返回生成的 WAV 文件绝对路径(通过OUTPUT:{path}标识)。
适用边界与注意事项
- 参数传递陷阱:在调用
/gen_single时,emo_control_method必须传入选项文本字符串而非数字索引;声音参考音频必须封装为 Gradio 的FileData字典,不能直接传裸文件路径。 - 返回值解析:接口返回的是
gr.update(...)字典,实际的音频文件会落盘到outputs/spk_{timestamp}.wav,需通过解析OUTPUT:行或文件系统确认结果。 - 硬件性能:在 Apple Silicon (MPS) 上推理速度明显慢于 CUDA,生成较长音频时需预留更多时间。
- 进程管理:WebUI 进程会在多次调用间保持存活以复用显存,调用结束后可根据需要由用户决定是否手动终止。
使用场景
- 在为视频项目批量生成旁白时,直接调用脚本驱动本地WebUI,省去手动点击合成按钮的重复操作
- 本地部署了IndexTTS2且显存有限,需要通过复用已运行的WebUI进程来避免模型二次加载
- 内容创作者需要将固定的Hai音色预设应用到不同文案的口播音频中,保持声音一致
- 在自动化流水线里调用generate_tts.py,根据给定的目标时长自动估算并生成对应长度的文案音频
适合人员
- 需要将TTS生成接入自动化脚本或流水线的后端开发者
- 在本地运行IndexTTS2且关注显存占用的AI应用工程师
- 定期制作视频口播或播客,希望用脚本批量生成音频的内容创作者
- 希望脱离WebUI手动点击,用命令行参数精细控制音色和情绪强度的技术爱好者