Claude Skills
CollectionsCompareWorkflowsNominate
Sign inSign up
© 2026 Curated Agent Skills·Learn more about Agent Skills
Back to repository

qwen-tts

verified

Qwen3-TTS (VoiceDesign mode) をMac MLXで効率的に実行するためのガイド。パラメータ最適化、RTFチューニング、Web UI構築、Remotion連携に使用

View on GitHub

Marketplace

kazuph-dotfiles

kazuph/dotfiles

Plugin

kazuph-dotfiles

development

Repository

kazuph/dotfiles
15stars

plugins/kazuph-dotfiles/skills/qwen-tts/SKILL.md

Last Verified

February 1, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/kazuph/dotfiles/blob/main/plugins/kazuph-dotfiles/skills/qwen-tts/SKILL.md -a claude-code --skill qwen-tts

Installation paths:

Claude
.claude/skills/qwen-tts/
Powered by add-skill CLI

Instructions

# Qwen3-TTS MLX ガイド

Mac M2+(MLX)でQwen3-TTS VoiceDesignモードを効率的に実行するためのベストプラクティス。

## 最重要ポイント

**警告**: デフォルト `max_tokens=4096` は **327秒の音声** を生成してしまう!

**推奨設定**:
```python
max_tokens=150  # 約12秒の音声
```

## RTF(Real-Time Factor)早見表

| 意味 | RTF値 | ステータス |
|------|------|----------|
| リアルタイムより速い | < 1 | 配信可能 |
| 等速 | = 1 | ギリギリ可能 |
| リアルタイムより遅い | > 1 | 事前生成向け |

**計算式**: `RTF = 生成時間 ÷ 音声の長さ`

### 環境別パフォーマンス

| 環境 | 設定 | RTF | リアルタイム |
|------|-----|-----|------------|
| **Mac M2 MLX** | max_tokens=150 | **0.955** | ほぼ可能 |
| Mac M2 MLX | max_tokens=4096 | 7.0 | 不可 |
| RTX 3090 | バッチ3 | 0.63 | 可能 |
| RTX 3090 | バッチ1 | 1.9 | 不可 |

## クイックスタート

### インストール

```bash
python3 -m venv .venv
source .venv/bin/activate
pip install mlx-audio soundfile
```

### 最小コード(安定版)

```python
from mlx_audio.tts import load

model = load('mlx-community/Qwen3-TTS-12Hz-1.7B-VoiceDesign-4bit')

result = next(model.generate_voice_design(
    text="こんにちは、私はクエンTTSです。",
    instruct="明るく元気な若い女性の声",
    language="Japanese",
    max_tokens=150,           # 重要: 約12秒
    temperature=0.65,         # 安定性向上
    repetition_penalty=1.15,  # 繰り返し防止
    top_k=35,
    top_p=0.92,
))

# result.audio: 音声データ (numpy array)
# result.sample_rate: 24000Hz
```

### 音声ファイル保存

```python
import soundfile as sf
sf.write("output.wav", result.audio, result.sample_rate)
```

## max_tokens と音声長

**計算式**: `音声長(秒)≈ max_tokens / 12.5`

| max_tokens | 想定音声長 | 用途 |
|------------|----------|------|
| 50 | ~4秒 | 短い挨拶 |
| 100 | ~8秒 | ショートフレーズ |
| **150** | **~12秒** | **標準(推奨)** |
| 200 | ~16秒 | 長めの説明 |
| 500 | ~40秒 | ナレーション |
| 2000 | ~160秒 | 長文読み上げ |
| 4096 | ~327秒 | 使用非推奨 |

### 動的max_tokens計算(セリフ長に応じた最適化)

固定値ではなく、セリフ長に応じてmax_tokensを動的に計算することで、途切れ防止と速度のバランスを取る:

```python
def calculate_optimal_max_tokens(text_length: int) -> int:
    """
    セリフ長に応じた最適なmax_tokensを計算

    計算式:
    - 1文字あたり約0.35秒と見積もり(日本語の平均的な読み上げ速度)
    - 最低3秒は確保
    - 12.5トークン/秒 + 20%の余裕
    """
    estimated_duration = max(text_length * 0.35, 3.0)
    max_tokens = i

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
4036 chars