> ## Documentation Index
> Fetch the complete documentation index at: https://docs.comfy.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Fish Audio Prompt Guide: writing prompts for Fish Audio TTS in ComfyUI

> Complete prompt writing guide for Fish Audio partner nodes in ComfyUI: emotion tags, tone markers, audio effects, pauses, phoneme control, multi-speaker dialogue, and parameter tuning

Fish Audio TTS gives you direct control over how speech sounds through inline tags written in the text itself. This guide covers every tag category the model understands, where to place them, and how to combine them.

The examples below work in the Fish Audio Text to Speech node. Type them straight into the `text` field, replacing the sample script with your own. For node setup, workflow templates, and pricing, see [Fish Audio: Text to Speech, Voice Cloning, and Speech to Text](/tutorials/partner-nodes/fishaudio/fish-audio).

## How tags work

Fish Audio S2 models interpret natural-language cues written in square brackets inside your text:

```text theme={null}
[happy] What a beautiful day!
[sad] I'm sorry to hear that.
[excited] This is amazing news!
```

Three properties make this system flexible:

* **Position is meaning.** A tag applies from where it appears until the next tag or the end of the sentence. `[whispering] I didn't want to go inside` whispers the whole line. `I didn't want to go [whispering] inside` starts whispering at "inside".
* **Free-form descriptions work.** You are not limited to a fixed tag set. If you can describe it to a voice actor, write it in brackets: `[tired, end of a long shift]`, `[voice rough from crying, trying to sound normal]`, `[professional broadcast tone]`.
* **Tags work in your language.** Write cues in the same language as your script: `[低声说] 不要让他们听见`, `[ため息をついて] もう一度やり直そう`.

The legacy `s1` model uses the same emotion names but wraps them in parentheses with a fixed tag set: `(happy) What a beautiful day!` The current `s2.1-pro` model accepts bracket cues and free-form descriptions.

## Emotion tags

### Basic emotions

| Tag             | Delivery                | Common context              |
| --------------- | ----------------------- | --------------------------- |
| `[happy]`       | Cheerful, upbeat        | Good news, greetings        |
| `[sad]`         | Melancholic, downcast   | Sympathy, bad news          |
| `[angry]`       | Frustrated, aggressive  | Complaints, warnings        |
| `[excited]`     | Energetic, enthusiastic | Announcements, celebrations |
| `[calm]`        | Peaceful, relaxed       | Instructions, meditation    |
| `[nervous]`     | Anxious, uncertain      | Disclaimers, apologies      |
| `[confident]`   | Assertive, self-assured | Presentations, sales        |
| `[surprised]`   | Shocked, amazed         | Reactions, discoveries      |
| `[satisfied]`   | Content, pleased        | Confirmations, reviews      |
| `[delighted]`   | Very pleased, joyful    | Celebrations, compliments   |
| `[scared]`      | Frightened, fearful     | Warnings, horror stories    |
| `[worried]`     | Concerned, troubled     | Concerns, questions         |
| `[upset]`       | Disturbed, distressed   | Complaints, problems        |
| `[frustrated]`  | Annoyed, exasperated    | Technical issues, delays    |
| `[depressed]`   | Very sad, hopeless      | Serious topics              |
| `[empathetic]`  | Understanding, caring   | Support, counseling         |
| `[embarrassed]` | Ashamed, awkward        | Apologies, mistakes         |
| `[disgusted]`   | Repelled, revolted      | Negative reviews            |
| `[moved]`       | Emotionally touched     | Heartfelt moments           |
| `[proud]`       | Accomplished, satisfied | Achievements, praise        |
| `[relaxed]`     | At ease, casual         | Casual conversation         |
| `[grateful]`    | Thankful, appreciative  | Thanks, appreciation        |
| `[curious]`     | Inquisitive, interested | Questions, exploration      |
| `[sarcastic]`   | Ironic, mocking         | Humor, criticism            |

### Advanced emotions

