L ỜI CẢM ƠN Error! Bookmark not defined.
2.3.2 Các bước trong quá trình học tiếng Việt
Bước 1 Tạo ra thư mục VT nằm trong cùng một thư mục với SphinxTrain
Bước 2 Mở CMD đưa đường dẫn tới thư mục VT và thực hiện lệnh:
Bước 3 Tạo ra một cấu trúc cây có các tập tin và thư mục như sau VT wav etc VT.dic VT.filler VT.phone VT _train.fileids VT _train.transcription feat.params sphinx_train.cfg
Trong thư mục wav chứa tất cả các tập tin âm thanh mà chúng ta dùng để chạy
Tập tin feat.params và sphinx_train.cfg là của SphinxTrain có sẵn. Các tập tin VT.dic, VT.filler, VT.phone, VT _train.fileids, VT _train.transcription đã được
chuẩn bị trước.
Bước 4: Kiểm tra lại cấu hình
Mở file sphinx_train.cfg và lưu ý đến các thuộc tính $CFG_BASE_DIR, $CFG_SPHINXTRAIN_DIR nếu chúng ta đã di chuyển thư mục.
Ví dụ:
$CFG_BASE_DIR = "C:/VT";
$CFG_SPHINXTRAIN_DIR = "C:/VT";
Tìm thuộc tính $CFG_WAVFILE_EXTENSION và điền thông tin thích hợp
(raw hoặc wav).
Xét thuộc tính $CFG_WAVFILE_TYPE phù hợp.
Mặc định là: $CFG_WAVFILE_TYPE = 'raw';
Chọn loại mô hình huấn luyện:
$CFG_HMM_TYPE = '.cont.'; # Sphinx-3. Sphinx-4
#$CFG_HMM_TYPE = '.semi.'; # Sphinx-2, PocketSphinx
Bước 5: Tạo mô hình: Thực hiện lệnh sau:
Sau đó là lệnh:
Trong quá trình học SphinxTrain đã ghi lại tất cả các bước trong tập tin
CHƯƠNG 3: DEMO ĐỌC SỐ 3.1.Chương trình demo đọc số liên tục
Đây là demo về nhận dạng đọc số tiếng Việt Nam liên tục.
Để chạy demo đọc số: chạy file HelloNGram.java.
Chọn “Bắt Đầu” để bắt đầu đọc nhận dạng, “Đóng” để kết thúc demo.
Kết quả chạy demo đọc số liên tục như sau:
Hình 3.1: Màn hình ban đầu của demo đọc số
Hình 3.2:Màn hình sau khi nhận dạng một câu đọc số 3.2.Zip City
Đây là một demo minh họa về nhận dạng số. ZipCity sẽ nghe đọc mã bưu điện
Sau khi ZipCity chạy, bấm vào nút speak và đọc mã bưu điện Các chữ số được nhận dạng và hiển thị tỉnh, thành phố tương ứng.
CHƯƠNG 4: TẠO MODEL DÙNG CHO SPHINX-4 4.1 Tạo model dùng cho sphinx-4.
Model được tạo ra trong sphinx-4.
Bước 1: Tạo thư mục sphinx-4/models/VT
Bước 2: Trong thư mục VT tạo cấu trúc cây thư mục như sau:
cd_continuous_8gau/means cd_continuous_8gau/mixture_weights cd_continuous_8gau/variances cd_continuous_8gau/transition_matrices dict/ VT.dic dict/ VT.filler etc/VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.4000.mdef etc/VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.ci.mdef
Các file trong thư mục cd_continuous_8gau là các tập tin trong
VT/model_parameters/ VT.ci_cont / là kết quả của quá trình học.
Hai tập tin trong thư mục dict là hai tập tin VT.dic và VT.filler đã được chuẩn
bị khi học dữ liệu.
Thư mục etc sử dụng hai file trong VT/model_architecture/ là kết quả của quá
trình học.
Đổi tên các tập tin cho giống với cây thư mục ở trên.
Giải thích tên tập tin VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar:
VT: là tên của bộ dữ liệu được sử dụng để huấn luyện mô hình. 8gau: số gaussians
16k: tỷ lệ mẫu của dữ liệu huấn luyện.
40mel: số lượng các bộ lọc mel
130Hz: tần số tối thiểu.
6800Hz: tần số tối đa.
Trong thư mục sphinx-4/models/VT tạo tập tin model.props với nội dung:
description = any description of your model file
modelClass = edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.M odel modelLoader = edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.M odelLoader isBinary = true featureType = 1s_c_d_dd vectorLength = 39 sparseForm = false numberFftPoints = 512 numberFilters = 40 gaussians = 8 minimumFrequency = 130 maximumFrequency = 6800 sampleRate = 16000 dataLocation = cd_continuous_8gau modelDefinition = etc/VT.ci.mdef
Trong thư mục sphinx-4/models/VT/etc tạo tập tin variables.def có nội
dung:
set exptname = VT set vector_length = 13
set dictionary = $base_dir/lists/VT.dic set fillerdict = $base_dir/lists/VT.filler set statesperhmm = 3
set skipstate = no
set gaussiansperstate = 8 set feature = 1s_c_d_dd set n_tied_states = 4000 set agc = none
set cmn = current set varnorm = no
Bước 3: Chỉnh sửa tập tin build.xml trong sphinx-4:
Chú ý thêm các tag tương ứng ở các vị trí thích hợp trong tập tin xml, có thể
sửa name và value của thẻ có sẵn nếu không muốn build cái có trước.
Thêm các thuộc tính:
<property name="test_name" value = "VT_8gau_13dCep_16k_40mel_130Hz_6800Hz"/>
<property name="VT_data_dir" value="models/acoustic/VT"/>
Tìm thẻ target có tên create_all_model_classes thêm vào: <antcall target="create_my_model_classes">
</antcall>
Tìm thẻ target có tên delete_all_model_classes thêm vào: <antcall target="delete_my_model_classes">
<param name="my_model_name" value="${VT_name}"/> </antcall>
Tìm thẻ target có tên create_all_models thêm vào: <antcall target="create_my_model">
<param name="my_model_data_dir" value="${VT_data_dir}"/> <param name="my_model_name" value="${VT_name}"/> </antcall>
Bước 4: Rebuild
Trong cmd tới đường dẫn sphinx-4 rồi thực hiện lệnh:
ant
Chú ý: Máy phải cấu hình biến môi trường cho ant trước đó.
Bước 5: Để sử dụng trong sphinx-4 Sửa file cấu hình:
<component name="VT"
type="edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_130Hz_680 0Hz.Model">
<property name="loader" value="sphinx3Loader"/> <property name="unitManager" value="unitManager"/> </component>
Type="edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_130Hz_68 00Hz.ModelLoader">
<property name="logMath" value="logMath"/>
<property name="unitManager" value="unitManager"/> </component> <component name="dictionary" type="edu.cmu.sphinx.linguist.dictionary.FullDictionary"> <property name="dictionaryPath" value="resource:/edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_1 30Hz_6800Hz.Model!/edu/cmu/sphinx/model/acoustic/VT_8gau_13dCep_16k_40 mel_130Hz_6800Hz/dict/VT.dic"/> ... </component> 4.2 Audio Tool.
Để phục vụ cho việc ghi âm dữ liệu nhóm chúng em đã xây dụng một bộ công
cụ hỗ trợ ghi âm và kiểm tra dữ liệu sau khi ghi âm là Audio Tool. Audio Tool
gồm hai phần là recorder.jar và player.jar
Recorder
Recorder.jar dùng để ghi âm dữ liệu thành tập tin âm thanh .raw có độ nén cao, dung lượng thấp.
Hình 4.1 Màn nhìn cấu hình ghi âm
Chạy file recorder.jar. Khi cửa sổ Audio Tool hiện lên chọn Edit -> Option, màn hình Config suất hiện. Vì tool hỗ trợ tự động save file nên cần phải đặt một số
thông số cấu hình sau:
Record Fotmat: là thông số cấu hình cho file âm thanh.
Output Dir: đường dẫn chỉ nơi sẽ lưu các file âm thanh. Train File: là đường dẫn tới file chứa các câu cần thu âm. Length Name: là độ dài tên file âm thanh.
Jum Line: dòng bắt đầu thu âm.
Init Name: là ký tự gắn trước tên file âm thanh (nếu cần).
Hình 4.2 Màn hình ghi âm
Sau khi cấu hình thì có thể bắt đầu ghi âm. Câu cần ghi âm được hiển thị trên màn hình. Bấm Record để ghi âm, Stop để kết thúc ghi âm. Sau khi bấm Stop thì
chương trình tự động cho nghe lại câu vừa ghi âm, hoặc bấm Play để nghe lại lần
nữa. Nếu muốn save và chuyển sang câu khác thì chỉ cần bấm Next.
Khi chúng ta muốn mở nghe một tập tin đã ghi âm thì chọn File -> Open. Nếu
muốn ghi âm lại câu đó chỉ việc bấm record ghi âm như thường, sau đó chọn File -
> Save để lưu đè lên tập tin đó.
Player
Player.jar hỗ trợ nghe nhiều file âm thanh liên tiếp, dùng để kiểm tra lại dữ
liệu sau khi ghi âm. Giúp chúng ta phát hiện những file không đạt chất lượng,
Hình 4.3 Màn hình của player khi mới khởi động
File -> Open để chọn danh sách các file .raw cần nghe.
Hình 4.4 Màn hình kiểm tra dữ liệu
Khi nghe thì câu text và dạng sóng được hiển thị song song trên màn hình.
Điều này giúp chúng ta kiểm soát được dữ liệu thu âm một cách chính xác. Những
CHƯƠNG 5: KẾT QUẢ ĐẠT ĐƯỢC
Sau một quá trình học và thực hiện đề tài với sự giúp đỡ tận tình của thầy giáo
hướng dẫn là thầy Lê Quân Hà, nhóm em đã đạt được kết quả như sau:
- Đã huấn luyện được mô hình cú âm cho tiếng Việt.
- Đã hoàn thành demo nhận dạng số liên tục và demo Zip Code cho 4 người
huấn luyện nước Việt Nam của tiếng Việt Nam.
- Độ chính xác nhận dạng đọc số như sau: Nhận dạng đúng Nhận dạngsai Tổng số % tỉ lệ đúng % tỉ lệ lỗi 4644 356 5000 92.88% 7.12%