Releases: buudvh/LocalTTS
Release list
v1.0.4
LocalTTS - Release Notes v1.0.4
🚀 Tính năng & Cải tiến mới
- Tối ưu hóa & Phân rã Giao diện (Modular UI): Giao diện chính được chia nhỏ thành các màn hình chức năng riêng biệt giúp ứng dụng chạy mượt mà và trực quan hơn:
- Tab TTS: Chuyên biệt cho việc nhập văn bản và tổng hợp giọng nói.
- Tab Quản lý Mô hình (Model Manager): Giao diện tải và kiểm tra trạng thái các mô hình giọng nói trực quan hơn.
- Tab Hệ thống (System): Điều khiển máy chủ và tích hợp các bảng chỉnh sửa từ điển (Thêm/Sửa/Tìm kiếm từ khóa).
- Nâng cấp bộ tiền xử lý văn bản: Phân chia bộ xử lý văn bản thành các dịch vụ dịch thuật chuyên biệt (phiên âm tiếng Anh, tiếng Nhật, quy tắc đọc số tiếng Việt và chuẩn hóa chính tả tiếng Việt), giúp tăng tốc độ xử lý và độ chính xác khi phát âm.
🐛 Sửa lỗi & Ổn định hệ thống
- Khắc phục lỗi Timeout 503/504: Sửa triệt để lỗi mất kết nối máy chủ HTTP khi ứng dụng chạy nền.
- Ngăn ngừa rò rỉ Socket: Thiết lập giới hạn thời gian kết nối tối đa 15 giây (Connection Timeout) cho mỗi yêu cầu, tự động đóng các socket mồ côi để tránh gây nóng máy và hao pin.
- Giải phóng cổng 17771 lập tức: Sửa lỗi xung đột cổng khi bật/tắt máy chủ bằng cách tự động ngắt toàn bộ kết nối đang hoạt động ngay khi dừng server.
- Tự động khởi động lại máy chủ: Bổ sung cơ chế tự động thử lại tối đa 3 lần khi máy chủ gặp sự cố mất kết nối hoặc thay đổi kết nối mạng (Wifi/4G).
- Duy trì hoạt động nền bền bỉ (Keep-Alive): Tự động phát tiếp âm thanh tĩnh (silent audio) ngay khi kết thúc các gián đoạn (như cuộc gọi đến hoặc thay đổi thiết bị đầu ra âm thanh), đảm bảo máy chủ chạy ngầm không bị hệ điều hành iOS tắt.
v1.0.2
LocalTTS v1.0.2 – Release Notes
🚀 Nổi bật
- Giảm dung lượng ứng dụng bằng cách loại bỏ 2 file tĩnh
acronyms.plistvànon-vietnamese-words-homographs-backup.plistkhỏi App Bundle. - Chuyển sang tải động từ điển viết tắt (
acronyms.plist) từ repo HuggingFaceraikiri1498/nghittskhi cần.
🧭 Giao diện mới
- Thiết kế lại TabView thành 3 tab chính:
TTS (Đọc văn bản): quản lý model NghiTTS, nhập văn bản thử nghiệm, cấu hình thông số xử lý đoạn.Từ điển (Preprocess): quản lý tiền xử lý văn bản và truy cập trình chỉnh sửa từ điển ngoại lệ.Hệ thống (Server): quản lý server HTTP, trạng thái engine, log và request gần nhất.
📚 Quản lý từ điển ngoại lệ nâng cao
- Đồng bộ trực tiếp từ điển EN/JP từ HuggingFace / server chính thức của NghiTTS.
- Hiển thị cảnh báo an toàn khi tải lại từ điển gốc để tránh ghi đè dữ liệu tùy chỉnh.
- Hỗ trợ nhập file
.plisttừ Files app để thay thế từ điển đang dùng. - Thông báo rõ ràng khi import/tải thành công và hiển thị lỗi khi file không hợp lệ.
🛠️ Sửa lỗi & ổn định
- Tự động trả về từ điển rỗng khi file bị thiếu, tránh crash ứng dụng.
- Giải phóng
security-scoped resourcesngay sau khi đọc file Plist từ Files app. - Cập nhật
.pbxprojđể đảm bảo CI/CD build IPA mượt mà, tránh lỗi thiếu file.
v1.0.1
LocalTTS - Release Notes (Phiên bản v1.0.1)
Phiên bản v1.1.0 tập trung vào việc tối ưu hóa dung lượng ứng dụng (App Size), cải tiến giao diện người dùng trực quan hơn, và mở rộng khả năng quản lý từ điển ngoại lệ (chỉnh sửa, nhập từ tệp ngoài hoặc đồng bộ trực tiếp từ máy chủ).
🚀 Tính năng nổi bật & Cải tiến
1. Tối ưu hóa dung lượng ứng dụng (App Size Reduction)
- Gỡ bỏ đóng gói tĩnh: Loại bỏ hai tệp
acronyms.plistvànon-vietnamese-words-homographs-backup.plistkhỏi App Bundle. - Tải động thông minh: Ứng dụng giờ đây sẽ tải động từ điển viết tắt (
acronyms.plist) trực tiếp từ kho lưu trữ của dự án trên HuggingFace (raikiri1498/nghitts) khi cần, giúp giảm kích thước gói cài đặt IPA.
2. Tái cấu trúc giao diện TabView mới
Giao diện chính được thiết kế lại gọn gàng hơn bằng cách phân chia các tính năng thành 3 tab chuyên biệt:
- TTS (Đọc văn bản): Quản lý và tải mô hình giọng đọc NghiTTS, nhập văn bản thử nghiệm và tùy chỉnh nâng cao các thông số khoảng ngắt (xuống dòng, dấu câu, dấu ngoặc).
- Từ điển (Preprocess): Quản lý các công tắc tiền xử lý văn bản và liên kết đến trình chỉnh sửa từ điển ngoại lệ.
- Hệ thống (Server): Quản lý máy chủ HTTP cục bộ, theo dõi các yêu cầu dịch vụ (requests) cuối cùng, kiểm tra trạng thái engine và xem nhật ký hoạt động (Logs).
3. Nâng cấp bộ quản lý từ điển ngoại lệ nâng cao
Giao diện Sửa từ điển ngoại lệ (EN/JP) được bổ sung các công cụ mạnh mẽ:
- Tải từ điển từ HuggingFace: Đồng bộ trực tiếp phiên bản từ điển chính thức mới nhất từ máy chủ của tác giả NghiTTS.
- Tải lại & Xác nhận cảnh báo: Khi tải lại từ điển gốc từ máy chủ, một thông điệp cảnh báo an toàn sẽ hiển thị để ngăn chặn việc người dùng vô tình ghi đè mất các từ vựng tùy chỉnh tự thêm trước đó.
- Nhập từ điển ngoài (Import): Cho phép lựa chọn tệp từ điển
.plist(dạng Key-Value) bất kỳ từ bộ nhớ thiết bị/Files app để thay thế từ điển đang chạy trong ứng dụng. - Bắt lỗi & Thông báo trực quan: Tích hợp Alert thông báo thành công sau khi tải/nhập, hoặc hiển thị chi tiết thông báo lỗi nếu tệp tin tải về bị hỏng/không hợp lệ.
🛠️ Khắc phục lỗi & Ổn định hệ thống
- Tránh lỗi sập ứng dụng khi thiếu tệp tin: Cấu hình cơ chế nạp từ điển linh hoạt, tự động trả về từ điển rỗng khi tệp không tồn tại và xử lý lỗi đồng bộ ở luồng chạy ngầm mà không gây crash ứng dụng.
- Quản lý bộ nhớ tệp an toàn: Đảm bảo giải phóng quyền truy cập tài nguyên bảo mật hệ thống (
security-scoped resources) ngay sau khi đọc xong dữ liệu Plist từ Files app. - Đồng bộ Project: Cập nhật tệp
.pbxprojsạch sẽ để quy trình tự động build IPA trên CI/CD diễn ra trơn tru, không gặp lỗi thiếu tệp.
v1.0.0
Release Notes - LocalTTS Version 1.0.0 🚀
Chào mừng bạn đến với phiên bản chính thức đầu tiên LocalTTS v1.0.0!
LocalTTS là ứng dụng iOS được phát triển bằng SwiftUI, cho phép khởi chạy một HTTP API Server nội bộ (localhost) trên iPhone để thực hiện tổng hợp tiếng nói (Text-to-Speech) tiếng Việt hoàn toàn offline (cục bộ) chất lượng cao. Ứng dụng tích hợp động cơ Piper và dữ liệu ngôn ngữ eSpeak-ng trực tiếp trên thiết bị di động.
Dưới đây là chi tiết các tính năng, cải tiến và sửa lỗi trong bản phát hành này.
🌟 Tính năng nổi bật
1. Động cơ Tổng hợp tiếng nói Cục bộ (Offline TTS Engine)
- Tích hợp Piper & eSpeak-ng: Chạy trực tiếp mô hình Piper ONNX Runtime Mobile kết hợp với trình phân tích ngữ âm eSpeak-ng hoàn toàn offline trên iOS.
- Tự động tải & Cache Mô hình: Tự động tải trước (prefetch) hoặc tự động tải về các tệp tin mô hình giọng nói (
.onnxvà cấu hình.json) từ máy chủ lưu trữ (Hugging Face / GitHub Releases) khi nhận được yêu cầu TTS và cache cục bộ trong sandbox của app. - Nhập mô hình từ bên ngoài (External Model Import): Hỗ trợ người dùng nhập thêm các tệp mô hình giọng nói bên ngoài trực tiếp từ ứng dụng File trên iPhone để mở rộng danh sách giọng đọc.
2. Bộ tiền xử lý văn bản Nâng cao (Advanced Text Preprocessor)
- Xử lý Đa ngữ & Chuyển tự:
- Tích hợp bộ chuyển tự tiếng Anh, từ viết tắt và tên riêng tiếng nước ngoài sang phát âm tiếng Việt.
- Hỗ trợ chuyển đổi chữ tiếng Nhật (Hiragana, Katakana, Romaji) phục vụ cho các văn bản hỗn hợp.
- Cải tiến Quy tắc Ngữ điệu Tiếng Việt:
- Tự động chuẩn hóa số, ngày tháng, thời gian và ký tự đặc biệt.
- Phát âm số 4 là "bốn" thay vì các cách phát âm không phù hợp khác, loại bỏ các lỗi dính chữ hoặc lỗi phân tích số thứ tự (ordinals) lỗi thời.
- Lọc Từ đồng âm (Vietnamese Homographs): Tự động loại bỏ các từ đồng âm tiếng Việt khỏi từ điển tiếng Anh để tránh phát âm sai lệch.
3. Trình biên tập Từ điển ngay trên Ứng dụng (Dictionary Management UI)
- Quản lý từ điển trực tiếp: Cung cấp giao diện trực quan cho phép người dùng thêm, sửa, xóa các từ trong danh sách viết tắt (
acronyms.plist) và danh sách từ ngoại lệ (non-vietnamese-words.plist). - Định dạng Plist nhị phân: Chuyển đổi toàn bộ từ điển sang dạng Binary Plist giúp giảm kích thước bộ nhớ và tăng tốc độ đọc ghi.
- Đồng bộ thông minh: Tự động chép từ điển mặc định từ Bundle vào thư mục Application Support khi khởi chạy lần đầu tiên.
4. HTTP API Server Nội bộ (Local Server)
- Khởi chạy máy chủ HTTP nội bộ tại địa chỉ
127.0.0.1:17771hỗ trợ chạy ngầm (Background task protection). - Các Endpoint API chính:
GET /health— Kiểm tra trạng thái hoạt động của máy chủ.GET /v1/voices— Trả về danh sách các giọng nói có sẵn (bao gồm cả các giọng nói đã import từ ngoài).POST /v1/models/prefetch— Tải trước các mô hình giọng nói được yêu cầu.POST /v1/tts— Tổng hợp văn bản thành tệp tin âm thanh dạng sóng./logs— API kết xuất log hệ thống để phục vụ việc debug.
⚡ Cải tiến & Tối ưu hóa hiệu năng
-
Tránh Crash Watchdog trên iOS: Tối ưu hóa bộ tiền xử lý
TextPreprocessorbằng cơ chế Single-pass Tokenization (quét mã một lượt) kết hợp tra cứu bảng băm với độ phức tạp thời gian$O(1)$ . Loại bỏ hoàn toàn hiện tượng nghẽn luồng chính gây crash watchdog trên thiết bị thật. - Xử lý âm thanh chất lượng cao: Bổ sung bộ chia câu (sentence chunking), cắt bỏ khoảng lặng thừa (silence trimming), và chuẩn hóa âm lượng đỉnh (peak normalization).
- Quản lý bộ nhớ an toàn: Loại bỏ hoàn toàn các trường hợp force unwrap không an toàn trên bộ đệm bộ nhớ của ONNX Runtime, sử dụng con trỏ chuỗi kiểu C kết thúc bằng ký tự null trong EspeakPhonemizer để đảm bảo tính toàn vẹn của dữ liệu.
- Vô hiệu hóa Cache khi Cập nhật App: Kiểm tra phiên bản ứng dụng trong UserDefaults để tự động xóa/cập nhật bộ nhớ đệm từ điển cũ khi người dùng nâng cấp app.
🛠️ Trải nghiệm Người dùng & Giao diện (UI/UX)
- Giao diện Dashboard trực quan: Theo dõi trạng thái hoạt động của máy chủ, danh sách mô hình và tiến trình tải mô hình với thanh tiến trình trực quan.
- Bảng điều khiển cấu hình âm thanh:
- Cung cấp thanh trượt độ chính xác cao (precision sliders) để tùy chỉnh tốc độ nói (speed).
- Cho phép chỉnh khoảng dừng (pause duration) tùy ý cho từng loại dấu câu cụ thể.
- Hỗ trợ thử nghiệm nhanh: Tích hợp phần Test TTS ngay tại màn hình chính giúp người dùng kiểm tra nhanh giọng đọc trên iPhone mà không cần gọi API từ thiết bị ngoài.
- Nhật ký hệ thống tiện lợi: Bổ sung sheet hiển thị log chi tiết (
AppLogger) trực tiếp trên UI và hỗ trợ nút xóa văn bản nhanh, ẩn bàn phím khi vuốt màn hình.