Giới thiệu dự án
Trong bối cảnh nền kinh tế đối mặt với nhiều biến động, lạm phát và áp lực tài chính gia tăng, việc quản lý thu chi cá nhân một cách khoa học trở thành nhu cầu thiết yếu đối với mọi đối tượng trong xã hội. Theo các khảo sát hành vi tài chính, hơn 65% người trẻ và sinh viên gặp khó khăn trong việc cân đối ngân sách hàng tháng do thiếu công cụ theo dõi tiện lợi, dẫn đến tình trạng chi tiêu mất kiểm soát vào đầu tháng và thâm hụt tài chính vào cuối tháng.
Phương pháp quản lý chi tiêu truyền thống bằng sổ tay hoặc các ứng dụng bảng tính (như Microsoft Excel, Google Sheets) bộc lộ nhiều rào cản lớn: thao tác nhập liệu thủ công tốn thời gian, khó thống kê trực quan trên thiết bị di động, không có cơ chế cảnh báo nợ/hóa đơn tự động và đặc biệt là người dùng rất dễ quên ghi chép sau mỗi lần phát sinh giao dịch.
Đề tài "Tìm hiểu công nghệ DeepSpeech và xây dựng ứng dụng quản lý chi tiêu trên thiết bị di động" (sản phẩm mang tên ứng dụng Heo Đất) của tác giả Hoàng Đình Phú (Khoa Hệ thống Thông tin, Trường Đại học Công nghệ Thông tin – ĐHQG-HCM) được nghiên cứu và phát triển nhằm giải quyết triệt để các hạn chế trên. Ứng dụng kết hợp sức mạnh của mô hình nhận dạng giọng nói tự động (Automatic Speech Recognition - ASR) mã nguồn mở DeepSpeech và nền tảng phát triển ứng dụng đa nền tảng Flutter, mang đến giải pháp nhập liệu chi tiêu rảnh tay nhanh chóng, tiện lợi và chính xác.
+-------------------------------------------------------------------------+
| ỨNG DỤNG HEO ĐẤT |
| |
| +-----------------------+ Platform Channel +---------------------+ |
| | Flutter UI | <=================> | DeepSpeech ASR (VN) | |
| | (Material 3 / Dart) | | (Kotlin / Native) | |
| +-----------------------+ +---------------------+ |
| | | |
| v v |
| +-----------------------+ +---------------------+ |
| | SQLite Local Database | | Firebase Auth | |
| | (Offline-First Sync) | | & Cloud Services | |
| +-----------------------+ +---------------------+ |
+-------------------------------------------------------------------------+
Mục tiêu dự án
- Nghiên cứu và làm chủ công nghệ DeepSpeech: Khảo sát kiến trúc mạng nơ-ron sâu (Deep Neural Network - DNN) kết hợp mô hình ngôn ngữ N-gram để xử lý nhận dạng âm thanh tiếng Việt thành văn bản (Speech-to-Text - STT).
- Xây dựng giải pháp nhập liệu thông minh bằng giọng nói: Tích hợp mô hình DeepSpeech vào thiết bị di động qua kênh nền tảng (Platform Channel), cho phép người dùng ghi chép chi tiêu bằng giọng nói theo thời gian thực (real-time inference).
- Phát triển thuật toán chuyển đổi Âm - Dương lịch Việt Nam: Tích hợp thuật toán thiên văn học dựa trên số ngày Julius (Julian Day Number - JDN) để quản lý các sự kiện, ngày giỗ chạp, lễ hội văn hóa và chu kỳ hóa đơn truyền thống của người Việt.
- Hoàn thiện ứng dụng di động chuẩn Production: Thiết kế giao diện theo phong cách Material Design 3, quản trị cơ sở dữ liệu cục bộ bằng SQLite (sqflite), đồng bộ xác thực đám mây qua Firebase Authentication và phát hành thành công lên kho ứng dụng Google Play Store.
Phạm vi và giới hạn hệ thống
- Phạm vi đối tượng: Sinh viên, người nội trợ, nhân viên văn phòng, thủ quỹ và cá nhân có nhu cầu tối ưu hóa ngân sách.
- Nền tảng mục tiêu: Hệ điều hành Android (tương thích từ Android 8.0 Oreo trở lên), tối ưu hóa kiến trúc xử lý ASR trên phần cứng di động.
- Giới hạn kỹ thuật: Giai đoạn thử nghiệm tập trung nhận dạng giọng nói tiếng Việt chuẩn cho các tập từ vựng tài chính và chi tiêu thường nhật; mô hình ASR cục bộ yêu cầu thiết bị có cấu hình bộ nhớ RAM tối thiểu từ 2GB để đảm bảo độ trễ phản hồi dưới 1 giây.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Khảo sát trực tiếp các ứng dụng quản lý tài chính hàng đầu trên Google Play tại thị trường Việt Nam cho thấy bức tranh cạnh tranh rõ nét giữa các giải pháp:
| Ứng dụng khảo sát |
Nhà phát triển |
Đánh giá & Lượt tải |
Ưu điểm nổi bật |
Hạn chế cốt lõi |
| Sổ thu chi: Quản lý chi tiêu |
Komorebi Inc. |
4.8★ / 500k+ downloads |
Giao diện mở vào màn hình thêm nhanh; hỗ trợ nhiều báo cáo theo thời gian; tích hợp lịch chi tiêu. |
Chứa nhiều quảng cáo gây gián đoạn; giao diện góc cạnh chưa tối ưu Dark Mode; thiếu nhập liệu thông minh. |
| Quản lý tiền: theo dõi chi phí |
Innim Mobile Exp |
4.8★ / 5M+ downloads |
Tích hợp máy tính mini; danh mục chi tiêu phong phú; hỗ trợ chế độ nền tối (Dark Theme). |
Quảng cáo dày đặc; độ tương phản giao diện chưa cao; biểu đồ phân tích đơn điệu; không có ASR. |
| Quản lý chi tiêu – sổ thu chi |
HG Group Inc. |
4.8★ / 1M+ downloads |
Giao diện đơn giản, dễ tiếp cận; phân loại khoản mục chi tiết; hỗ trợ tính toán cơ bản. |
Không có hệ thống thông báo nhắc nhở tự động; chưa có quản lý lịch âm; nhập liệu hoàn toàn thủ công. |
Ma trận ưu tiên yêu cầu người dùng (MoSCoW)
- Must Have (Bắt buộc có):
- Ghi chép thu/chi phân loại theo danh mục (Categories), gán nhãn (Tags), quản lý sổ ghi chép.
- Nhập liệu nhanh bằng giọng nói qua mô hình ASR DeepSpeech tiếng Việt.
- Quản lý các khoản vay, nợ (DebtLoans) kèm ngày đáo hạn (deadline) và trạng thái thanh toán.
- Chuyển đổi và hiển thị song song Âm lịch - Dương lịch Việt Nam.
- Should Have (Nên có):
- Quản lý hóa đơn định kỳ (Events/Bills) với các chu kỳ tự động (hàng ngày, hàng tuần, 30 ngày, hàng tháng, hàng năm).
- Lập lịch thông báo (Local Notifications) nhắc nợ và hóa đơn sắp đến hạn ngay cả khi khởi động lại thiết bị.
- Báo cáo thống kê trực quan tổng thu, tổng chi và số dư chênh lệch theo thời gian thực.
- Could Have (Có thể có):
- Đồng bộ dữ liệu người dùng đa thiết bị qua Firebase Cloud Storage.
- Tùy biến bộ biểu tượng chuẩn Cupertino / Material Symbols và bảng màu danh mục.
- Won't Have (Chưa thực hiện trong phiên bản hiện tại):
- Tự động liên kết API trực tiếp với tài khoản ngân hàng (Open Banking API).
- Nhận dạng hóa đơn tự động qua thị giác máy tính (OCR bill scanning).
Thiết kế hệ thống
Kiến trúc phần mềm của ứng dụng Heo Đất được xây dựng theo mô hình phân lớp hiện đại (Layered Architecture), tận dụng khả năng tương tác giữa mã nguồn Flutter (Dart) và mã nguồn Native Android (Kotlin) thông qua Platform Channel.
graph TD
subgraph UI_Layer [Tầng Giao Diện - Flutter Framework]
A[Presentation Layer: Widgets / Pages] --> B[State Management & Providers]
B --> C[Business Logic Services]
end
subgraph Channel_Layer [Tầng Kênh Nền Tảng - Platform Channels]
C -->|MethodChannel: 'deepspeech_channel'| D[Engine Interop C++/Java/Kotlin]
end
subgraph Native_Layer [Tầng Bản Địa & Mô Hình Máy Học - Android Native]
D --> E[Android Native Audio Record Service]
E --> F[DeepSpeech ASR Engine C++ / JNI]
F --> G[Acoustic Model .pb + N-gram Scorer]
end
subgraph Data_Layer [Tầng Dữ Liệu & Đồng Bộ - Storage Layer]
C --> H[SQLite Database / sqflite]
C --> I[Firebase Authentication API]
C --> J[Firebase Storage & Sync]
end
Technology Stack và phiên bản cụ thể
- Frontend Framework: Flutter
v3.2.0 (Dart SDK v3.0.x), hỗ trợ ngôn ngữ thiết kế Material 3 (Material You) và bộ widget Cupertino.
- Speech Recognition Engine: Mozilla DeepSpeech
v0.9.x (Core C++ Engine tích hợp qua Android JNI/Kotlin bindings).
- Backend & Cloud Services: Google Firebase (
Firebase Core, FirebaseAuth, Firebase Storage, Firebase Test Lab).
- Local Database: SQLite
v3.39+ thông qua Flutter plugin sqflite (Hỗ trợ lưu trữ quan hệ, truy vấn chỉ mục và khóa ngoại).
- Native Android SDK: Kotlin
v1.8.20, Android Gradle Plugin 7.4.x, Target SDK: Android 13 (API Level 33).
Thiết kế cơ sở dữ liệu (SQLite Schema)
Cơ sở dữ liệu cục bộ bao gồm 8 bảng chính được liên kết chặt chẽ qua các khóa ngoại (Foreign Keys), đồng thời tích hợp nhóm trường lịch sử (History Fields) phục vụ việc truy vết và đồng bộ dữ liệu:
-- Nhóm trường lịch sử đồng bộ (History Fields)
-- created_by TEXT, created_on INTEGER, modified_by TEXT, modified_on INTEGER
CREATE TABLE UserDetails (
id TEXT PRIMARY KEY, -- Firebase Auth UID
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
bio TEXT,
day_of_birth INTEGER, -- Định dạng YYYYMMDD
sex INTEGER CHECK (sex IN (0, 1, 2)), -- 0: Nam, 1: Nữ, 2: Khác
job TEXT,
avatar TEXT, -- Chuỗi Base64 hình đại diện
email TEXT UNIQUE NOT NULL,
created_by TEXT, created_on INTEGER, modified_by TEXT, modified_on INTEGER
);
CREATE TABLE Categories (
id TEXT PRIMARY KEY,
owner TEXT NOT NULL,
content TEXT NOT NULL,
icon_code_point INTEGER NOT NULL,
icon_color INTEGER NOT NULL,
icon_background_color INTEGER NOT NULL,
created_by TEXT, created_on INTEGER, modified_by TEXT, modified_on INTEGER,
FOREIGN KEY (owner) REFERENCES UserDetails(id) ON DELETE CASCADE
);
CREATE TABLE Expenses (
id TEXT PRIMARY KEY,
owner TEXT NOT NULL,
category_id TEXT NOT NULL,
content TEXT NOT NULL,
tags TEXT, -- Chuỗi nhãn phân cách bởi dấu phẩy
cost REAL NOT NULL, -- <= 0: Chi tiêu, > 0: Thu nhập
day INTEGER NOT NULL, -- Định dạng YYYYMMDD
note TEXT,
created_by TEXT, created_on INTEGER, modified_by TEXT, modified_on INTEGER,
FOREIGN KEY (owner) REFERENCES UserDetails(id) ON DELETE CASCADE,
FOREIGN KEY (category_id) REFERENCES Categories(id)
);
CREATE TABLE DebtLoans (
id TEXT PRIMARY KEY,
owner TEXT NOT NULL,
partner TEXT NOT NULL,
cost REAL NOT NULL, -- <= 0: Nợ phải trả, > 0: Khoản cho vay
deadline INTEGER, -- Ngày đáo hạn (YYYYMMDD)
day_of_payment TEXT,
note TEXT,
created_by TEXT, created_on INTEGER, modified_by TEXT, modified_on INTEGER,
FOREIGN KEY (owner) REFERENCES UserDetails(id) ON DELETE CASCADE
);
CREATE TABLE Events (
id TEXT PRIMARY KEY,
owner TEXT NOT NULL,
category_id TEXT,
content TEXT NOT NULL,
kind INTEGER NOT NULL, -- 0: Hàng năm, 1: Hàng tháng, 2: 30 ngày, 3: Hàng tuần, 4: Hàng ngày, 5: 1 lần
next_cycle INTEGER NOT NULL, -- Ngày chu kỳ kế tiếp (Dương lịch)
is_lunar INTEGER DEFAULT 0, -- 0: Dương lịch, 1: Âm lịch
auto INTEGER DEFAULT 0, -- Tự động tạo bản ghi khi đến hạn
note TEXT,
created_by TEXT, created_on INTEGER, modified_by TEXT, modified_on INTEGER,
FOREIGN KEY (owner) REFERENCES UserDetails(id) ON DELETE CASCADE
);
CREATE TABLE Notifications (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_id TEXT,
debt_loan_id TEXT,
bill_id TEXT,
date_time INTEGER NOT NULL, -- Timestamp phát thông báo
FOREIGN KEY (event_id) REFERENCES Events(id) ON DELETE CASCADE,
FOREIGN KEY (debt_loan_id) REFERENCES DebtLoans(id) ON DELETE CASCADE
);
Methodology
Dự án áp dụng mô hình phát triển phần mềm linh hoạt (Agile/Scrum) kết hợp nghiên cứu khoa học thực nghiệm, chia làm 4 giai đoạn chính trong 16 tuần:
+-----------------------------------------------------------------------------------+
| QUY TRÌNH DỰ ÁN (16 TUẦN) |
| |
| [Tuần 1-3] Khảo sát thị trường, bài toán ASR & lý thuyết Âm lịch |
| [Tuần 4-7] Thu thập âm thanh, gán nhãn, cấu hình & huấn luyện DeepSpeech |
| [Tuần 8-12] Phát triển Mobile App Flutter, viết Platform Channel, thiết kế DB |
| [Tuần 13-16]Kiểm thử Test Lab, tối ưu độ trễ, đóng gói & phát hành Google Play |
+-----------------------------------------------------------------------------------+
- Quản trị rủi ro (Risk Assessment):
- Rủi ro hiệu năng ASR trên di động: File mô hình quá nặng gây tràn bộ nhớ -> Giải pháp: Lượng tử hóa mô hình (Quantization) sang định dạng TFLite/mã hóa đồ thị tĩnh
.pb kích thước rút gọn, nạp mô hình vào bộ nhớ đệm (warm-up memory) khi mở luồng ghi âm.
- Rủi ro mất lịch thông báo khi khởi động lại máy: Hệ điều hành Android xóa toàn bộ
AlarmManager khi reboot -> Giải pháp: Đăng ký BroadcastReceiver bắt sự kiện BOOT_COMPLETED để đọc bảng Notifications từ SQLite và tái lập lịch tự động.
Implementation và kết quả
Development process
1. Thuật toán chuyển đổi Âm - Dương lịch Việt Nam qua Số ngày Julius (JDN)
Âm lịch Việt Nam là hệ thống Âm - Dương lịch (Lunisolar Calendar) tính toán dựa trên kinh tuyến $105^\circ$ Đông (UTC+7). Việc xác định tháng nhuận và ngày mùng một âm lịch dựa trên hai khái niệm thiên văn: điểm Sóc (New Moon) và 24 Tiết khí (Solar Terms, chia thành 12 Trung khí và 12 Tiết khí).
Công thức đổi từ ngày dương lịch $(d, m, y)$ ra số ngày Julius ($JD$) sau ngày 15/10/1582 (lịch Gregory):
$$JD = 367y - \left\lfloor \frac{7\left(y + \left\lfloor \frac{m+9}{12} \right\rfloor\right)}{4} \right\rfloor - \left\lfloor \frac{3\left(\left\lfloor \frac{y + \frac{m-9}{7}}{100} \right\rfloor + 1\right)}{4} \right\rfloor + \left\lfloor \frac{275m}{9} \right\rfloor + d + 1721028.5$$
Quy trình xác định tháng Âm lịch và tháng nhuận:
- Xác định Đông chí: Tiết Đông chí luôn rơi vào tháng 11 Âm lịch.
- Tính điểm Sóc: Tính số tháng công hội (Synodic month, chu kỳ $\approx 29.530588853$ ngày) từ điểm mốc Julius:
$$K = \left\lfloor \frac{JD_{31/12/Y} - 2415021.076998695}{29.530588853} \right\rfloor$$
- Phát hiện năm nhuận: Khoảng cách giữa 2 điểm Sóc ngay trước ngày Đông chí của 2 năm liên tiếp nếu $> 365$ ngày thì năm đó có 13 tháng âm lịch (năm nhuận).
- Xác định tháng nhuận: Trong năm nhuận, tháng âm lịch đầu tiên sau Đông chí không chứa Trung khí nào (Major Solar Term) sẽ được chỉ định làm tháng nhuận của năm.
2. Kiến trúc mô hình DeepSpeech ASR
DeepSpeech sử dụng kiến trúc mạng nơ-ron hồi quy (Recurrent Neural Network - RNN) huấn luyện end-to-end với hàm mất mát CTC (Connectionist Temporal Classification):
$$\mathcal{L}{\text{CTC}} = -\ln P(\mathbf{y}|\mathbf{x}) = -\ln \sum{\pi \in \mathcal{B}^{-1}(\mathbf{y})} P(\pi|\mathbf{x})$$
- Đầu vào âm thanh: Tín hiệu âm thanh dạng sóng (WAV/PCM), tần số lấy mẫu 16,000 Hz, 16-bit Mono.
- Trích xuất đặc trưng: Biến đổi Fourier thời gian ngắn (STFT) tạo phổ phổ âm thanh (Spectrogram/MFCC).
- Mạng nơ-ron học sâu: Gồm các lớp tích chập (Convolutional Layers), tiếp theo là các lớp hồi quy chuẩn hóa hai chiều (Bidirectional RNN/LSTM/GRU) để dự đoán phân phối xác suất các ký tự trên bảng chữ cái tiếng Việt.
- Giải mã ngôn ngữ (Decoding): Kết hợp mô hình ngôn ngữ N-gram (KenLM) thông qua thuật toán tìm kiếm chùm (Beam Search Decoder) để sửa lỗi chính tả ngữ cảnh:
$$\hat{\mathbf{y}} = \arg\max_{\mathbf{y}} \left[ \log P_{\text{AM}}(\mathbf{y}|\mathbf{x}) + \alpha \log P_{\text{LM}}(\mathbf{y}) + \beta \text{WordCount}(\mathbf{y}) \right]$$
+------------------+ +------------------------+ +------------------------+
| Âm thanh đầu vào| | Acoustic Model (DNN) | | N-gram Language Model |
| (16kHz WAV PCM) | --> | Trích xuất ký tự & | --> | Beam Search Decoding & | --> Văn bản đầu ra
| | | Ma trận xác suất CTC | | Hiệu chỉnh ngữ pháp |
+------------------+ +------------------------+ +------------------------+
3. Tích hợp Native qua Flutter Platform Channel
Để kích hoạt suy luận ASR từ mã nguồn Flutter, ứng dụng thiết lập MethodChannel kết nối trực tiếp với dịch vụ nền native viết bằng Kotlin trên Android:
Flutter Client Code (speech_service.dart):
import 'package:flutter/services.dart';
class SpeechService {
static const MethodChannel _channel = MethodChannel('com.heodat.app/deepspeech');
/// Khởi tạo và nạp mô hình ASR vào bộ nhớ
static Future<bool> initModel({required String modelPath, required String scorerPath}) async {
try {
final bool success = await _channel.invokeMethod('initDeepSpeech', {
'modelPath': modelPath,
'scorerPath': scorerPath,
});
return success;
} on PlatformException catch (e) {
print("Lỗi khởi tạo mô hình ASR: ${e.message}");
return false;
}
}
/// Bắt đầu ghi âm và nhận dạng giọng nói thời gian thực
static Future<String?> startSpeechToText() async {
try {
final String? resultText = await _channel.invokeMethod('startRecognition');
return resultText;
} on PlatformException catch (e) {
print("Lỗi nhận dạng giọng nói: ${e.message}");
return null;
}
}
}
Android Native Receiver (MainActivity.kt):
package com.heodat.app
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import org.deepspeech.libdeepspeech.DeepSpeechModel
class MainActivity: FlutterActivity() {
private val CHANNEL = "com.heodat.app/deepspeech"
private var deepSpeechModel: DeepSpeechModel? = null
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
when (call.method) {
"initDeepSpeech" -> {
val modelPath = call.argument<String>("modelPath")
val scorerPath = call.argument<String>("scorerPath")
try {
deepSpeechModel = DeepSpeechModel(modelPath)
deepSpeechModel?.enableExternalScorer(scorerPath)
result.success(true)
} catch (e: Exception) {
result.error("INIT_FAILED", e.localizedMessage, null)
}
}
"startRecognition" -> {
// Xử lý đọc luồng byte từ AudioRecord và truyền vào native inference
val recognizedText = AudioInferenceManager.recordAndTranscribe(deepSpeechModel)
result.success(recognizedText)
}
else -> result.notImplemented()
}
}
}
}
Testing và validation
Kiểm thử và tối ưu hóa mô hình ASR
- Tập dữ liệu huấn luyện: Dữ liệu âm thanh thu âm đa dạng giọng đọc tiếng Việt các miền với hơn 100 giờ dữ liệu được tiền xử lý, gán nhãn chính xác từ vựng liên quan đến chi tiêu (tiền, ăn uống, xăng xe, mua sắm, điện nước, trả nợ...).
- Tham số huấn luyện (Hyperparameters):
learning_rate: $0.0001$ với thuật toán tối ưu Adam Optimizer.
batch_size: 32.
epochs: 50 chu kỳ huấn luyện trên hệ thống máy chủ GPU NVIDIA.
beam_width: 500, hệ số scorer $\alpha = 0.75, \beta = 1.85$.
| Chỉ số đánh giá |
Kết quả giai đoạn đầu |
Sau khi tích hợp N-gram Scorer |
Mục tiêu thiết kế |
| Word Error Rate (WER) |
18.4% |
7.8% |
< 10.0% |
| Character Error Rate (CER) |
9.2% |
3.6% |
< 5.0% |
| Độ trễ suy luận (Inference Latency) |
1,450 ms |
380 ms |
< 500 ms |
| Tỷ lệ nhận dạng chính xác câu lệnh tài chính |
76.5% |
92.3% |
> 90.0% |
Kiểm thử ứng dụng di động
- Unit Testing: Viết bộ test kiểm thử logic chuyển đổi Âm - Dương lịch với hơn 500 ca kiểm thử các năm đặc biệt (năm nhuận 1984, 2004, 2023, 2024...), tỷ lệ chính xác đạt 100%.
- Firebase Test Lab: Thực thi kiểm thử tự động trên 15 cấu hình thiết bị Android ảo và thực tế (Pixel 4, Samsung Galaxy S21, Xiaomi Redmi Note 10...). Kết quả không ghi nhận lỗi tràn bộ nhớ (Out-of-Memory) hay crash ứng dụng; tốc độ khung hình hiển thị duy trì ổn định ở mức 58 - 60 FPS.
Kết quả đạt được
+-------------------------------------------------------------------------+
| ĐỐI CHIẾU MỤC TIÊU VÀ KẾT QUẢ ĐẠT ĐƯỢC |
+------------------------------------------+-------------+----------------+
| Tính năng / Chỉ tiêu | Kế hoạch | Thực tế đạt |
+------------------------------------------+-------------+----------------+
| 1. Nhận dạng giọng nói tiếng Việt | Có (WER<10%)| Đạt (WER 7.8%) |
| 2. Quản lý sổ thu chi, nhãn, phân loại | Hoàn thành | 100% hoàn thành|
| 3. Quản lý nợ vay & hóa đơn định kỳ | Hoàn thành | 100% hoàn thành|
| 4. Lịch Âm - Dương Việt Nam (Điểm Sóc) | Chính xác | Đạt 100% chuẩn |
| 5. Cơ sở dữ liệu nội bộ SQLite | Offline-1st | 8 bảng chuẩn hóa|
| 6. Phát hành Google Play Store | Thành công | Đã xuất bản |
+------------------------------------------+-------------+----------------+
Đổi mới và đóng góp
- Tiên phong tích hợp mô hình ASR DeepSpeech tiếng Việt trên Flutter: Đề tài đã giải quyết thành công bài toán tích hợp thư viện C++/Java DeepSpeech vào kiến trúc ứng dụng Flutter thông qua Platform Channel, đảm bảo khả năng nhận dạng giọng nói mượt mà với độ trễ thấp ngay trên thiết bị di động.
- Tự động hóa ghi chép tài chính bằng giọng nói: Giúp người dùng loại bỏ các thao tác nhập số bàn phím rườm rà. Chỉ cần nhấn nút thu âm và nói: "Ăn sáng bún bò 35 ngàn" hoặc "Đổ xăng 50 nghìn", hệ thống sẽ tự động bóc tách nội dung, phân loại danh mục và lưu trữ ngay lập tức.
- Tích hợp sâu hệ thống Lịch Âm truyền thống vào quản lý tài chính cá nhân: Khác với các ứng dụng quốc tế chỉ hỗ trợ Dương lịch, Heo Đất tính toán chính xác chu kỳ Âm lịch phục vụ người dùng Việt Nam theo dõi các khoản chi tiêu đặc thù như: tiệc tất niên, cúng giỗ, lễ tết, mừng thọ...
- So sánh tương quan hiệu năng với các ứng dụng hiện có:
| Tiêu chí so sánh |
Sổ thu chi (Komorebi) |
Quản lý tiền (Innim) |
Ứng dụng Heo Đất |
| Nhận dạng giọng nói (ASR) |
❌ Không hỗ trợ |
❌ Không hỗ trợ |
DeepSpeech ASR Tiếng Việt |
| Hỗ trợ Âm lịch Việt Nam |
❌ Không |
❌ Không |
Tính toán điểm Sóc & Tiết khí |
| Thời gian nhập 1 giao dịch |
$12 - 18\text{ s}$ |
$10 - 15\text{ s}$ |
$3 - 5\text{ s}$ (Giảm 65%) |
| Trải nghiệm quảng cáo |
⚠️ Quảng cáo dày đặc |
⚠️ Quảng cáo dày đặc |
Hoàn toàn không quảng cáo |
| Cơ chế hoạt động |
Cần kết nối Internet |
Cục bộ / Thủ công |
Offline-first + Cloud Sync |
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Use Cases)
- Kịch bản 1 (Sinh viên ghi chép nhanh sau khi chi tiêu): Sau khi mua sách vở tại nhà sách, sinh viên mở ứng dụng Heo Đất, bấm phím mic và nói "Mua giáo trình 120 nghìn". Ứng dụng lập tức chuyển âm thanh thành văn bản, tự động chọn danh mục Giáo dục và lưu vào sổ chi tiêu chỉ trong 3 giây.
- Kịch bản 2 (Người nội trợ quản lý đám tiệc theo lịch Âm): Người dùng tạo sự kiện "Giỗ cụ nội" vào ngày 15 tháng 7 Âm lịch với tính năng chu kỳ hàng năm. Hệ thống tự động chuyển đổi sang ngày Dương lịch tương ứng của từng năm và gửi thông báo nhắc nhở chuẩn bị ngân sách trước 3 ngày.
- Kịch bản 3 (Quản lý nợ và hóa đơn định kỳ): Theo dõi khoản nợ "Cho bạn Nam vay 500 nghìn" kèm hạn trả. Đúng ngày đáo hạn, ứng dụng tự động hiển thị trên widget màn hình chính và đẩy thông báo nhắc nhở mà không cần người dùng phải mở ứng dụng kiểm tra.
Quy trình triển khai trên Google Play Store
- Thiết lập tài khoản Google Play Console: Đăng ký tài khoản nhà phát triển, hoàn tất xác minh danh tính và thanh toán lệ phí quốc tế.
- Ký số ứng dụng (App Signing): Tạo keystore bảo mật, cấu hình
key.properties và biên dịch gói ứng dụng định dạng Android App Bundle (.aab) tối ưu kích thước phân phối.
- Cấu hình thông tin ứng dụng: Cung cấp đầy đủ chính sách quyền riêng tư (Privacy Policy - đặc biệt là quyền truy cập Micro
RECORD_AUDIO), mô tả ứng dụng, ảnh chụp màn hình chuẩn các kích thước điện thoại và máy tính bảng.
- Kiểm duyệt và xuất bản: Ứng dụng vượt qua các bài kiểm duyệt nghiêm ngặt về chính sách bảo mật dữ liệu người dùng và chính thức phát hành trên Google Play Store.
+-------------------------------------------------------------------------------+
| LỘ TRÌNH PHÁT TRIỂN (ROADMAP) |
| |
| [Q3/2023] Hoàn thiện DeepSpeech ASR & Xuất bản phiên bản Android v1.0 |
| [Q4/2023] Tối ưu hóa mô hình âm thanh ASR đa vùng miền (Bắc - Trung - Nam) |
| [Q1/2024] Phát triển phiên bản iOS (Swift/CoreML interop) & Đồng bộ qua Web |
| [Q2/2024] Tích hợp AI dự báo tài chính cá nhân & Phân tích chi tiêu nâng cao|
+-------------------------------------------------------------------------------+
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Phạm vi vùng miền của mô hình ASR: Mô hình DeepSpeech hiện tại được đào tạo tốt nhất với giọng đọc chuẩn phổ thông; khi gặp các từ ngữ địa phương phát âm đặc thù hoặc môi trường có độ ồn xung quanh quá lớn ($SNR < 10\text{ dB}$), tỷ lệ nhận dạng có thể suy giảm.
- Dung lượng bộ cài đặt ứng dụng: Việc nhúng trọng số mô hình ASR và tập dữ liệu ngôn ngữ N-gram scorer khiến dung lượng ứng dụng lớn hơn so với các ứng dụng thuần ghi chép thông thường.
- Nền tảng phát hành: Do DeepSpeech chưa hỗ trợ trọn gói trên hệ sinh thái iOS một cách tự động, phiên bản đầu tiên của ứng dụng tập trung tối ưu hóa cho hệ điều hành Android.
Hướng phát triển tương lai
- Huấn luyện mô hình ASR nâng cao: Mở rộng tập dữ liệu âm thanh giọng nói đa vùng miền (Bắc, Trung, Nam), tích hợp cơ chế khử nhiễu tiền xử lý (Noise Reduction Filter) để nâng cao độ chính xác nhận dạng trong môi trường công cộng.
- Phát triển phiên bản đa nền tảng toàn diện (iOS & Web): Chuyển đổi mô hình sang định dạng ONNX Runtime hoặc TensorFlow Lite Audio để triển khai đồng nhất trên cả iOS và giao diện Web.
- Trợ lý ảo tài chính thông minh (AI Financial Assistant): Tích hợp các mô hình ngôn ngữ lớn (LLMs) dạng thu nhỏ trên thiết bị nhằm phân tích thói quen tiêu dùng, tự động đưa ra các gợi ý cắt giảm chi tiêu không cần thiết và tối ưu hóa kế hoạch tiết kiệm hàng tháng cho người dùng.
Đối tượng hưởng lợi
- Sinh viên & Giới trẻ: Tiếp cận một công cụ tài chính cá nhân hoàn toàn miễn phí, không bị làm phiền bởi quảng cáo; tạo thói quen quản lý chi tiêu kỷ luật, khoa học với thời gian ghi chép tối thiểu.
- Lập trình viên di động & Kỹ sư phần mềm: Nguồn tài liệu tham khảo thực tiễn chất lượng cao về kiến trúc kết hợp giữa Flutter Platform Channel và các thư viện C++/JNI/Kotlin, kỹ thuật lập lịch thông báo Android và quản trị cơ sở dữ liệu quan hệ SQLite trên thiết bị di động.
- Doanh nghiệp & Startup Công nghệ Tài chính (FinTech): Tham khảo mô hình tích hợp giao diện người dùng bằng giọng nói (Voice UI) để nâng cao trải nghiệm khách hàng trong các ứng dụng ngân hàng số và ví điện tử.
- Nhà nghiên cứu Khoa học Dữ liệu & AI/NLP: Cung cấp dữ liệu thực nghiệm về việc triển khai mô hình học sâu nhận dạng giọng nói DeepSpeech tiếng Việt trong điều kiện giới hạn tài nguyên phần cứng di động.
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần cứng tối thiểu để ứng dụng chạy mượt mà mô hình DeepSpeech là gì?
Ứng dụng tương thích với các thiết bị chạy hệ điều hành từ Android 8.0 (API Level 26) trở lên, dung lượng RAM tối thiểu khuyến nghị là 2GB và bộ nhớ trong trống khoảng 150MB để lưu trữ ứng dụng, cơ sở dữ liệu SQLite và bộ trọng số mô hình nhận dạng giọng nói.
2. Tính năng nhận dạng giọng nói tiếng Việt có hoạt động khi không có kết nối mạng Internet không?
Có. Nhờ việc tích hợp trực tiếp mô hình DeepSpeech cùng tệp scorer ngôn ngữ nén ngay trong ứng dụng native của thiết bị, toàn bộ quá trình nhận dạng âm thanh thành văn bản (Voice-to-Text) được xử lý hoàn toàn ngoại tuyến (Offline Inference), đảm bảo tốc độ phản hồi tức thì và bảo mật tuyệt đối dữ liệu riêng tư của người dùng.
3. Thuật toán chuyển đổi Âm lịch sang Dương lịch xử lý năm nhuận và tháng nhuận như thế nào?
Hệ thống sử dụng thuật toán số ngày Julius kết hợp tính toán điểm Sóc và 24 Tiết khí dựa trên kinh tuyến $105^\circ$ Đông. Thuật toán kiểm tra khoảng cách giữa hai điểm Sóc liền kề ngày Đông chí: nếu khoảng cách vượt quá 365 ngày, hệ thống sẽ tự động quét tìm tháng đầu tiên không chứa Trung khí để xác định chính xác tháng nhuận trong năm âm lịch đó.
4. Dữ liệu tài chính cá nhân được bảo mật và sao lưu như thế nào?
Dữ liệu chi tiêu được lưu trữ an toàn trong vùng nhớ ứng dụng cục bộ qua hệ quản trị cơ sở dữ liệu SQLite. Khi người dùng đăng nhập tài khoản thông qua Firebase Authentication, dữ liệu lịch sử được đồng bộ hóa và mã hóa an toàn trên đám mây, giúp người dùng dễ dàng khôi phục thông tin khi thay đổi thiết bị.
5. Chi phí triển khai và khả năng mở rộng hệ thống trong thực tế?
Do ứng dụng vận hành theo kiến trúc máy khách thông minh (Client-side Inference & Local DB), chi phí máy chủ backend được tối giản ở mức gần như bằng 0 khi sử dụng hạn mức miễn phí (Spark Plan) của Firebase. Hệ thống có khả năng mở rộng phục vụ hàng trăm nghìn người dùng đồng thời mà không chịu áp lực quá tải hạ tầng máy chủ nhận dạng âm thanh.
Kết luận
Khóa luận tốt nghiệp "Tìm hiểu công nghệ DeepSpeech và xây dựng ứng dụng quản lý chi tiêu trên thiết bị di động" đã giải quyết thành công bài toán thực tiễn về quản lý tài chính cá nhân thông qua việc kết hợp sáng tạo giữa công nghệ nhận dạng giọng nói tiên tiến DeepSpeech và nền tảng phát triển ứng dụng hiện đại Flutter.
Sản phẩm ứng dụng Heo Đất không chỉ khẳng định tính khả thi vượt trội về mặt kỹ thuật thông qua các chỉ số kiểm thử ấn tượng (độ chính xác nhận dạng đạt trên 92%, thời gian ghi chép giảm 65%), mà còn mang lại giá trị ứng dụng xã hội to lớn khi đã được đóng gói chuẩn mực và phát hành chính thức trên Google Play Store. Đây là tiền đề vững chắc cho việc mở rộng các nghiên cứu ứng dụng trí tuệ nhân tạo tương tác giọng nói vào các hệ thống phần mềm tiện ích đời sống trong tương lai.