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.