Chuẩn âm tiết Việt
25 âm đầu · 2 âm đệm · 15 âm chính · 11 âm cuối · 6 thanh → 264 vần. Parser vét cạn 49.104 tổ hợp, 0 lỗi; 39K từ thật parse 6.617/6.633.
Ngọc Huyền small 6,1M tham số chạy ONNX ngay trên CPU: 24 kHz, tự ngắt nghỉ, đọc đúng số, ngày giờ, viết tắt và từ điển riêng. Nghe thử trong trình duyệt rồi tải app cho máy của bạn.
Không lưu văn bản hay audio · 6 lượt/phút mỗi IP · demo nghiên cứu, phi thương mại.
Không phải model đa ngữ gắn thêm tiếng Việt: frontend được thiết kế cho âm tiết Việt, model non-autoregressive chạy tất định và xuất ONNX để dùng lại trên desktop, mobile, extension hay server.
25 âm đầu · 2 âm đệm · 15 âm chính · 11 âm cuối · 6 thanh → 264 vần. Parser vét cạn 49.104 tổ hợp, 0 lỗi; 39K từ thật parse 6.617/6.633.
Acoustic 6,1M + vocoder 13,5M. ONNX FP32, RTF ~0,03 trên VPS CPU; không cần GPU, không cần PyTorch khi dùng ONNX.
Desktop, extension, Android và iOS đóng gói model + ONNX Runtime. Đọc không cần mạng và không gửi văn bản ra ngoài.
Từ điển hơn 200 mục, quy tắc STEM (hoá học, toán, lý, LaTeX), đánh vần OOV và bảng đọc riêng của bạn. Hỗ trợ cụm/domain như khongdich.com.
Cùng một câu cho cùng một kết quả. REST /api/tts, stream NDJSON, CLI server, Python engine và ONNX cho mọi stack.
Windows, macOS, Linux, Android, iOS Simulator, Chrome/Edge, CLI/server và web tĩnh. Cùng model, cùng cách đọc, cùng bộ test.
Mỗi âm tiết thành 7 ID (âm đầu, đệm, chính, cuối, thanh điệu, ranh giới, dấu câu). Model dự đoán mel + thời lượng + F0 trong một lượt, vocoder dựng sóng. Không tự hồi quy, không lấy mẫu ngẫu nhiên.
ruff sạch, parser audit 0 lỗi.# văn bản tiếng Việt
"Sáng nay trời đẹp"
↓ frontend
7 ID / âm tiết · 4 âm tiết
↓ acoustic 6,1M
mel + thời lượng + f0/vuv/energy
↓ vocoder 13,5M
WAV · 24 kHz · mono · PCM16
Bản portable v0.3.5, model FP32 nằm sẵn trong gói. Không cần Python, Node hay GPU cho các app. Mỗi tab có file tải, yêu cầu hệ thống, các bước cài và xử lý sự cố.
Bản desktop đầy đủ: giao diện, server nội bộ, model và ONNX Runtime đi kèm.
vifasttts-desktop.exe.http://127.0.0.1:8000.SmartScreen/Defender cảnh báo: bản build chưa ký số nên có thể bị cảnh báo; chọn More info → Run anyway. Chỉ tải từ GitHub Release chính thức.
Lỗi thiếu DLL: cài Microsoft Visual C++ Redistributable 2015–2022 x64 rồi mở lại.
Không mở được file: kiểm tra đã giải nén toàn bộ ZIP, không chạy từ file nén; thử chạy bằng quyền user thường trước.
Không kết nối được từ điện thoại: bật Cho phép LAN trên desktop, dùng IP LAN (ví dụ http://192.168.1.100:8000) và mở firewall cho port 8000.
App native cho M1/M2/M3/M4; có sẵn CLI/TUI/server trong cùng bundle.
ViFastTts.app vào thư mục Applications.xattr -dr com.apple.quarantine /Applications/ViFastTts.app
open /Applications/ViFastTts.app/Applications/ViFastTts.app/Contents/MacOS/vifasttts server
/Applications/ViFastTts.app/Contents/MacOS/vifasttts tui“App is damaged” hoặc không mở được: chạy lệnh xattr -dr com.apple.quarantine ... ở trên, hoặc System Settings → Privacy & Security → Open Anyway.
Máy Intel: bản arm64 không chạy; dùng web demo hoặc build từ source theo docs/INSTALL.md.
Không tìm thấy CLI: CLI nằm trong ViFastTts.app/Contents/MacOS/vifasttts; gói CLI riêng cũng có run.sh.
Extension không kết nối: bật server trong app và kiểm tra http://127.0.0.1:8000/healthz.
Bản desktop + web server đóng gói sẵn; chạy được trên X11 và Wayland.
tar -xzf vifasttts-desktop-linux-x64.tar.gz
cd vifasttts-desktop-linux-x64sudo apt-get install -y libasound2 libxkbcommon0 libx11-6 libgl1./run.sh
# hoặc
./vifastttshttp://127.0.0.1:8000:./run.sh --host 127.0.0.1 --port 8000./vifasttts-desktop --smokeLỗi libasound.so.2: cài libasound2 (Debian/Ubuntu) hoặc alsa-lib (Fedora).
Không mở được cửa sổ: kiểm tra DISPLAY/WAYLAND_DISPLAY; thử ./vifasttts-desktop --smoke để tách lỗi GUI.
File không chạy: chmod +x run.sh vifasttts vifasttts-desktop.
Port 8000 bận: đổi --port 8010 và cập nhật URL trong extension/điện thoại.
Client local-first: model FP32 đóng trong APK, đọc offline; có thể chuyển sang server LAN.
http://IP-LAN:8000 (không dùng 127.0.0.1 trên điện thoại), token nếu có.“App not installed”: gỡ bản cũ trước, kiểm tra đủ dung lượng; APK hỗ trợ arm64/x86_64.
Không kết nối server: dùng IP LAN của máy tính, không dùng 127.0.0.1; bật Cho phép LAN trên desktop và mở firewall port 8000.
Tải model lỗi: để trống Server URL để đi trực tiếp HuggingFace, hoặc kiểm tra server có /api/models/*.
Không có tiếng: kiểm tra âm lượng media và chọn đúng output; emulator có thể lỗi HAL audio, nên thử trên máy thật.
Bản chạy trên iOS Simulator (chưa ký Apple Developer), có local FFI và remote HTTP.
ViFastTtsMobile.app vào cửa sổ Simulator./api/tts với Bearer token nếu có.Không thấy Simulator: cài runtime trong Xcode → Settings → Platforms; kiểm tra dung lượng ổ đĩa.
Không cài lên iPhone: bản phát hành chỉ dành cho Simulator; máy thật cần signing và build riêng.
Remote không kết nối: dùng IP LAN của máy chạy server; kiểm tra ATS exception (HTTP dev) và firewall.
Model không tải: để trống Server URL để đi trực tiếp HuggingFace, hoặc kiểm tra kết nối mạng của Simulator.
Đọc đoạn bôi đen hoặc cả trang; model bundled chạy local trong trình duyệt.
manifest.json (không chọn nhầm thư mục cha).chrome://extensions · Edge: edge://extensions.“Manifest file is missing”: chọn đúng thư mục chứa manifest.json, không chọn thư mục cha hoặc file ZIP.
Không thấy nút Load unpacked: bật Developer mode trước.
Đọc trang không hoạt động: reload tab sau khi cài; một số trang chặn content script (chrome://, PDF viewer, store).
Remote server lỗi: kiểm tra URL/token trong Cài đặt; local mode không cần server.
Một binary Rust cho terminal, server API và web; phù hợp máy chủ, NAS hoặc tích hợp nội bộ.
run.sh; Windows có vifasttts.exe../run.sh --host 127.0.0.1 --port 8000
# hoặc
vifasttts server --port 8000curl -s http://127.0.0.1:8000/healthz
curl -s http://127.0.0.1:8000/api/configvifasttts server --api-only --port 8000vifasttts server --token 'đổi-token' --host 0.0.0.0 --port 8000Đặt sau reverse proxy/TLS nếu mở ra Internet; giới hạn firewall theo nhu cầu.Port bận: đổi --port 8010; kiểm tra tiến trình cũ bằng lsof -i :8000.
Không thấy web: web là asset tĩnh trong package; nếu chỉ copy binary, server vẫn chạy API nhưng không có UI. Dùng --web-dir trỏ tới web-dist.
Extension/điện thoại không gọi được: server phải bind 0.0.0.0, mở firewall, dùng IP LAN; thêm --cors nếu web ở origin khác.
Token: client gửi Authorization: Bearer ...; kiểm tra token khớp khi khởi động server.
Chạy hoàn toàn trong trình duyệt, không server; phù hợp GitHub Pages, Cloudflare Pages hoặc LAN.
tar -xzf web-dist.tar.gz
cd web-distfile:// vì WASM/model cần HTTP:python3 -m http.server 8080http://127.0.0.1:8080; mặc định chạy local WASM..vfa/.vfts trong web; file được kiểm SHA256 trước khi tạo session./healthz và chuyển sang remote same-origin.Mở file HTML trực tiếp bị lỗi: WASM/model không tải được qua file://; luôn phục vụ bằng HTTP server.
Model không nạp: kiểm tra Network tab, đảm bảo thư mục models/ nằm cạnh web-dist và server trả đúng MIME.
Trang trắng: xoá cache/service worker cũ, thử cửa sổ ẩn danh; kiểm tra console lỗi WASM.
Chậm: giảm max ký tự/chunk trong UI; đóng tab nặng khác; ưu tiên bản desktop nếu máy yếu.
Tải SHA256SUMS.txt cùng release, đặt cạnh file vừa tải. macOS/Linux:
grep 'vifasttts-desktop-windows-x64.zip' SHA256SUMS.txt | shasum -a 256 -c -
Windows PowerShell:
Get-FileHash .\vifasttts-desktop-windows-x64.zip -Algorithm SHA256
So hash với dòng tương ứng trong SHA256SUMS.txt. Không khớp → tải lại; không chạy file lạ.
Model N0 Ngọc Huyền Q-init: acoustic small 6,1M, 24 kHz, ONNX FP32. Dùng bundle để đổi giọng hoặc tải riêng cho app/CLI; desktop/extension/mobile đã có model sẵn.
.vfa — acoustic-only28 MBChỉ chứa acoustic; cần vocoder ONNX đi kèm. Nhẹ, phù hợp khi đã có vocoder trong app/server.
.vfts — full bundle76 MBTự chứa vocoder + frontend; nạp một file là chạy. Phù hợp chia sẻ, mobile và web.
arch=v2_slot5 · vocab_version=vi-q25-v1 · 24 kHz · một giọng nữ Bắc. License model/dataset CC BY-NC 4.0, code MIT.
Demo VPS đã mở API công khai để thử. Muốn chạy riêng, dùng vifasttts server hoặc quickstart Python — cùng engine ONNX, không cần torch.
/api/ttsTrả WAV 24 kHz. Nhận text, speed, alpha, dialect, overrides.
/api/tts/streamNDJSON: units → audio PCM16 → done; dùng cho phát ngay.
/api/configGiới hạn, defaults và capabilities để UI tự cấu hình.
/api/overridesTừ điển có sẵn, quy tắc đã duyệt và ví dụ STEM.
/api/feedbackGóp ý/báo lỗi; nội dung chỉ admin xem.
/healthzTrạng thái model, arch, vocab hash, alpha.
Demo công khai: tối đa 3000 ký tự, 6 lượt/phút/IP, không lưu văn bản hay audio. Hợp đồng đầy đủ: docs/API_CONTRACT.md ↗
# tạo file WAV từ câu tiếng Việt
curl -s https://vifasttts.hoctuthien.com/api/tts \
-H 'content-type: application/json' \
-d '{"text":"Xin chào, đây là ViFastTts.","speed":1.0}' \
-o out.wav
import requests
r = requests.post(
"http://127.0.0.1:8000/api/tts",
json={"text": "Xin chào", "speed": 1.0},
timeout=120,
)
r.raise_for_status()
open("out.wav", "wb").write(r.content)
Cần Python ≥ 3.11; script tự tải ONNX (kiểm sha256), tạo venv và chạy web ở cổng 8090.
git clone https://github.com/dvchd/ViFastTts.git
cd ViFastTts
./scripts/run_ngochuyen_demo.sh
Windows PowerShell:
powershell -ExecutionPolicy Bypass -File .\scripts\run_ngochuyen_demo.ps1
Cài package và gọi trực tiếp bằng ONNX Runtime + numpy.
cd ViFastTts
pip install -e ".[onnx]"
vifasttts synthesize-onnx \
--acoustic acoustic.onnx \
--vocoder vocoder.onnx \
--text "Xin chào" \
--output out.wav
Tài liệu: PYTHON_ENGINE.md ↗
Cùng chạy local-first, cùng mục tiêu tiếng Việt nhẹ và nhanh: một bên đọc thành tiếng, một bên gõ thành chữ.
Giọng đọc tiếng Việt non-autoregressive, ONNX CPU, 24 kHz.
Bộ gõ Telex, Simple Telex, VNI và VIQR trên lõi Rust nhỏ, chạy local.
Báo lỗi, đề xuất tính năng hoặc góp ý nội dung. Nội dung và liên hệ chỉ admin xem, không hiển thị công khai.
Không thấy câu trả lời? Gửi góp ý ở phần Góp ý — nội dung chỉ admin xem.
Code repo là MIT, nhưng model mẫu và dataset ngochuyen_voice là CC BY-NC 4.0 — chỉ dùng nghiên cứu/phi thương mại. Không dùng để giả giọng, lừa đảo hoặc bán lại khi chưa có quyền riêng.
Không, với app desktop, extension và mobile: model + ONNX Runtime đã đóng gói. Python chỉ cần khi chạy quickstart/dev hoặc train; ONNX chạy CPU là đủ cho demo và phần lớn nhu cầu.
Mỗi checkpoint là một người nói, một phương ngữ — không cần speaker_id hay audio mẫu. Muốn giọng khác, train checkpoint mới theo docs/TRAINING_N0.md rồi export ONNX.
Bản phát hành hiện chỉ có arm64 (Apple Silicon). Máy Intel có thể dùng web demo, Python/ONNX hoặc build từ source; xem docs/INSTALL.md.
Chưa. Android là APK debug (cài ngoài store); iOS chỉ chạy Simulator, chưa ký Apple Developer. Desktop cũng chưa ký số nên có cảnh báo SmartScreen/Gatekeeper.
Không lưu văn bản hay audio. Server chỉ ghi thống kê ẩn danh (số ký tự, thời lượng, thời gian xử lý, hash visitor), không lưu IP/text; góp ý chỉ admin xem khi đã đặt mật khẩu.
RTF = thời gian xử lý chia cho thời lượng audio; nhỏ hơn 1 là nhanh hơn thời gian thực. Con số ~0,03 đo trên VPS CPU với ONNX; máy yếu hơn sẽ chậm hơn, máy mạnh hơn có thể nhanh hơn.
Dùng form Góp ý ngay trên trang này. Nếu là lỗi cài đặt, kèm hệ điều hành, file đã tải và thông báo lỗi để dễ tái hiện.
Số liệu ẩn danh, tự làm mới khi tải trang. Lượt tải chỉ đếm lúc bấm nút trên landing, không phải số file đã tải xong.
Đang tải…
Đếm ở nút tải trên landing và trang demo. Người dùng có thể bấm rồi huỷ, nên đây là tín hiệu nhu cầu, không phải số lượt cài hoàn tất.