介绍
# Edge-TTS Skill
## 概述
通过 node-edge-tts npm 包,利用 Microsoft Edge 的神经 TTS 服务生成高质量文本转语音音频。支持多种语言、语音、可调节的语速/音调以及字幕生成。
## 快速开始
当您从触发器或用户请求中检测到 TTS 意图时:
1. **调用 tts 工具**(Clawdbot 内置)将文本转换为语音 2. 该工具返回一个 MEDIA: 路径 3. Clawdbot 将音频路由到当前频道
```javascript // Example: Built-in tts tool usage tts("Your text to convert to speech") // Returns: MEDIA: /path/to/audio.mp3 ```
## 触发器检测
将“tts”关键字识别为 TTS 请求。该技能会在转换前自动从文本中过滤掉 TTS 相关的关键字,以避免将触发词本身转换为音频。
## 高级自定义
### 使用 Node.js 脚本
如需更多控制,请直接使用随附的脚本:
#### TTS 转换器 ```bash cd scripts npm install node tts-converter.js "Your text" --voice en-US-AriaNeural --rate +10% --output output.mp3 ```
**选项:** - `--voice, -v`:语音名称(默认:en-US-AriaNeural) - `--lang, -l`:语言代码(例如 en-US, es-ES) - `--format, -o`:输出格式(默认:audio-24khz-48kbitrate-mono-mp3) - `--pitch`:音调调整(例如 +10%, -20%, default) - `--rate, -r`:速率调整(例如 +10%, -20%, default) - `--volume`:音量调整(例如 +0%, -10%, default) - `--save-subtitles, -s`:将字幕保存为 JSON 文件 - `--output, -f`:输出文件路径(默认:tts_output.mp3) - `--proxy, -p`:代理 URL(例如 http://localhost:7890) - `--timeout`:请求超时(毫秒,默认:10000) - `--list-voices, -L`:列出可用语音
#### 配置管理器 ```bash cd scripts npm install node config-manager.js --set-voice en-US-AriaNeural
node config-manager.js --set-rate +10%
node config-manager.js --get
node config-manager.js --reset ```
### 语音选择
常用语音(使用 `--list-voices` 获取完整列表):
**英语:** - `en-US-MichelleNeural`(女声,自然,**默认**) - `en-US-AriaNeural`(女声,自然) - `en-US-GuyNeural`(男声,自然) - `en-GB-SoniaNeural`(女声,英式) - `en-GB-RyanNeural`(男声,英式)
**其他语言:** - `es-ES-ElviraNeural`(西班牙语,西班牙) - `fr-FR-DeniseNeural`(法语) - `de-DE-KatjaNeural`(德语) - `ja-JP-NanamiNeural`(日语) - `zh-CN-XiaoxiaoNeural`(中文) - `ar-SA-ZariyahNeural`(阿拉伯语)
### 语速指南
语速值使用百分比格式: - `"default"`:正常速度 - `"-20%"` 到 `"-10%"`:慢速,清晰(教程、故事、无障碍) - `"+10%"` 到 `"+20%"`:稍快(摘要) - `"+30%"` 到 `"+50%"`:快速(新闻、效率)
### 输出格式
根据使用场景选择音频质量: - `audio-24khz-48kbitrate-mono-mp3`:标准质量(语音备忘录、消息) - `audio-24khz-96kbitrate-mono-mp3`:高质量(演示、内容) - `audio-48khz-96kbitrate-stereo-mp3`:最高质量(专业音频、音乐)
## 资源
### scripts/tts-converter.js
使用 node-edge-tts 的主 TTS 转换脚本。生成具有可自定义语音、语速、音量、音调和格式的音频文件。支持字幕生成和语音列表。
### scripts/config-manager.js
管理 TTS 设置(语音、语言、格式、音调、语速、音量)的持久化用户偏好。配置存储在 `~/.tts-config.json` 中。
### scripts/package.json
NPM 包配置,包含 node-edge-tts 依赖项。
### references/node_edge_tts_guide.md
node-edge-tts npm 包的完整文档,包括: - 按语言分类的完整语音列表 - 韵律选项(语速、音调、音量) - 用法示例(CLI 和模块) - 字幕生成 - 输出格式 - 最佳实践和局限性
### 语音测试
在以下网址测试不同的语音并预览音频质量:https://tts.travisvn.com/
当您需要特定的语音详细信息或高级功能时,请参阅此内容。
## 安装
要使用随附的脚本:
```bash cd /home/user/clawd/skills/public/tts-skill/scripts npm install ```
这将安装: - `node-edge-tts` - TTS 库 - `commander` - CLI 参数解析
## 工作流
1. **检测意图**:检查用户消息中的“tts”触发器或关键字 2. **选择方法**:对于简单请求使用内置的 `tts` 工具,或使用 `scripts/tts-converter.js` 进行自定义 3. **生成音频**:转换目标文本(消息、搜索结果、摘要) 4. **返回给用户**:tts 工具返回一个 MEDIA: 路径;Clawdbot 处理投递
## 测试
### 基础测试
运行测试脚本以验证 TTS 功能: ```bash cd /home/user/clawd/skills/public/edge-tts/scripts npm test ``` 这会生成一个测试音频文件并验证 TTS 服务是否正常工作。
### 语音测试
在以下网址测试不同的语音并预览音频质量:https://tts.travisvn.com/
### 集成测试
使用内置的 `tts` 工具进行快速测试: ```javascript // Example: Test TTS with default settings tts("This is a test of the TTS functionality.") ```
### 配置测试
验证配置持久化: ```bash cd /home/user/clawd/skills/public/edge-tts/scripts node config-manager.js --get node config-manager.js --set-voice en-US-GuyNeural node config-manager.js --get ```
## 故障排除
- **测试连接**:运行 `npm test` 检查 TTS 服务是否可访问 - **检查语音可用性**:使用 `node tts-converter.js --list-voices` 查看可用语音 - **验证代理设置**:如果使用代理,请使用 `node tts-converter.js "test" --proxy http://localhost:7890` 进行测试 - **检查音频输出**:测试应在 scripts 目录中生成 `test-output.mp3`
## 注意事项
- node-edge-tts 使用 Microsoft Edge 的在线 TTS 服务(已更新,可正常认证) - 无需 API 密钥(免费服务) - 默认输出为 MP3 格式 - 需要互联网连接 - 支持字幕生成(带有单词级计时的 JSON 格式) - **临时文件处理**:默认情况下,音频文件会保存到系统的临时目录(Unix 上为 `/tmp/edge-tts-temp/`,Windows 上为 `C:\Users\<user>\AppData\Local\Temp\edge-tts-temp\`),并使用唯一的文件名(例如 `tts_1234567890_abc123.mp3`)。文件不会自动删除——调用应用程序应在使用后处理清理工作。如果需要永久存储,可以使用 `--output` 选项指定自定义输出路径。 - **TTS 关键字过滤**:该技能会在转换前自动从文本中过滤掉 TTS 相关的关键字,以避免将触发词本身转换为音频 - 对于重复的偏好设置,请使用 `config-manager.js` 设置默认值 - **默认语音**:`en-US-MichelleNeural`(女声,自然) - 神经语音(以 `Neural` 结尾)比标准语音提供更高的质量