| --- |
| 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. |
|
|