﻿## ⚠️ 重要な注意事項: MiniMax API パラメータについて


### 問題の発見（2025年11月6日）
MiniMax API (speech-02-hd) では、**音量・速度調整パラメータ`|vol+1|speed+1`等）は使用できない**ことが判明。


### エラー内容
- **エラーコード**: 2054
- **エラーメッセージ**: "voice id not exist"
- **原因**: `Korean_ElegantPrincess|vol+1` のような形式は認識されない


### ❌ 使用禁止の形式
以下の形式は**全て使用不可**：
```
Japanese_CalmLady|vol+2
Japanese_CalmLady|vol-1
Japanese_CalmLady|speed+1
Japanese_CalmLady|pitch-1
Korean_ElegantPrincess|vol+1
```


### ✅ 正しい使用方法
**voice_idには音声名のみを指定**：
```csv
id,type,text,character,voice_id,page,emotion
1,dialogue,こんにちは,リサ,Korean_ElegantPrincess,1,happy
2,dialogue,やあ,ユウタ,Japanese_LoyalKnight,1,neutral
```


---


## ✅ emotion パラメータの使用方法（2026年1月追加）


speech-2.6-hd モデルでは **emotion パラメータ** で感情を直接指定可能。


### 利用可能な感情（7種類）


| emotion | 日本語 | 用途・場面 |
|---------|--------|------------|
| happy | 幸せ | 嬉しい・楽しい・勝ち誇り・嘲笑・愉悦 |
| sad | 悲しみ | 悲しい・絶望・虚無・慟哭・諦念 |
| angry | 怒り | 怒り・冷酷・見下し・侮蔑・激昂 |
| fearful | 恐怖 | 恐怖・不安・緊張・怯え・動揺 |
| disgusted | 嫌悪 | 嫌悪・吐き気・侮蔑・軽蔑 |
| surprised | 驚き | 驚き・衝撃・絶句・ショック |
| neutral | 中立 | 淡々・ナレーション・回想・説明 |


### CSVフォーマット（emotion列追加版）
```csv
id,type,text,character,voice_id,page,emotion
1,narration,彼女は静かに涙を流した。,,Japanese_CalmLady,1,sad
2,dialogue,何してるの！,リサ,Korean_ElegantPrincess,1,angry
3,dialogue,本当に嬉しい！,リサ,Korean_ElegantPrincess,1,happy
4,dialogue,え...嘘でしょ？,リサ,Korean_ElegantPrincess,1,surprised
5,dialogue,気持ち悪い...,リサ,Korean_ElegantPrincess,1,disgusted
6,dialogue,怖い...助けて...,リサ,Korean_ElegantPrincess,1,fearful
7,narration,その日、事件は起きた。,,Japanese_CalmLady,1,neutral
8,pause,,,PAUSE_1S,1,
```


### APIリクエスト形式
```json
{
  "model": "speech-2.6-hd",
  "text": "{{ $json.text }}",
  "stream": false,
  "voice_setting": {
    "voice_id": "{{ $json.voice_id }}",
    "emotion": "{{ $json.emotion }}"
  }
}
```


### シーン別emotion選択ガイド


#### 主人公（被害者・語り手）
| シーン | emotion |
|--------|---------|
| 幸せな回想 | happy |
| 不安・違和感 | fearful |
| 裏切り発覚の瞬間 | surprised |
| 裏切りを目撃 | disgusted |
| 怒りの爆発 | angry |
| 絶望・心が折れる | sad |
| 淡々と語る | neutral |


#### 悪役（浮気相手・裏切り者）
| シーン | emotion |
|--------|---------|
| 優しい演技 | happy |
| 嘲笑・勝ち誇り | happy |
| 冷酷・見下し | angry |
| 侮蔑・嫌悪 | disgusted |
| 取り繕い・嘘 | neutral |


#### ナレーション
| シーン | emotion |
|--------|---------|
| 状況説明 | neutral |
| 悲劇的展開 | sad |
| 衝撃的展開 | surprised |


---


## 感情表現の注意事項


### ❌ 使用不可
| 項目 | 理由 |
|------|------|
| `voice_modify` パラメータ | APIエラーになる |
| テキスト内感情表現「（絶望・崩壊）」 | そのまま読み上げられる |
| emotion の数値指定 | 7種類の固定値のみ対応 |


