File size: 5,404 Bytes
f91199b
 
6272580
 
f91199b
 
 
 
 
6272580
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
title: README
emoji: πŸ—£
colorFrom: indigo
colorTo: pink
sdk: static
pinned: false
---

# TinyAya β€” Turkish ⇄ Hindi Speech-to-Speech Translation

Can a **text-pretrained multilingual model** be taught to translate *speech to
speech* β€” for a language pair with almost no parallel speech data?

That is what this organization holds: a LoRA-adapted **Cohere2** backbone driving
a **frozen Moshi depth decoder** over **Mimi** audio codes, with a text
"inner-monologue" running alongside the audio stream. Everything is here β€” the
text corpus, the synthetic speech, the encoded tokens, the model, and every
training checkpoint.

## What v0.3 actually achieved

The full-corpus run covered **76,250 steps / 2.07 epochs** on a Cloud TPU v6e-16,
reaching a best validation composite of **2.8199** at step 76,000. Read honestly,
capability arrived in a clear order β€” **language identity β†’ text translation β†’
audio synthesis** β€” and the run bought the first two:

| what we measured (`@best`, 500 held-out rows, greedy) | hi→tr | tr→hi |
|---|---|---|
| free-run **text** chrF++ β€” the inner-monologue | **25.7** | **25.1** |
| generated-audio **ASR-chrF++** | 3.7 | 9.6 |
| **ground-truth-audio ceiling** for the same pipeline | 92.1 | 86.6 |
| BLASER-2.0 QE (ASR-free speech semantics, 1–5) | 2.53 | 2.49 |

**The model learns the translation mapping; intelligible audio synthesis is the
frontier.** The gap between 3.7/9.6 and the 92/87 ceiling is not a broken
pipeline β€” that ceiling was measured through the same codec and ASR β€” it is the
frozen depth decoder. BLASER-2.0 sees more meaning in the generated speech than
a transcript recovers, which says the audio carries real signal that is simply
not yet intelligible.

We publish the number next to its ceiling every time. A low score with no ceiling
beside it is unreadable.

## Start here

| | |
|---|---|
| 🎧 **Model** | [`tr-hi-s2st-v0.3`](https://huggingface.co/tiny-aya-translate/tr-hi-s2st-v0.3) β€” ~89-checkpoint suite + playable audio |
| πŸ“Š **Full results** | [v0.3 evaluation report](https://github.com/tiny-aya-simultaneous-translation/model/blob/main/docs/v0.3-eval-report.md) |
| πŸ—‚ **Training corpus** | [`tr-hi-mimi-encoded`](https://huggingface.co/datasets/tiny-aya-translate/tr-hi-mimi-encoded) |
| πŸ’» **Code** | [github.com/tiny-aya-simultaneous-translation](https://github.com/tiny-aya-simultaneous-translation) |
| ✍️ **Write-up** | [Adapting Moshi for Low-Resource Speech Translation](https://labscommunity.cohere.com/blog/2026/adapting-moshi-low-resource-speech-translation/) |
| πŸ“ˆ **Training run** | [W&B `xzcb60bl`](https://wandb.ai/cataluna84/tinyaya-stage2-tpu/runs/xzcb60bl) Β· [emergence report](https://wandb.ai/cataluna84/tinyaya-stage2-tpu/reports/TinyAya-v0.3-Emergence-and-Data-Efficiency--VmlldzoxNzU1OTU1NQ==) |

## How the data becomes the model

```
tr-hi-parallel-text          text triples (en pivot -> tr / hi)
        |  TTS
tr-hi-parallel-speech-v2     synthetic speech + round-trip ASR quality signals
        |  Mimi encode
tr-hi-mimi-encoded           8 codebooks @ 12.5 Hz + word-level alignments
        |  Stage-2 training
tr-hi-s2st-v0.3              the released model
```

## Also in this organization

- **Model history** β€” [`v0.1`](https://huggingface.co/tiny-aya-translate/tr-hi-s2st-v0.1)
  and [`v0.2`](https://huggingface.co/tiny-aya-translate/tr-hi-s2st-v0.2) are kept
  as honest history, including the disclosed mistakes: v0.2 trained on the wrong
  dataset via a launcher default, and both trained audio-only because a filename
  check wrongly concluded the corpus had no text alignments. It ships 840,426 of
  them.
- **Evaluation sets** β€” [`fleurs-tr-hi-mimi-encoded`](https://huggingface.co/datasets/tiny-aya-translate/fleurs-tr-hi-mimi-encoded)
  (real human speech; **acoustic shift only** β€” its texts overlap training and it
  must never be called held-out text),
  [`lahaja-eval`](https://huggingface.co/datasets/tiny-aya-translate/lahaja-eval) (Hindi, dialect-labelled),
  [`cv-tr-eval`](https://huggingface.co/datasets/tiny-aya-translate/cv-tr-eval) (Turkish).
- **Codec research** β€” [`dualcodec-hindi-25hz`](https://huggingface.co/tiny-aya-translate/dualcodec-hindi-25hz)
  and [`dualcodec-turkish-25hz`](https://huggingface.co/tiny-aya-translate/dualcodec-turkish-25hz):
  can a neural codec fine-tuned on a low-resource language beat the stock
  multilingual one? Directly relevant, since codec quality is what caps v0.3.

## Caveats worth knowing before you use this

Training speech is **entirely synthetic TTS**, and the model is measurably
distribution-bound β€” on real human speech the text score collapses from ~25 to
~8 chrF++. Translation references are machine-translated, so they carry their own
ceiling. This is a **research artifact** for low-resource S2ST, not a production
translator.

## Licensing

Released **weights are CC-BY-NC-4.0** β€” non-commercial, inherited from
[`CohereLabs/tiny-aya-base`](https://huggingface.co/CohereLabs/tiny-aya-base).
The training and evaluation **code is Apache-2.0**. Moshi/Mimi components are
CC-BY-4.0. Corpus text derives from FLORES (**CC BY-SA 4.0 β€” share-alike
propagates**), OPUS-100 and TTS output; check each dataset card before
redistributing.

Compute for the v0.3 run was provided by **[Google's TPU Research Cloud (TRC)](https://sites.research.google/trc/)**.