Conversation
# Conflicts: # developer-guide/models-pricing/models-overview.mdx
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (9)
📝 WalkthroughWalkthroughDocumentation updates clarifying model-specific syntax differences—S1 uses parenthesis syntax while S2 uses bracket syntax with natural language descriptions—distributed across multiple files. Includes changelog entry for S2 model (March 2026) and expanded models overview with updated feature descriptions. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~18 minutes Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Updates documentation to introduce/position the s2-pro (S2) model and clarify how emotion control differs between S1 and S2 across guides and references.
Changes:
- Adds “S1 vs S2” clarifications via
<Tip>callouts in multiple TTS/emotion docs. - Expands the Models Overview with S2-Pro natural-language control details and updated positioning (“Recommended Model”).
- Updates pricing/changelog content to include S2 information.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| developer-guide/sdk-guide/python/text-to-speech.mdx | Adds tip clarifying S1 (parenthesis) vs S2 [bracket] emotion syntax. |
| developer-guide/sdk-guide/javascript/text-to-speech.mdx | Adds the same S1 vs S2 emotion syntax tip for JS SDK readers. |
| developer-guide/models-pricing/pricing-and-rate-limits.mdx | Adds s2-pro to TTS pricing table (but currently duplicates the row). |
| developer-guide/models-pricing/models-overview.mdx | Repositions S2-Pro as recommended and adds a new “Natural Language Control” section. |
| developer-guide/getting-started/changelog.mdx | Adds a new “Fish Audio S2” changelog entry and updates S1 emotion count text. |
| developer-guide/core-features/text-to-speech.mdx | Adds a tip clarifying S1 vs S2 emotion syntax in the core TTS guide. |
| developer-guide/core-features/emotions.mdx | Adds a tip clarifying that the page’s syntax applies to S1, with link to S2 section. |
| developer-guide/best-practices/emotion-control.mdx | Adds a tip clarifying S1 vs S2 emotion syntax and links to Models Overview. |
| api-reference/emotion-reference.mdx | Adds a tip clarifying S1 vs S2 emotion syntax and links to Models Overview. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| Control how your AI voice expresses emotions, from happy and excited to sad and contemplative. Add natural pauses, laughter, and other human-like elements to make speech more engaging. | ||
|
|
||
| <Tip> | ||
| The `(parenthesis)` syntax on this page applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. |
There was a problem hiding this comment.
The Models Overview link uses the #s2-natural-language-control fragment, but models-overview.mdx does not define an anchor with that id (the heading is "S2-Pro Natural Language Control", which will typically slug to #s2-pro-natural-language-control). Update the fragment to match the actual heading id or add an explicit anchor in the destination page to avoid broken in-page navigation.
| The `(parenthesis)` syntax on this page applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. | |
| The `(parenthesis)` syntax on this page applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-pro-natural-language-control) for details. |
| This reference guide provides a comprehensive list of all 64+ supported emotional expressions and voice styles available in Fish Audio's S1 TTS model. The latest S2-Pro model supports free-form natural language emotion tags. | ||
|
|
||
| <Tip> | ||
| The `(parenthesis)` syntax on this page applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. |
There was a problem hiding this comment.
The Models Overview link uses the #s2-natural-language-control fragment, but models-overview.mdx does not define an anchor with that id (the heading is "S2-Pro Natural Language Control", which will typically slug to #s2-pro-natural-language-control). Update the fragment to match the actual heading id or add an explicit anchor in the destination page to avoid broken in-page navigation.
| The `(parenthesis)` syntax on this page applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. | |
| The `(parenthesis)` syntax on this page applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-pro-natural-language-control) for details. |
| ## Emotions and Expressions | ||
|
|
||
| <Tip> | ||
| The `(parenthesis)` syntax below applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. |
There was a problem hiding this comment.
The Models Overview link uses the #s2-natural-language-control fragment, but models-overview.mdx does not define an anchor with that id (the heading is "S2-Pro Natural Language Control", which will typically slug to #s2-pro-natural-language-control). Update the fragment to match the actual heading id or add an explicit anchor in the destination page to avoid broken in-page navigation.
| The `(parenthesis)` syntax below applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. | |
| The `(parenthesis)` syntax below applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-pro-natural-language-control) for details. |
| ## Emotions | ||
|
|
||
| <Tip> | ||
| The `(parenthesis)` syntax below applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. |
There was a problem hiding this comment.
The Models Overview link uses the #s2-natural-language-control fragment, but models-overview.mdx does not define an anchor with that id (the heading is "S2-Pro Natural Language Control", which will typically slug to #s2-pro-natural-language-control). Update the fragment to match the actual heading id or add an explicit anchor in the destination page to avoid broken in-page navigation.
| The `(parenthesis)` syntax below applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. | |
| The `(parenthesis)` syntax below applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-pro-natural-language-control) for details. |
| ## Adding Emotions | ||
|
|
||
| <Tip> | ||
| The `(parenthesis)` syntax below applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. |
There was a problem hiding this comment.
The Models Overview link uses the #s2-natural-language-control fragment, but models-overview.mdx does not define an anchor with that id (the heading is "S2-Pro Natural Language Control", which will typically slug to #s2-pro-natural-language-control). Update the fragment to match the actual heading id or add an explicit anchor in the destination page to avoid broken in-page navigation.
| The `(parenthesis)` syntax below applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. | |
| The `(parenthesis)` syntax below applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-pro-natural-language-control) for details. |
| Fish Audio models support 64+ emotional expressions and voice styles that can be controlled through text markers in your input. Add natural pauses, laughter, and other human-like elements to make speech more engaging and realistic. | ||
|
|
||
| <Tip> | ||
| The `(parenthesis)` syntax on this page applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. |
There was a problem hiding this comment.
The Models Overview link uses the #s2-natural-language-control fragment, but models-overview.mdx does not define an anchor with that id (the heading is "S2-Pro Natural Language Control", which will typically slug to #s2-pro-natural-language-control). Update the fragment to match the actual heading id or add an explicit anchor in the destination page to avoid broken in-page navigation.
| The `(parenthesis)` syntax on this page applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-natural-language-control) for details. | |
| The `(parenthesis)` syntax on this page applies to the S1 model. S2 uses `[bracket]` syntax with natural language descriptions and is not limited to a fixed set of tags. See the [Models Overview](/developer-guide/models-pricing/models-overview#s2-pro-natural-language-control) for details. |
| ### S2-Pro Natural Language Control | ||
|
|
||
| ### S1 | ||
| S2-Pro treats `[bracket]` tags as standard text rather than dedicated control tokens. Through training on massive datasets, the model learned implicit mappings between natural language descriptions and acoustic variations. This means you are not limited to a predefined set of tags — you can use any descriptive expression and the model will interpret it, such as `[whispers sweetly]` or `[laughing nervously]`. | ||
|
|
There was a problem hiding this comment.
Multiple pages link to models-overview#s2-natural-language-control, but this page does not currently define that anchor. Since this heading will usually slug to #s2-pro-natural-language-control, either add an explicit anchor with id s2-natural-language-control here or align all inbound links to the actual slug to prevent broken navigation.
|
|
||
| Use model ID `s2-pro` in the API. S1 remains supported for existing integrations. | ||
|
|
||
| [GitHub](https://github.com/fishaudio/fish-speech) | [HuggingFace](https://huggingface.co/fishaudio) |
There was a problem hiding this comment.
Link text uses "HuggingFace" here, but the rest of this changelog uses "Hugging Face" (with a space). Use consistent branding for readability and consistency.
| [GitHub](https://github.com/fishaudio/fish-speech) | [HuggingFace](https://huggingface.co/fishaudio) | |
| [GitHub](https://github.com/fishaudio/fish-speech) | [Hugging Face](https://huggingface.co/fishaudio) |
| |--------------|------------------------| | ||
| | `s2-pro` | $15.00 / M UTF-8 bytes | | ||
| | `s1` | $15.00 / M UTF-8 bytes | | ||
| | `s2-pro` | $15.00 / M UTF-8 bytes | |
There was a problem hiding this comment.
The TTS pricing table lists s2-pro twice (lines 54 and 56). This is confusing and can mislead readers; remove the duplicate row (or replace it with the intended model) so each model appears only once.
| | `s2-pro` | $15.00 / M UTF-8 bytes | |
Summary by CodeRabbit
Documentation
Bug Fixes