File size: 4,478 Bytes
c0aad55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a837456
 
 
c0aad55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
language:
- zh
pipeline_tag: text-to-speech
license: other
license_name: lingtts-community-license-1-0
license_link: https://github.com/LingCoreX-AI/LingTTS/blob/main/licenses/LingTTS-Community-License-1.0.md
tags:
- esp32
- esp32-s3
- embedded
- offline-tts
- chinese-tts
- edge-ai
---

# LingTTS: Offline Chinese Neural Text-to-Speech for ESP32-S3

[简体中文说明](https://github.com/LingCoreX-AI/LingTTS/blob/main/README.md) | English

The model and engine are distributed through the community SDK on GitHub; this repository contains the model card, not standalone weights. It is not a Transformers-ready checkpoint.

LingTTS is a neural text-to-speech model for offline Mandarin speech synthesis on ESP32-S3-class devices. It generates speech locally from Chinese text, including stories, short passages and device information. The ESP-IDF SDK provides an integration interface.

[Try the online demo](https://edge.lingcorex.cn) — the demo runs the same C code and model compiled for a PC server; use a board to evaluate device performance.

## Can ESP32-S3 run neural TTS offline?

Yes. LingTTS runs the synthesis locally on ESP32-S3 without a cloud connection. The current community preview is 0.2.0-rc1. It supports Mandarin Chinese; English support is limited to letters and around 80 common words, not full English sentences.

## ESP32-S3 performance and memory

The measurements below are for ESP32-S3 N16R8 at 240 MHz with ESP-IDF 5.5.6. Results depend on the application and memory configuration. RTF is synthesis time divided by generated audio duration; lower is faster.

| Metric | Measured result |
| --- | --- |
| Audio output | 16 kHz, 16-bit mono PCM, delivered in chunks |
| RTF | 0.42 with PSRAM / 0.48 using internal RAM, hello example including text front end; 0.53–0.54 in the Wi-Fi demo |
| First PCM | 0.27–0.32 seconds from invocation, not speaker playback latency |
| Memory | 2.63 MB PSRAM plus about 1 KB internal RAM, or 151 KB internal RAM without PSRAM; task stack, DMA and application memory are extra |
| Flash | About 2.6 MB for library, model and dictionary; fits within 4 MB Flash subject to application and partition needs |
| Model file | About 1.83 MB for one base voice; the optional second voice model is also about 1.83 MB |

The deployed model is quantized and packaged; a verified parameter count is not currently published. File size should not be read as parameter count.

See the [performance details](https://github.com/LingCoreX-AI/LingTTS/blob/main/docs/资源与性能.md) and [integration guide](https://github.com/LingCoreX-AI/LingTTS/blob/main/docs/集成指南.md) (Chinese).

## Try it on a board

The demo requires an ESP32-S3 N16R8 board, MAX98357A amplifier and speaker. Connect BCLK to GPIO 15, LRC to GPIO 16, and DIN to GPIO 7. Download the community demo package from [Releases](https://github.com/LingCoreX-AI/LingTTS/releases), extract it and run:

```bash
python -m pip install esptool==4.12.0
python flash.py --port COM5  # Linux / WSL: python3 flash.py --port /dev/ttyUSB0
```

Connect a phone to the `LingTTS-Demo` Wi-Fi hotspot (password `lingtts-demo`), open http://192.168.4.1, enter Chinese text and play it. For ESP-IDF integration, download the community SDK package from Releases and see the [Chinese README](https://github.com/LingCoreX-AI/LingTTS/blob/main/README.md#在自己的工程里用).

## Limitations

The current release offers a Mandarin voice. English is limited as described above; SSML, emotion and speed controls are not supported. Polyphonic characters, names and model numbers may require text adaptation. Other chips have not yet been adapted.

## License

Examples, public headers and integration files use the [MIT license](https://github.com/LingCoreX-AI/LingTTS/blob/main/licenses/MIT.txt). The precompiled engine, model, dictionary and demo firmware use the separate [LingTTS Community License 1.0](https://github.com/LingCoreX-AI/LingTTS/blob/main/licenses/LingTTS-Community-License-1.0.md). The core and model are not open-source software. Personal projects, education, and internal company R&D, testing and prototypes are free; commercial deployment requires written authorization. Contact service@lingcorex.cn.

Report board, documentation or pronunciation issues via [GitHub Issues](https://github.com/LingCoreX-AI/LingTTS/issues), including the board, SDK version, memory configuration and relevant logs. Do not include secrets or personal information.