Local speech recognition & synthesis

Generate expressive speech with Fish Audio S2 Pro

Dialogue tags can steer delivery, but the weights are restricted to research and non-commercial use.

Fish Audio S2 Pro turns text and speaker information into speech. Its model card lists 83 languages and fine-grained expression tags for shaping dialogue delivery. The fish-audio-research-license restricts use to research and non-commercial purposes, so do not use it for commercial work.

Requirements and key details
  • The card lists 83 languages and expressive dialogue tags.
  • Add tags to dialogue text to specify delivery.
  • The weights use a research and non-commercial license.

Create speech from dialogue with delivery cues

Fish Audio S2 Pro is a speech-generation model. It takes text and speaker information, and its card describes expression tags for marking laughter, emotion, and delivery in dialogue. Tagged text is model input rather than a script that will be read literally, so listen to how the model renders each cue. Official model card

An open book, a small computer, and a speaker on a desk
Test delivery by adding an expression tag to a line of dialogue.

Prepare the CUDA environment and S2 Pro assets on Linux or WSL

The official installation guide provides a Python 3.12, uv, and NVIDIA CUDA1 12.9 path. On Linux or WSL, prepare a CUDA-compatible driver and a GPU2 with 24GB VRAM3, then install the system audio packages, CUDA dependencies, and S2 Pro checkpoint4.

Install CUDA dependencies and the S2 Pro model
sudo apt-get update && sudo apt-get install -y portaudio19-dev libsox-dev ffmpeg
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/fishaudio/fish-speech.git
cd fish-speech
uv sync --python 3.12 --extra cu129
uv run hf download fishaudio/s2-pro --local-dir checkpoints/s2-pro

Change one tag at a time

Place reference.wav in the repository root and create its prompt5 tokens6. Then provide the reference transcript and target text to generate semantic tokens. Save each tagged run to a separate folder and decode7 both as WAV files for comparison.

Encode the reference recording
uv run python fish_speech/models/dac/inference.py -i reference.wav --checkpoint-path checkpoints/s2-pro/codec.pth
# Creates fake.npy and fake.wav
Compare one expression tag at a time
uv run python fish_speech/models/text2semantic/inference.py --text "[whisper] 오늘 회의는 오후 두 시에 시작합니다." --prompt-text "참조 음성의 정확한 문장" --prompt-tokens fake.npy --output-dir output-whisper
uv run python fish_speech/models/text2semantic/inference.py --text "[excited] 오늘 회의는 오후 두 시에 시작합니다." --prompt-text "참조 음성의 정확한 문장" --prompt-tokens fake.npy --output-dir output-excited
Decode generated tokens to WAV
uv run python fish_speech/models/dac/inference.py -i output-whisper/codes_0.npy --checkpoint-path checkpoints/s2-pro/codec.pth -o whisper.wav
uv run python fish_speech/models/dac/inference.py -i output-excited/codes_0.npy --checkpoint-path checkpoints/s2-pro/codec.pth -o excited.wav
A microphone, headphones, and a monitor showing an audio waveform
Listen for the intended dialogue and pauses in the generated file.

Stay within the research and non-commercial license

The fish-audio-research-license permits research and non-commercial use; commercial use requires separate permission from Fish Audio. Review the license and rights for the input voice before using the result in public content or a paid service.

Listen through the final file and revise it

Once the sample sounds right, generate the full passage and listen through. Check names, numbers, dialogue spacing and emotion tags. In your editor, even out levels and add captions and cuts for the final video.

If you only need a handful of short announcement clips, there is no reason to pick this model first. Compare it when you need many languages and long passages produced together.

Headphones, an audio player, and an open notebook on a desk
Check the research and non-commercial license before use.

Terminology notes

  1. CUDA — A software platform for general-purpose computing on NVIDIA GPUs.

    Back to the text
  2. GPU — A processor designed to handle many calculations in parallel. It performs model computations during AI inference.

    Back to the text
  3. VRAM — Memory used by a graphics card’s GPU to store model weights and intermediate values.

    Back to the text
  4. Checkpoint — A file containing saved model weights and related state. Versions or tasks in one model family may use different checkpoints.

    Back to the text
  5. Prompt — The input text sent to a model. For generative models it describes the desired result and strongly shapes the output.

    Back to the text
  6. Token — A unit into which a model divides input or output for processing.

    Back to the text
  7. Token decoding — The stage that generates successive output tokens using the input and the response produced so far.

    Back to the text

Frequently asked questions

What should you check first in this article?
Fish Audio S2 Pro turns text and speaker information into speech. Its model card lists 83 languages and fine-grained expression tags for shaping dialogue delivery. The fish-audio-research-license restricts use to research and non-commercial purposes, so do not use it for commercial work.
How much memory does it need?
The official installation guide provides a Python 3.12, uv, and NVIDIA CUDA 12.9 path. On Linux or WSL, prepare a CUDA-compatible driver and a GPU with 24GB VRAM, then install the system audio packages, CUDA dependencies, and S2 Pro checkpoint.
Where can you check the conditions and sources?
Fish Audio S2 Pro is a speech-generation model. It takes text and speaker information, and its card describes expression tags for marking laughter, emotion, and delivery in dialogue. Tagged text is model input rather than a script that will be read literally, so listen to how the model renders each cue. [Official model card](https://huggingface.co/fishaudio/s2-pro)