| Tag               | Delivery                 | Common context         |
| ----------------- | ------------------------ | ---------------------- |
| `[disdainful]`    | Contemptuous, scornful   | Criticism, rejection   |
| `[unhappy]`       | Discontent, dissatisfied | Complaints, feedback   |
| `[anxious]`       | Very worried, uneasy     | Urgent matters         |
| `[hysterical]`    | Uncontrollably emotional | Extreme reactions      |
| `[indifferent]`   | Uncaring, neutral        | Neutral responses      |
| `[uncertain]`     | Doubtful, unsure         | Speculation, questions |
| `[doubtful]`      | Skeptical, questioning   | Disbelief, questioning |
| `[confused]`      | Puzzled, perplexed       | Clarification requests |
| `[disappointed]`  | Let down, dissatisfied   | Unmet expectations     |
| `[regretful]`     | Sorry, remorseful        | Apologies, mistakes    |
| `[guilty]`        | Culpable, responsible    | Confessions, apologies |
| `[ashamed]`       | Deeply embarrassed       | Serious mistakes       |
| `[jealous]`       | Envious, resentful       | Comparisons            |
| `[envious]`       | Wanting what others have | Admiration with desire |
| `[hopeful]`       | Optimistic about future  | Future plans           |
| `[optimistic]`    | Positive outlook         | Encouragement          |
| `[pessimistic]`   | Negative outlook         | Warnings, doubts       |
| `[nostalgic]`     | Longing for the past     | Memories, stories      |
| `[lonely]`        | Isolated, alone          | Emotional content      |
| `[bored]`         | Uninterested, weary      | Disinterest            |
| `[contemptuous]`  | Showing contempt         | Strong criticism       |
| `[sympathetic]`   | Showing sympathy         | Condolences            |
| `[compassionate]` | Showing deep care        | Support, help          |
| `[determined]`    | Resolved, decided        | Goals, commitments     |
| `[resigned]`      | Accepting defeat         | Giving up, acceptance  |

## Tone markers

Tone markers control volume, intensity, and emphasis. Place `[emphasis]` right before the word or phrase you want to stress:

```text theme={null}
This is [emphasis] really important.
```

| Tag                 | Delivery                | When to use                |
| ------------------- | ----------------------- | -------------------------- |
| `[in a hurry tone]` | Rushed, urgent          | Time-sensitive information |
| `[shouting]`        | Loud, calling out       | Getting attention          |
| `[screaming]`       | Very loud, panicked     | Emergencies, fear          |
| `[whispering]`      | Very soft, secretive    | Secrets, quiet scenes      |
| `[soft tone]`       | Gentle, quiet           | Comfort, lullabies         |
| `[emphasis]`        | Stress a word or phrase | Highlighting key words     |

## Audio effects

Audio effect tags add natural human sounds. Follow the tag with matching text where suggested:

| Tag               | Description                     | Suggested text after the tag |
| ----------------- | ------------------------------- | ---------------------------- |
| `[laughing]`      | Full laughter                   | Ha, ha, ha                   |
| `[chuckling]`     | Light laugh                     | Heh, heh                     |
| `[sobbing]`       | Crying heavily                  | Optional text                |
| `[crying loudly]` | Intense crying                  | Optional text                |
| `[sighing]`       | Exhale of relief or frustration | sigh                         |
| `[groaning]`      | Sound of frustration            | ugh                          |
| `[panting]`       | Out of breath                   | huff, puff                   |
| `[gasping]`       | Sharp intake of breath          | gasp                         |
| `[yawning]`       | Tired sound                     | yawn                         |
| `[snoring]`       | Sleep sound                     | zzz                          |
| `[clear throat]`  | Throat-clearing sound           | ahem                         |

## Pauses and special effects

| Tag                     | Description              |
| ----------------------- | ------------------------ |
| `[break]`               | Brief pause in speech    |
| `[long-break]`          | Extended pause in speech |
| `[short pause]`         | Short beat between lines |
| `[long pause]`          | Extended silence         |
| `[audience laughing]`   | Crowd laughing sound     |
| `[background laughter]` | Ambient laughter         |
| `[crowd laughing]`      | Large group laughing     |

Plain pause words also shape rhythm without any tags: "um", "uh", "嗯", "啊".

## Combining tags

**Pair a physical tag with an emotion tag.** Physical tags like `[panting]` or `[whispering]` register on their own, but pairing them with an emotion produces more consistent, natural results:

```text theme={null}
[panting] [tired] I've been running for twenty minutes.
[whispering] [scared] Don't move. Don't make a sound.
[shouting] [angry] I told you this would happen!
```

**Layer emotions for complex expressions.** Keep combinations to three tags or fewer per sentence:

```text theme={null}
[sad][whispering] I miss you so much.
[angry][shouting] Get out of here now!
[excited][laughing] We won! Ha ha!
```

**Write emotion transitions** as a natural progression across sentences:

```text theme={null}
[happy] I got the promotion!
[uncertain] But... it means relocating.
[sad] I'll miss everyone here.
[hopeful] Though it's a great opportunity.
[determined] I'm going to make it work!
```

**Add background effects** for atmosphere:

```text theme={null}
The comedy show was amazing [audience laughing]
```

