ClawSkills logoClawSkills

Edge TTS

使用 node-edge-tts npm 包进行文本转语音转换,从文本生成音频。支持多种语音、语言、语速调整、音调控制。

介绍

# 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` 结尾)比标准语音提供更高的质量

更多产品