### ✅ 使用可能
| 項目 | 効果 |
|------|------|
| `emotion` パラメータ | 感情が反映される |
| テキスト内の記号「！」「？」「...」 | 自然な抑揚がつく |


---


## 音量・感情調整の代替方法


### 1. emotion パラメータを使用（推奨）
```csv
id,type,text,character,voice_id,page,emotion
1,dialogue,やめて！,リサ,Korean_ElegantPrincess,1,angry
2,dialogue,そうなんだ...,リサ,Korean_ElegantPrincess,1,sad
```


### 2. テキストで感情を補助
speech-2.6-hdモデルは**テキストから自動的に感情を推測**するため、記号で補助可能：
```csv
# 強調したい場合
dialogue,何してるの！,リサ,Korean_ElegantPrincess,1,angry


# 疑問を強調
dialogue,本当に...？,リサ,Korean_ElegantPrincess,1,fearful


# 静かに話す印象
dialogue,...そうなんだ,リサ,Korean_ElegantPrincess,1,sad
```


### 3. 別の音声IDを使用
キャラクターの感情に応じて異なる音声IDを選択：
```csv
# 通常時
dialogue,こんにちは,リサ,Korean_ElegantPrincess,1,neutral


# 怒り・強い口調の場面
dialogue,やめて！,リサ,Japanese_DecisivePrincess,1,angry


# 優しい・穏やかな場面
dialogue,大丈夫よ,リサ,Korean_GentleWoman,1,happy
```


---


## CSV作成時のチェックリスト


- ☑️ **voice_idカラムに「|」が含まれていないか確認**
- ☑️ **使用するvoice_idが利用可能リストに存在するか確認**
- ☑️ **emotion列が追加されているか確認**
- ☑️ **emotionは7種類（happy/sad/angry/fearful/disgusted/surprised/neutral）のみ**
- ☑️ **pause行のemotionは空欄でOK**
- ☑️ **感情表現はテキスト内の記号（！？...）で補助**
- ☑️ **大きな感情変化は別のvoice_idでも対応可能**


---


## 利用可能な音声ID（確認済み）


### 日本語女性
- `Japanese_CalmLady`
- `Japanese_DecisivePrincess`
- `Japanese_KindLady`


### 日本語男性
- `Japanese_LoyalKnight`
- `Japanese_IntellectualSenior`
- `Japanese_SeriousCommander`
- `Japanese_GentleButler`


### 韓国語女性（日本語対応）
- `Korean_ElegantPrincess`
- `Korean_HaughtyLady`
- `Korean_GentleWoman`
- `Korean_WiseElf`


### 韓国語男性（日本語対応）
- `Korean_CheerfulCoolJunior`


---


## トラブルシューティング


### エラー: "voice id not exist"
→ **voice_idに「|」が含まれていないか確認**
→ 音量調整パラメータを削除


### エラー: "Cannot read properties of undefined (reading 'audio')"
→ **voice_modify パラメータを削除**
→ emotion パラメータのみ使用


### 感情表現が弱い
→ emotion パラメータが正しく設定されているか確認
→ テキストに「！」「？」「...」を追加
→ より感情的な音声IDに変更


### 感情表現がそのまま読み上げられる
→ テキスト内の「（絶望・崩壊）」などを削除
→ emotion パラメータで感情を指定


### emotion が反映されない
→ CSVパース時に emotion 列を取得しているか確認
→ APIリクエストに `"emotion": "{{ $json.emotion }}"` が含まれているか確認


---


## n8nワークフロー設定


### CSVパース（Codeノード）
```javascript
const dialogues = dataLines.map(line => {
  const values = parseCSVLine(line);
  return {
    id: parseInt(values[0]),
    type: values[1],
    text: values[2] || '',
    character: values[3] || null,
    voice_id: values[4],
    page: parseInt(values[5]),
    emotion: values[6] || 'neutral'  // ← emotion列を取得
  };
});
```


### APIリクエスト（HTTPノード）
```json
{
  "model": "speech-2.6-hd",
  "text": "{{ $json.text }}",
  "stream": false,
  "voice_setting": {
    "voice_id": "{{ $json.voice_id }}",
    "emotion": "{{ $json.emotion }}"
  }
}
```


---


## 更新履歴
- 2025-11-06: 音量調整パラメータが使用不可であることを確認
- 2026-01-12: emotion パラメータの使用方法を追加
- 2026-01-12: voice_modify パラメータが非対応であることを確認
- 2026-01-12: CSVフォーマットにemotion列を追加