**Modulate intensity** with descriptive modifiers:

```text theme={null}
[slightly sad] I'm a bit disappointed.
[very excited] This is absolutely amazing!
[extremely angry] This is unacceptable!
```

## Best practices

**Do:**

* Use one primary emotion per sentence
* Match emotions to context logically
* Add text after sound effects, for example "Ha ha" after `[laughing]`
* Space out emotional changes for realism
* Test different combinations on the same voice

**Don't:**

* Overuse tags in short text
* Mix conflicting emotions in one sentence
* Write bracket descriptions so long they interrupt the flow
* Leave a descriptive tag without text after it
* Place sentence-level emotion cues far from the sentence they control

If the output sounds unnatural, space out emotional changes, lower the intensity, or try a different voice: the same tag lands differently on different voices.

## Multi-speaker dialogue

Connect two or more voices to the Fish Audio Text to Speech node, then mark speaker changes in the text with `@Voice1`, `@Voice2`, and so on. Every connected voice must appear in the text at least once, or the node raises an error. Voice connections are covered in [Fish Audio: Text to Speech, Voice Cloning, and Speech to Text](/tutorials/partner-nodes/fishaudio/fish-audio#connecting-voices).

```text theme={null}
@Voice1 [nervous] You're sure no one followed you?
@Voice2 [calm] Relax. I took the long way, exactly like you asked.
@Voice1 [sighing][relieved] Good. Then let's see what's inside.
@Voice2 [curious] You don't even know what it is?
```

## Phoneme control

Phoneme tags specify exact pronunciations for names, homographs, acronyms, and technical terms. Wrap the replacement pronunciation in `<|phoneme_start|>` and `<|phoneme_end|>` tags. Phoneme tags are preserved by text normalization, so keep `normalize` enabled.

**English** (CMU Arpabet, replaces one word):

```text theme={null}
I am an <|phoneme_start|>EH1 N JH AH0 N IH1 R<|phoneme_end|>.
```

**Chinese** (tone-number pinyin, replaces one character or syllable, useful for polyphonic characters and names):

```text theme={null}
我是一个<|phoneme_start|>gong1<|phoneme_end|><|phoneme_start|>cheng2<|phoneme_end|><|phoneme_start|>shi1<|phoneme_end|>。
```

**Japanese** (OpenJTalk-style romaji with pitch accent digits):

```text theme={null}
<|phoneme_start|>ha0shi1ga0<|phoneme_end|>見えます。
```

Phoneme control combines with other tags in the same text:

```text theme={null}
I am, um, an [break] <|phoneme_start|>EH1 N JH AH0 N IH1 R<|phoneme_end|>.
```

## Parameter tuning

The defaults are well tuned. Adjust only when you need to:

| Parameter     | Default | Effect                                                                                                            |
| ------------- | ------- | ----------------------------------------------------------------------------------------------------------------- |
| `temperature` | 0.7     | Expressiveness. Higher is more varied, lower is more consistent                                                   |
| `top_p`       | 0.7     | Diversity via nucleus sampling                                                                                    |
| `speed`       | 1.0     | Speaking rate, 0.5 to 2.0                                                                                         |
| `volume`      | 0.0     | Volume adjustment in decibels, -10 to 10                                                                          |
| `normalize`   | true    | Expands numbers and dates for natural reading. Keep on unless normalization rewrites text you want read literally |

The `seed` controls whether the node reruns; results are non-deterministic regardless of seed value.

## Voice cloning quality

For the Fish Audio Instant Voice Clone node, reference recording quality decides the result. Recording limits are covered in [Fish Audio: Text to Speech, Voice Cloning, and Speech to Text](/tutorials/partner-nodes/fishaudio/fish-audio#voice-cloning-limits):

* Record 2 to 3 clips of 15 to 20 seconds each, under 270 seconds in total
* One speaker only, steady volume, consistent tone and emotion
* Small pauses between sentences, about half a second
* Quiet room, microphone about a hand's width from the mouth
* A phone recorder or headset mic works; avoid background music, TV, and echo

If the cloned voice sounds robotic, record more material, 30 to 60 seconds total, and speak naturally with pauses.

Only clone voices you have permission to use: your own voice, or someone who gave you explicit permission.

## References

* [Fish Audio emotion control documentation](https://docs.fish.audio/developer-guide/core-features/emotions)
* [Fish Audio fine-grained control documentation](https://docs.fish.audio/developer-guide/core-features/fine-grained-control)
* [Fish Audio voice cloning best practices](https://docs.fish.audio/developer-guide/best-practices/voice-cloning)
