Views
No views yet
fishaudio/fish-speech-1.5
using LoRA r=8, alpha=16 (0.96 % trainable params) on 24 hours of Tanglish
audio from the companion dataset
sugiv/tanglish-audio-v1.| Metric | Value |
|---|---|
| Base model | fishaudio/fish-speech-1.5 |
| LoRA config | r=8, alpha=16, target=all-linear |
| Effective batch size | 24 (12 x 2 grad accum) |
| Learning rate | cosine, warmup=200, peak=1e-4 |
| Precision | bfloat16 |
| Best val/loss | 7.9294 (step 1,300) |
| Val/loss at start (step 100) | 9.98 |
| Relative improvement | -20 % |
| Early stop fired at | step ~1,800 (patience 8) |
| Training wall | 9 h 5 min on 1x L40 48 GB |
| WandB run | sugi205/fish-speech-tanglish/9jcwux9l |
karthik_kumar_solo)fish-speech-1.5 (A/B baseline)karthik_kumar_solo/Ow1q3_xSJWw_000000.wav (2.52 s)"innaiku vandhadhukku mannichitten. problem!"temperature=0.7, top_p=0.7, repetition_penalty=1.5, seed=42, bf16eval/PHASE_2_EVAL.md.
Raw WAVs under eval/{in_distribution,novel,hard,cross_speaker,ab_base}/.PHASE_2_EVAL.md for the detailed rubric.| Path | What |
|---|---|
model.pth | Merged 1.28 GB LLM half of fish-speech (the text-to-semantic backbone). NOT the VQGAN vocoder — see below. |
config.json | Model architecture config (Fish-Speech 1.5 dual-AR llama) |
tokenizer.tiktoken | Tiktoken tokenizer (same as base) |
special_tokens.json | Special-token map |
lora-ckpts/ | Raw Lightning checkpoints: last.ckpt, step_1200/1300/1800.ckpt. step_1300 is the best-val checkpoint. |
eval/ | Phase 2 evaluation bundle: MANIFEST + 36 WAVs + write-up |
firefly-gan-vq-fsq-8x1024-21hz-generator.pth) is not
bundled here — it is unchanged from the base model. Download it once from
fishaudio/fish-speech-1.5
and cache it locally.1import torch
2from huggingface_hub import snapshot_download, hf_hub_download
3from fish_speech.inference_engine import TTSInferenceEngine
4from fish_speech.models.text2semantic.inference import launch_thread_safe_queue
5from fish_speech.models.vqgan.inference import load_model as load_decoder_model
6from fish_speech.utils.schema import ServeReferenceAudio, ServeTTSRequest
7
8# 1. Tanglish LLM half (this repo)
9llm_dir = snapshot_download("sugiv/fish-speech-1.5-tanglish", token="hf_...")
10
11# 2. VQGAN vocoder (upstream, unchanged)
12vq_ckpt = hf_hub_download(
13 "fishaudio/fish-speech-1.5",
14 "firefly-gan-vq-fsq-8x1024-21hz-generator.pth",
15)
16
17llama_queue = launch_thread_safe_queue(
18 checkpoint_path=llm_dir, device="cuda", precision=torch.bfloat16, compile=False,
19)
20decoder = load_decoder_model(
21 config_name="firefly_gan_vq", checkpoint_path=vq_ckpt, device="cuda",
22)
23engine = TTSInferenceEngine(
24 llama_queue=llama_queue, decoder_model=decoder,
25 precision=torch.bfloat16, compile=False,
26)
27
28ref_audio_bytes = open("ref.wav", "rb").read()
29for r in engine.inference(ServeTTSRequest(
30 text="machi, nalaikku Chennai la enna weather?",
31 references=[ServeReferenceAudio(audio=ref_audio_bytes, text="innaiku vandhadhukku mannichitten. problem!")],
32)):
33 if r.code == "final":
34 sr, audio_np = r.audio
35 breaktransformers.from_pretrained — fish-speech uses a
bespoke Lightning-checkpoint format. Load via fish_speech.inference_engine.fishaudio/fish-speech-1.5). Non-commercial only.1@misc{tanglish_fish_speech_2026,
2 title={Fish-Speech 1.5 Tanglish LoRA},
3 author={sugiv},
4 year={2026},
5 url={https://huggingface.co/sugiv/fish-speech-1.5-tanglish}
6}