Update README

#9
by zeroweightai - opened
Files changed (1) hide show
  1. README.md +30 -5
README.md CHANGED
@@ -96,8 +96,8 @@ model-index:
96
 
97
  ### Vietnamese Zero-Shot Text-to-Speech (TTS) with real-time streaming and voice cloning from seconds of audio. Fast, natural, and optimised for CPU inference.
98
 
99
- **The most accurate open Vietnamese TTS we know of — 13× fewer word errors than
100
- the next open model**, and it runs faster than real time on a laptop CPU.
101
 
102
  * 🎯 **Ultra-natural** — 2.91 UTMOS, ~0.5 MOS above every other open Vietnamese
103
  system, with near-zero dead air (0.029 s vs 0.23–0.53 s).
@@ -107,7 +107,7 @@ the next open model**, and it runs faster than real time on a laptop CPU.
107
  * ⚡ **Real-time on CPU, streaming** — ~2× faster than real time (RTF 0.5×),
108
  first audio chunk in ~70 ms. No GPU required.
109
  * 🇻🇳 **Built for Vietnamese** — tones, code-switched English, and a built-in
110
- normalizer that reads `31/12/2025` and `1.250 tỷ` the way a person would.
111
 
112
  * Code, examples, browser demo: **https://github.com/zeroweight-ai/ZeroTTS**
113
  * Benchmark dataset: **https://huggingface.co/datasets/zeroweight-ai/ZeroBench-TTS**
@@ -127,8 +127,33 @@ tts.save_audio(audio, "out.wav")
127
  Streaming, with first audio in roughly 70 ms:
128
 
129
  ```python
130
- for chunk in tts.synthesize_stream("Một đoạn văn bản dài hơn…", voice="maichi"):
131
- play(chunk) # (1, n) float32 at 48 kHz
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  ```
133
 
134
  ## Benchmarks
 
96
 
97
  ### Vietnamese Zero-Shot Text-to-Speech (TTS) with real-time streaming and voice cloning from seconds of audio. Fast, natural, and optimised for CPU inference.
98
 
99
+ **The most accurate open Vietnamese TTS we know of — 4× fewer word errors than
100
+ the next best model**, and it runs faster than real time on a laptop CPU.
101
 
102
  * 🎯 **Ultra-natural** — 2.91 UTMOS, ~0.5 MOS above every other open Vietnamese
103
  system, with near-zero dead air (0.029 s vs 0.23–0.53 s).
 
107
  * ⚡ **Real-time on CPU, streaming** — ~2× faster than real time (RTF 0.5×),
108
  first audio chunk in ~70 ms. No GPU required.
109
  * 🇻🇳 **Built for Vietnamese** — tones, code-switched English, and a built-in
110
+ normalizer that reads `31/12/2025` and `ZeroTTS` the way a person would.
111
 
112
  * Code, examples, browser demo: **https://github.com/zeroweight-ai/ZeroTTS**
113
  * Benchmark dataset: **https://huggingface.co/datasets/zeroweight-ai/ZeroBench-TTS**
 
127
  Streaming, with first audio in roughly 70 ms:
128
 
129
  ```python
130
+ import queue
131
+
132
+ import numpy as np
133
+ import sounddevice as sd # pip install sounddevice
134
+
135
+ TEXT = ("Đây là chế độ phát trực tuyến. Âm thanh được tạo ra và phát ngay lập tức, "
136
+ "không cần chờ toàn bộ đoạn văn hoàn thành. Nhờ vậy, người nghe chỉ mất "
137
+ "khoảng 70 mili giây là đã nghe thấy câu đầu tiên, ngay cả khi mô "
138
+ "hình đang chạy trên CPU của một chiếc laptop bình thường.")
139
+
140
+ pending, tail = queue.Queue(), np.zeros(0, dtype="float32")
141
+
142
+ def feed(outdata, frames, _time, _status):
143
+ global tail
144
+ while len(tail) < frames and not pending.empty():
145
+ tail = np.concatenate([tail, pending.get_nowait()])
146
+ n = min(frames, len(tail))
147
+ outdata[:n, 0] = tail[:n]
148
+ outdata[n:] = 0
149
+ tail = tail[n:]
150
+
151
+ with sd.OutputStream(samplerate=tts.sample_rate, channels=1,
152
+ dtype="float32", callback=feed):
153
+ for chunk in tts.synthesize_stream(TEXT, voice="maichi"):
154
+ pending.put(chunk.reshape(-1)) # chunk is (1, n) float32 at 48 kHz
155
+ while not pending.empty() or len(tail):
156
+ sd.sleep(50) # let the buffer drain before closing
157
  ```
158
 
159
  ## Benchmarks