tts について
ttsは、テキストを音声に変換するCloddsのスキルおよびTypeScript APIです。ElevenLabs、macOS say、espeakに対応し、音声選択、ストリーミング合成、キュー再生を利用できます。
主な機能
- 013種類の音声プロバイダー
- 02音声一覧とプレビュー
- 03ストリーミング音声合成
- 04メッセージのキュー再生
- 05速度、音量、出力の設定
活用シーン
- 01約定通知や市場アラートを音声で伝える
- 02音声を試聴してデフォルトを選ぶ
- 03複数の通知をキューに入れて再生する
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ alsk1992/ cloddsbot --skill ttsインストール後、Claude Code で/ttsを入力して読み込まれたか確認します。
同梱ファイルindex.ts
詳細
TTS(テキスト読み上げ) - API リファレンス完全版
ElevenLabs、macOS の say、または espeak を使用して、自然な音声にテキストを変換します。
チャットコマンド
音声の合成
/speak "Your order has been filled" Speak text aloud
/speak "Market alert" --voice rachel Use specific voice
/speak "Portfolio up 5%" --speed 1.2 Adjust speed
音声の管理
/voices List available voices
/voices preview rachel Preview a voice
/voice set rachel Set default voice
設定
/tts status Check TTS status
/tts provider elevenlabs Set provider
/tts speed 1.0 Set default speed
/tts volume 0.8 Set volume (0-1)
TypeScript API リファレンス
TTS サービスの作成
import { createTTSService } from 'clodds/tts';
const tts = createTTSService({
provider: 'elevenlabs',
apiKey: process.env.ELEVENLABS_API_KEY,
// Defaults
defaultVoice: 'rachel',
defaultSpeed: 1.0,
defaultPitch: 1.0,
});
音声の合成
// Basic synthesis
const audio = await tts.synthesize('Hello, your trade was executed.');
// Play immediately
await tts.speak('Portfolio value is $10,000');
// With options
await tts.speak('Market alert: BTC crossed $100k', {
voice: 'josh',
speed: 1.2,
pitch: 1.0,
volume: 0.8,
});
ストリーミング合成
// Stream for long text (lower latency)
const stream = await tts.streamSynthesize(longText, {
voice: 'rachel',
});
stream.on('data', (chunk) => {
// Play audio chunks as they arrive
audioPlayer.write(chunk);
});
stream.on('end', () => {
console.log('Synthesis complete');
});
音声一覧の取得
// Get available voices
const voices = await tts.listVoices();
for (const voice of voices) {
console.log(`${voice.id}: ${voice.name}`);
console.log(` Gender: ${voice.gender}`);
console.log(` Accent: ${voice.accent}`);
console.log(` Use case: ${voice.useCase}`);
}
音声のプレビュー
// Preview a voice
await tts.preview('rachel', 'This is a preview of the Rachel voice.');
キューの管理
// Queue multiple messages
tts.queue('First message');
tts.queue('Second message');
tts.queue('Third message');
// Messages play in order
// Clear queue
tts.clearQueue();
// Skip current
tts.skip();
ElevenLabs の音声
| 音声 ID | 名前 | 性別 | アクセント | 最適な用途 |
|---|---|---|---|---|
rachel | Rachel | 女性 | アメリカ英語 | ナレーション |
domi | Domi | 女性 | アメリカ英語 | 会話 |
bella | Bella | 女性 | アメリカ英語 | 穏やかで優しい音声 |
antoni | Antoni | 男性 | アメリカ英語 | ナレーション |
josh | Josh | 男性 | アメリカ英語 | 低く、威厳のある音声 |
arnold | Arnold | 男性 | アメリカ英語 | しゃがれた、キャラクター向けの音声 |
adam | Adam | 男性 | アメリカ英語 | 低い、ナレーション |
sam | Sam | 男性 | アメリカ英語 | しゃがれた、キャラクター向けの音声 |
プロバイダー
| プロバイダー | 品質 | レイテンシ | コスト | 設定 |
|---|---|---|---|---|
| ElevenLabs | プレミアム | 約500ms | 100k文字あたり$5 | API キー |
| say(macOS) | 良好 | 約100ms | 無料 | 内蔵 |
| espeak | 基本 | 約50ms | 無料 | インストール |
プロバイダーの設定
// ElevenLabs (best quality)
const tts = createTTSService({
provider: 'elevenlabs',
apiKey: process.env.ELEVENLABS_API_KEY,
});
// macOS say (free, local)
const tts = createTTSService({
provider: 'say',
defaultVoice: 'Samantha', // macOS voice
});
// espeak (cross-platform, free)
const tts = createTTSService({
provider: 'espeak',
defaultVoice: 'en-us',
});
音声出力
// Set output device
tts.setOutputDevice('Built-in Speakers');
// Get available devices
const devices = await tts.listOutputDevices();
SSML サポート(ElevenLabs)
// Use SSML for advanced control
await tts.speak(`
<speak>
<prosody rate="slow">Important alert:</prosody>
<break time="500ms"/>
Your stop loss was triggered.
</speak>
`, { ssml: true });
ベストプラクティス
- ストリーミングを使用する — 長いテキストでは、最初の音声が出力されるまでの時間を短縮できます
- よく使うフレーズをキャッシュする — 「注文が約定しました」「アラートが発生しました」
- 速度を調整する — アラートは速く、詳細はゆっくりにします
- キューを管理する — 重要なメッセージが重ならないようにします
- フォールバックプロバイダー — ElevenLabs が利用できない場合は、say/espeak を使用します
コメント
Markdown 対応