Skip to main content

generate-tts

使用 edge-tts(免费)、OpenAI TTS 或 Fish Audio TTS 将旁白文案转换为音频文件。当片段缺少 audio 字段、用户要求生成配音、或需要将脚本合成语音时使用。

설치로 이동

소스 정보

저장소
earayu/Hang2La-skills
최근 소스 활동
2026년 3월 11일 16:51
감지된 SKILL.md 언어
중국어
스타
1
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
generate-tts
description
使用 edge-tts(免费)、OpenAI TTS 或 Fish Audio TTS 将旁白文案转换为音频文件。当片段缺少 audio 字段、用户要求生成配音、或需要将脚本合成语音时使用。
# generate-tts 将文本转换为 MP3 音频文件,并输出实际音频时长。 ## 脚本用法 ```bash python skills/generate-tts/scripts/tts.py \ --text "要朗读的文案" \ --output 输出音频路径.mp3 \ [--voice 音色名称] \ [--provider edge-tts|openai|fish] \ [--config config.yaml] ``` **参数说明:** - `--text` — 旁白文案(用引号包裹) - `--output` — 输出 MP3 路径(目录不存在时自动创建) - `--voice` — TTS 音色名(覆盖 config 中该语言的默认音色) - `--provider` — `edge-tts`、`openai` 或 `fish`(覆盖 config 设置) - `--config` — `config.yaml` 路径(默认:当前目录下的 `config.yaml`) **标准输出(JSON):** ```json {"path": "projects/myvideo/audio/slide_01.mp3", "duration_seconds": 8.4} ``` ## 工作流 对每个缺少 `audio` 字段的片段: 1. 确认片段有 `text` 字段,没有则先生成文案。 2. 确定音色:`--voice` 参数 → config 中 `tts_voice`。通常只传 `--config`,音色由 config 统一管理。 3. 执行脚本,保存到 `projects/{name}/audio/slide_{index:02d}.mp3`。 4. 更新 `project.yaml`:将返回的路径写入 `audio`,将 `duration_seconds` 写入 `duration`。 ## 音色选择 **edge-tts(免费,默认):** - 中文:`zh-CN-XiaoxiaoNeural`(温柔女声)、`zh-CN-YunxiNeural`(男声)、`zh-CN-YunyangNeural`(播音男声) - 英文:`en-US-AriaNeural`、`en-US-GuyNeural`、`en-GB-SoniaNeural` **OpenAI TTS:** - 音色:`alloy`、`echo`、`fable`、`onyx`、`nova`、`shimmer` - 使用前需在 `config.yaml` 中设置 `openai_api_key`。 **Fish Audio TTS:** - `tts_voice` 填写 Fish Audio 的 `reference_id`(在 [fish.audio](https://fish.audio) 平台声音模型页面 URL 中获取) - 不填则使用平台默认声音(S1 模型) - 使用前需在 `config.yaml` 中设置 `fish_api_key`,或设置环境变量 `FISH_API_KEY` **config.yaml 示例:** ```yaml tts_provider: fish # 默认 provider(edge-tts / openai / fish) fish_api_key: "your_key" # Fish Audio API Key tts_voice: "2d25cc5dfbdc45cb996d2b200a6b72a1" # 音色(edge-tts 填音色名,Fish Audio 填 reference_id) ``` ## 文案长度说明 - edge-tts 无硬性字符限制,超长文本会流式处理。 - OpenAI TTS:每次最多 4096 个字符。更长的文本会自动按句子边界拆分,再将各段音频拼接。 - Fish Audio TTS:单次请求无严格字符限制,建议控制在合理长度内。 ## 常见错误与修复 | 错误信息 | 原因 | 修复方法 | |---------|------|---------| | `ModuleNotFoundError: No module named 'edge_tts'` | Python 依赖未安装 | 在项目根目录执行 `uv sync`(或 `pip install edge-tts`) | | `edge-tts: connect call failed` / `aiohttp.ClientConnectorError` | 网络问题,edge-tts 需要访问微软服务器 | 检查网络,必要时尝试切换到 `--provider openai` | | `AuthenticationError` / `Incorrect API key` | OpenAI API Key 无效 | 检查 `config.yaml` 中的 `openai_api_key` | | `fish_api_key not set` | Fish Audio Key 缺失 | 在 `config.yaml` 中添加 `fish_api_key` 或设置环境变量 `FISH_API_KEY` | | `Voice not found` | 音色名称错误 | edge-tts 运行 `python -m edge_tts --list-voices` 查看所有可用音色 | | 生成的音频只有 0 秒 | 文本为空或只有空白字符 | 确认 `project.yaml` 对应片段的 `text` 字段不为空 |
GitHub에서 보기