File size: 4,607 Bytes
c61f5a0 14ce593 7031224 c61f5a0 7031224 e4a3814 34a9004 e4a3814 34a9004 e4a3814 7031224 34a9004 7031224 34a9004 7031224 34a9004 e4a3814 34a9004 e4a3814 7031224 34a9004 7031224 c61f5a0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | ---
license: other
library_name: pytorch
pipeline_tag: text-to-speech
language:
- th
- lo
tags:
- text-to-speech
- speech-synthesis
- audio
- thai
- lao
- low-resource
- spoken-language-model
- se-bridge-tts
- icml-2026
- pytorch
model-index:
- name: SE-Bridge-TTS
results: []
---
# SE-Bridge-TTS Weights
This model repository hosts the public release checkpoints for **SE-Bridge-TTS**, the project page for the ICML 2026 paper **Bridging the Stability-Expressivity Gap: Synthetic Data Scaling and Preference Alignment for Low-Resource Spoken Language Models**.
## Links
- Project page: https://insiderx-pro.github.io/SE-Bridge-TTS/
- GitHub repository: https://github.com/InsiderX-Pro/SE-Bridge-TTS
- arXiv paper: https://arxiv.org/abs/2605.27383
- Hugging Face model repository: https://huggingface.co/isabeth/SE-Bridge-TTS
## Hugging Face Classification
- Repository type: `model`
- Task / pipeline: `text-to-speech`
- Library: `pytorch`
- Languages: Thai (`th`) and Lao (`lo`)
- Primary tags: `text-to-speech`, `speech-synthesis`, `thai`, `lao`, `low-resource`, `spoken-language-model`
## Files
| File | Description |
| --- | --- |
| `thai_tts.pt` | Public Thai TTS checkpoint. |
| `lao_tts.pt` | Public Lao TTS checkpoint. |
| `release_config.json` | Sanitized release metadata for the two checkpoints. |
## Inference
The released files are CosyVoice2 LLM checkpoints. They are intended to be loaded with a CosyVoice2-compatible checkout and the standard CosyVoice2 base model assets. The base model directory should contain the normal CosyVoice2 configuration and acoustic/vocoder weights, while this repository supplies the Thai or Lao LLM checkpoint.
Recommended inference mode by language:
| Checkpoint | Language | Recommended mode |
| --- | --- | --- |
| `thai_tts.pt` | Thai (`th`) | Cross-lingual inference with `inference_cross_lingual`. |
| `lao_tts.pt` | Lao (`lo`) | Cross-lingual inference with `inference_cross_lingual`. |
For this release, use cross-lingual inference as the default path for both Thai and Lao. Thai can also be tried with the zero-shot inference API when stronger prompt-speaker resemblance is desired, but that mode may be less stable, so use it cautiously and compare outputs. Lao should remain on the cross-lingual path.
Install or prepare CosyVoice first:
```bash
git clone https://github.com/FunAudioLLM/CosyVoice.git
cd CosyVoice
pip install -r requirements.txt
pip install huggingface_hub torchaudio
```
Default cross-lingual inference example:
```python
import sys
from pathlib import Path
import torch
import torchaudio
from huggingface_hub import snapshot_download
sys.path.append("third_party/Matcha-TTS")
from cosyvoice.cli.cosyvoice import CosyVoice2
from cosyvoice.utils.file_utils import load_wav
HF_REPO_ID = "isabeth/SE-Bridge-TTS"
BASE_MODEL_DIR = Path("pretrained_models/CosyVoice2-0.5B")
language = "thai" # choose "thai" or "lao"; both default to cross-lingual
checkpoint_name = {
"thai": "thai_tts.pt",
"lao": "lao_tts.pt",
}[language]
weights_dir = Path(snapshot_download(HF_REPO_ID))
checkpoint_path = weights_dir / checkpoint_name
cosyvoice = CosyVoice2(
str(BASE_MODEL_DIR),
load_jit=False,
load_trt=False,
load_vllm=False,
fp16=False,
)
state_dict = torch.load(checkpoint_path, map_location="cpu")
cosyvoice.model.llm.load_state_dict(state_dict, strict=False)
prompt_speech_16k = load_wav("prompt.wav", 16000)
tts_text = "Text to synthesize in the selected language."
if language not in {"thai", "lao"}:
raise ValueError("language must be either 'thai' or 'lao'")
outputs = cosyvoice.inference_cross_lingual(
tts_text,
prompt_speech_16k,
stream=False,
)
for idx, output in enumerate(outputs):
torchaudio.save(
f"se_bridge_tts_{language}_cross_lingual_{idx}.wav",
output["tts_speech"],
cosyvoice.sample_rate,
)
```
Optional Thai zero-shot variant:
```python
language = "thai"
prompt_text = "Transcript of prompt.wav."
outputs = cosyvoice.inference_zero_shot(
tts_text,
prompt_text,
prompt_speech_16k,
stream=False,
)
for idx, output in enumerate(outputs):
torchaudio.save(
f"se_bridge_tts_thai_zero_shot_{idx}.wav",
output["tts_speech"],
cosyvoice.sample_rate,
)
```
## Release Notes
This release package has been sanitized for public distribution. Internal server paths, private data paths, training-stage names, and operational configuration details are intentionally omitted. The repository does not describe per-stage checkpoint construction methods.
|