文本转语音(TTS)技能Skill tts

这个技能提供文本转语音(TTS)功能,支持使用ElevenLabs、macOS say和espeak提供商将文本转换为自然语音。适用于语音警报、市场通知、语音播报等场景,特别适合股票量化交易中的实时通知。关键词:文本转语音、语音合成、TTS、ElevenLabs、API、TypeScript、语音管理、量化交易、SEO优化。

NLP 0 次安装 0 次浏览 更新于 3/9/2026

name: tts description: “使用ElevenLabs和系统语音进行文本转语音合成” emoji: “🔊” gates: envs: anyOf: - ELEVENLABS_API_KEY

TTS (文本转语音) - 完整API参考

使用ElevenLabs、macOS say或espeak将文本转换为自然语音。


聊天命令

合成语音

/speak "您的订单已成交"         大声朗读文本
/speak "市场警报" --voice rachel       使用特定语音
/speak "投资组合上涨5%" --speed 1.2       调整速度

语音管理

/voices                                     列出可用语音
/voices preview rachel                      预览语音
/voice set rachel                           设置默认语音

设置

/tts status                                 检查TTS状态
/tts provider elevenlabs                    设置提供商
/tts speed 1.0                              设置默认速度
/tts volume 0.8                             设置音量(0-1)

TypeScript API参考

创建TTS服务

import { createTTSService } from 'clodds/tts';

const tts = createTTSService({
  provider: 'elevenlabs',
  apiKey: process.env.ELEVENLABS_API_KEY,

  // 默认值
  defaultVoice: 'rachel',
  defaultSpeed: 1.0,
  defaultPitch: 1.0,
});

合成语音

// 基本合成
const audio = await tts.synthesize('您好,您的交易已执行。');

// 立即播放
await tts.speak('投资组合价值为10,000美元');

// 带选项
await tts.speak('市场警报:BTC突破100k美元', {
  voice: 'josh',
  speed: 1.2,
  pitch: 1.0,
  volume: 0.8,
});

流式合成

// 长文本流式处理(更低延迟)
const stream = await tts.streamSynthesize(longText, {
  voice: 'rachel',
});

stream.on('data', (chunk) => {
  // 音频块到达时播放
  audioPlayer.write(chunk);
});

stream.on('end', () => {
  console.log('合成完成');
});

列出语音

// 获取可用语音
const voices = await tts.listVoices();

for (const voice of voices) {
  console.log(`${voice.id}: ${voice.name}`);
  console.log(`  性别: ${voice.gender}`);
  console.log(`  口音: ${voice.accent}`);
  console.log(`  使用场景: ${voice.useCase}`);
}

语音预览

// 预览语音
await tts.preview('rachel', '这是Rachel语音的预览。');

队列管理

// 队列多条消息
tts.queue('第一条消息');
tts.queue('第二条消息');
tts.queue('第三条消息');

// 消息按顺序播放

// 清除队列
tts.clearQueue();

// 跳过当前
tts.skip();

ElevenLabs语音

语音ID 名称 性别 口音 最佳用途
rachel Rachel F 美国 叙述
domi Domi F 美国 对话式
bella Bella F 美国 柔和、温柔
antoni Antoni M 美国 叙述
josh Josh M 美国 深沉、权威
arnold Arnold M 美国 粗犷、角色
adam Adam M 美国 深沉、叙述
sam Sam M 美国 沙哑、角色

提供商

提供商 质量 延迟 成本 设置
ElevenLabs 优质 ~500ms $5/100k字符 API密钥
say (macOS) 良好 ~100ms 免费 内置
espeak 基础 ~50ms 免费 安装

提供商配置

// ElevenLabs(最佳质量)
const tts = createTTSService({
  provider: 'elevenlabs',
  apiKey: process.env.ELEVENLABS_API_KEY,
});

// macOS say(免费、本地)
const tts = createTTSService({
  provider: 'say',
  defaultVoice: 'Samantha',  // macOS语音
});

// espeak(跨平台、免费)
const tts = createTTSService({
  provider: 'espeak',
  defaultVoice: 'en-us',
});

音频输出

// 设置输出设备
tts.setOutputDevice('内置扬声器');

// 获取可用设备
const devices = await tts.listOutputDevices();

SSML支持 (ElevenLabs)

// 使用SSML进行高级控制
await tts.speak(`
  <speak>
    <prosody rate="slow">重要警报:</prosody>
    <break time="500ms"/>
    您的止损已触发。
  </speak>
`, { ssml: true });

最佳实践

  1. 使用流式处理 — 对于长文本,减少首次音频时间
  2. 缓存常用短语 — “订单成交”、“警报触发”
  3. 调整速度 — 警报时更快,详情时更慢
  4. 队列管理 — 不要重叠重要消息
  5. 回退提供商 — 如果ElevenLabs不可用,使用say/espeak