# Supertonic 3 Supported Languages and Language Codes: Complete Guide

> Explore Supertonic 3's 31 supported languages and learn how to use ISO-639-1 language codes with the lang parameter. Get the complete guide for Supertonic 3.

- Repository: [Supertone Inc./supertonic](https://github.com/supertone-inc/supertonic)
- Tags: getting-started
- Published: 2026-06-12

---

**Supertonic 3 supports 31 individual languages plus a language-agnostic mode using ISO-639-1 two-letter codes passed via the `lang` parameter across all official bindings.**

The supertone-inc/supertonic repository provides a multilingual Text-to-Speech (TTS) engine capable of synthesizing speech from text in 31 distinct languages. Understanding how to specify language codes correctly is essential for optimal voice generation across the various language bindings including Python, JavaScript, Rust, Go, C++, Swift, and C#.

## Supported Languages in Supertonic 3

Supertonic 3 synthesizes speech using **ISO-639-1 two-letter codes** to identify target languages. The system supports 31 individual languages plus a special **language-agnostic** mode that lets the model infer the language automatically.

The complete list of supported language codes includes:

| Code | Language |
|------|----------|
| `en` | English |
| `ko` | Korean |
| `ja` | Japanese |
| `ar` | Arabic |
| `bg` | Bulgarian |
| `cs` | Czech |
| `da` | Danish |
| `de` | German |
| `el` | Greek |
| `es` | Spanish |
| `et` | Estonian |
| `fi` | Finnish |
| `fr` | French |
| `hi` | Hindi |
| `hr` | Croatian |
| `hu` | Hungarian |
| `id` | Indonesian |
| `it` | Italian |
| `lt` | Lithuanian |
| `lv` | Latvian |
| `nl` | Dutch |
| `pl` | Polish |
| `pt` | Portuguese |
| `ro` | Romanian |
| `ru` | Russian |
| `sk` | Slovak |
| `sl` | Slovenian |
| `sv` | Swedish |
| `tr` | Turkish |
| `uk` | Ukrainian |
| `vi` | Vietnamese |
| `na` | Language-agnostic |

Use the special `na` code when you want Supertonic to automatically detect and infer the language from the input text.

## Where Language Codes Are Defined in the Source

According to the Supertonic source code, each language binding maintains an identical canonical list of available languages in helper validation files. These constants ensure consistent behavior across platforms:

- **JavaScript/Web**: [`web/helper.js`](https://github.com/supertone-inc/supertonic/blob/main/web/helper.js) exports `AVAILABLE_LANGS` as an array of strings
- **Python**: [`py/helper.py`](https://github.com/supertone-inc/supertonic/blob/main/py/helper.py) defines `AVAILABLE_LANGS` as a list constant
- **Rust**: [`rust/src/helper.rs`](https://github.com/supertone-inc/supertonic/blob/main/rust/src/helper.rs) declares `pub const AVAILABLE_LANGS: &[&str]`
- **Swift**: [`swift/Sources/Helper.swift`](https://github.com/supertone-inc/supertonic/blob/main/swift/Sources/Helper.swift) contains `let AVAILABLE_LANGS`
- **Go**: [`go/helper.go`](https://github.com/supertone-inc/supertonic/blob/main/go/helper.go) specifies `const AVAILABLE_LANGS`
- **C++**: [`cpp/helper.cpp`](https://github.com/supertone-inc/supertonic/blob/main/cpp/helper.cpp) uses `const std::vector<std::string> AVAILABLE_LANGS`
- **C#**: [`csharp/Helper.cs`](https://github.com/supertone-inc/supertonic/blob/main/csharp/Helper.cs) references `Languages.Available`

If an unsupported code is supplied, these helpers throw language-specific errors indicating the valid set.

## How to Specify Language Codes in Each Binding

Each binding exposes a parameter—commonly named `lang`, `--lang`, or `language`—that accepts one of the ISO-639-1 codes above.

### JavaScript and Web

In [`web/helper.js`](https://github.com/supertone-inc/supertonic/blob/main/web/helper.js), pass the language code via the `lang` property:

```javascript
import { synthesize } from "./helper.js";

const wav = await synthesize({
  text: "Hello, world!",
  voice: "en_female_1",
  lang: "en",
  nfe: 5,
});

```

The helper validates that `"en"` exists in `AVAILABLE_LANGS` before processing.

### Python

The Python binding in [`py/helper.py`](https://github.com/supertone-inc/supertonic/blob/main/py/helper.py) uses a `lang` parameter and raises `ValueError` for invalid codes:

```python
from supertonic.helper import synthesize

wav = synthesize(
    text="Bonjour le monde!",
    voice="fr_male_2",
    lang="fr",
    nfe=5,
)

```

### Rust CLI

For the Rust command-line interface defined in [`rust/src/helper.rs`](https://github.com/supertone-inc/supertonic/blob/main/rust/src/helper.rs), use the `--lang` flag:

```bash
supertonic-cli \
  --text "こんにちは世界" \
  --voice ja_female_1 \
  --lang ja \
  --nfe 5 \
  --output hello.wav

```

The binary aborts with a clear error if the code is not found in `AVAILABLE_LANGS`.

### Go

In [`go/helper.go`](https://github.com/supertone-inc/supertonic/blob/main/go/helper.go), specify the language via the `Lang` field:

```go
wav, err := helper.Synthesize(helper.Params{
    Text:  "Привет мир",
    Voice: "ru_male_1",
    Lang:  "ru",
    NFE:   5,
})

```

Invalid codes trigger a panic listing available languages.

### C++

The C++ implementation in [`cpp/helper.cpp`](https://github.com/supertone-inc/supertonic/blob/main/cpp/helper.cpp) validates codes against `AVAILABLE_LANGS` and throws `std::runtime_error` on mismatch:

```cpp
auto wav = synthesize(
    "Hallo Welt",
    "de_female_1",
    "de",
    5
);

```

### Swift

For iOS development using [`swift/Sources/Helper.swift`](https://github.com/supertone-inc/supertonic/blob/main/swift/Sources/Helper.swift), use the `language` parameter:

```swift
let wav = try Helper.synthesize(
    text: "안녕하세요",
    voice: "ko_female_1",
    language: "ko",
    nfe: 5
)

```

An invalid code results in a `fatalError` displaying the full valid list.

### C#

In the C# binding ([`csharp/Helper.cs`](https://github.com/supertone-inc/supertonic/blob/main/csharp/Helper.cs)), pass the code via the `lang` parameter:

```csharp
var wav = Helper.Synthesize(
    text: "Ciao mondo",
    voice: "it_male_1",
    lang: "it",
    nfe: 5);

```

[`Helper.cs`](https://github.com/supertone-inc/supertonic/blob/main/Helper.cs) validates against `Languages.Available` and throws `ArgumentException` for unsupported codes.

## Summary

- Supertonic 3 supports **31 languages** using ISO-639-1 two-letter codes plus a language-agnostic mode (`na`)
- Language validation is enforced consistently across all bindings via `AVAILABLE_LANGS` constants in helper files
- Specify codes using the `lang`, `--lang`, or `language` parameter depending on your binding
- Invalid codes trigger immediate errors with helpful messages listing supported options
- Use `na` (language-agnostic) when you want Supertonic to infer the language automatically

## Frequently Asked Questions

### What happens if I use an unsupported language code in Supertonic 3?

Each binding validates input against the `AVAILABLE_LANGS` constant. If you provide an unsupported code, the library throws a language-specific error: `ValueError` in Python, `std::runtime_error` in C++, `ArgumentException` in C#, or a panic in Go and Rust. All error messages include the complete list of valid codes.

### Can I use Supertonic 3 without specifying a language?

Yes. Pass the special code `na` (language-agnostic) to let Supertonic automatically infer the language from your input text. This is useful when processing multilingual content or when the source language is unknown.

### Are language codes case-sensitive in Supertonic 3?

The source code stores language codes as lowercase strings in all `AVAILABLE_LANGS` arrays. While some bindings may normalize input, you should use lowercase ISO-639-1 codes (e.g., `"en"` not `"EN"`) to ensure compatibility across all platforms.

### How do I check if my language is supported programmatically?

Access the public `AVAILABLE_LANGS` constant exposed in each binding's helper file. For example, in Python import `AVAILABLE_LANGS` from `supertonic.helper`, or in JavaScript import `{ AVAILABLE_LANGS }` from [`./helper.js`](https://github.com/supertone-inc/supertonic/blob/main/./helper.js). Check if your desired code exists in this array before calling `synthesize`.