Skip to main content

PyThaiTTS

Open Source Thai Text-to-speech library in Python

Google Colab | Docs | Notebooks Download

License: Apache-2.0 License

Install

Install by pip:

pip install pythaitts

Usage

Basic Usage

from pythaitts import TTS

tts = TTS()
file = tts.tts("ภาษาไทย ง่าย มาก มาก", filename="cat.wav") # It will get wav file path.
wave = tts.tts("ภาษาไทย ง่าย มาก มาก",return_type="waveform") # It will get waveform.

Using Different TTS Models

PyThaiTTS supports multiple TTS models. You can specify which model to use:

from pythaitts import TTS

# Use FastThaiG2P (default) (default voice: thai_som)
# FastThaiG2P Sample Rate is 24000 Hz
tts = TTS(pretrained="fastthaig2p")
file = tts.tts("สวัสดีครับ", speaker_idx="thai_som", filename="output.wav")

# Use Lunarlist ONNX
# Sample Rate is 22050 Hz
tts = TTS(pretrained="lunarlist_onnx")
file = tts.tts("ภาษาไทย ง่าย มาก", filename="output.wav")

# Use VachanaTTS (default voices: th_f_1, th_m_1, th_f_2, th_m_2)
# Sample Rate is 22050 Hz
tts = TTS(pretrained="vachana")
file = tts.tts("สวัสดีครับ", speaker_idx="th_f_1", filename="output.wav")

# Use KhanomTan
# Sample Rate is 16000 Hz
tts = TTS(pretrained="khanomtan")
file = tts.tts("ภาษาไทย", speaker_idx="Linda", filename="output.wav")

Real-time / Streaming TTS (FastThaiG2P)

PyThaiTTS supports low-latency, real-time streaming speech synthesis with FastThaiG2P, making it ideal for conversational voice agents and LLM streaming:

1. Streaming Audio from Text

Synthesize chunk-by-chunk in real time:

from pythaitts import TTS

tts = TTS(pretrained="fastthaig2p")

# Stream audio chunks as 24kHz float32 NumPy arrays
for audio_chunk in tts.stream("สวัสดีครับ ยินดีต้อนรับสู่ระบบเรียลไทม์ทีทีเอส"):
    print(f"Audio chunk shape: {audio_chunk.shape}")

# Stream raw 16-bit PCM bytes (for WebSockets or PyAudio)
for pcm_bytes in tts.stream("สวัสดีครับ", return_type="bytes"):
    # send over websocket or write to audio stream
    pass

2. Streaming from an LLM Token Stream

Feed tokens directly from an LLM or generator into tts.stream():

from pythaitts import TTS

tts = TTS()

def token_stream():
    tokens = ["สวัสดี", "ครับ", " ", "นี่", "คือ", "การ", "สตรีม", "มิ่ง"]
    for tok in tokens:
        yield tok

for audio_chunk in tts.stream(token_stream()):
    # Process or play chunk with low latency
    pass

3. Integration with the RealtimeTTS Library

You can use FastThaiG2P as an engine with KoljaB/RealtimeTTS:

pip install pythaitts[realtime]
from RealtimeTTS import TextToAudioStream
from pythaitts.realtime import FastThaiG2PEngine

engine = FastThaiG2PEngine()
stream = TextToAudioStream(engine)
stream.feed("สวัสดีครับ วันนี้อากาศดีมาก")
stream.play()

Text Preprocessing

PyThaiTTS includes automatic text preprocessing to improve TTS quality:

  • Number to Thai text conversion: Converts digits (e.g., "123") to Thai text (e.g., "หนึ่งร้อยยี่สิบสาม")
  • Mai yamok (ๆ) expansion: Expands the Thai repetition character (e.g., "ดีๆ" becomes "ดีดี")

Preprocessing is enabled by default:

from pythaitts import TTS

tts = TTS()
# Automatic preprocessing: "มี 5 คนๆ" becomes "มี ห้า คนคน"
file = tts.tts("มี 5 คนๆ", filename="output.wav")

You can disable preprocessing if needed:

file = tts.tts("มี 5 คนๆ", preprocess=False, filename="output.wav")

You can also use preprocessing functions directly:

from pythaitts import num_to_thai, expand_maiyamok, preprocess_text

# Convert numbers to Thai text
print(num_to_thai("123"))  # Output: หนึ่งร้อยยี่สิบสาม

# Expand mai yamok
print(expand_maiyamok("ดีๆ"))  # Output: ดีดี

# Full preprocessing
print(preprocess_text("มี 5 คนๆ"))  # Output: มี ห้า คนคน

You can see more at https://pythainlp.github.io/PyThaiTTS/.

Metadata

Release files for PyThaiTTS 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyThaiTTS 0.7.0
File Size Uploaded
pythaitts-0.7.0.tar.gz 7.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for PyThaiTTS 0.7.0
File Interpreter ABI Platform
pythaitts-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 14.2 MB

Release files / pythaitts-0.7.0.tar.gz

Download URL pythaitts-0.7.0.tar.gz
Size 7.0 MB
Tags Source
SHA-256 checksum
How to use checksums
802449ff22df4a2bfb204c5741f29b8499c5c0309003fe8abbe8e30484e9da08
BLAKE2b-256 checksum
How to use checksums
17e48fcbca171dccb2ef9116716e6c3b5ca205aab9dd759f5d5f3ad311dc9390
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pythaitts-0.7.0-py3-none-any.whl

Download URL pythaitts-0.7.0-py3-none-any.whl
Size 7.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
5474413bfbbae112a60ffc2d0116b3130b287dc2137279bda704db4cac7859b7
BLAKE2b-256 checksum
How to use checksums
49fdc53988bd37e411c0478031d9d4c63208e074f35481048bd2cf33ae68f083
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page