Cửa sổ Hamming

Một phần của tài liệu nhận dạng tiếng nói việt nam từ vựng lớn (Trang 28 - 67)

L ỜI CẢM ƠN Error! Bookmark not defined.

1.5.3Cửa sổ Hamming

Hamming window được định nghĩa như sau :

Với i = 0, 1,...., M (1.40

Tín hiệu nhận dạng sẽ được nhân với một hàm cửa sổ trước khi đi qua thuật toán

biến đổi Fourier nhanh. Tất cả các giá trị nằm bên ngoài khoảng lấy mẫu đều bằng

0. Hamming window được ứng dụng rất rộng rãi trong phân tích phổ tần số của tín

hiệu, và thiết kế các bộ lọc tín hiệu.

Ví dụ: Tín hiệu tiếng nói có thể thay đổi trong khoảng thời gian từ 10 – 20 ms, do

đó kích thước cửa sổ phù hợp là 20 ms, cứ 10 ms thì biến đổi Fourier rời rạc sẽ được cập nhật một lần.

Hình 1.9 Cửa Sổ Hamming

Hình 1.10 Biến đổi FFT của Hamming Window 1.5.4 Biến đổi Fourier nhanh và thuật toán Butterfly:

Để thực hiện được biến đổi Fourier rời rạc trong nhận dạng tiếng nói, chúng tôi lựa

chọn thuật toán biến đổi Fourier nhanh với giải thuật Butterfly. Quá trình nhận

dạng trải qua 3 giai đoạn như sau :

Giai đoạn đầu tiên

Phân rã tín hiệu tiếng nói miền thời gian N điểm thành N tín hiệu miền thời gian

Ví dụ :

Một tín hiệu tiếng nói gồm 16 điểm được phân rã như sau :

Hình 1.11 FFT Decomposition

Quá trình này trải qua 4 giai đoạn : để phân rã từ một tín hiệu miền thời gian gồm 16 điểm thành 16 tín hiệu riêng lẻ cho mỗi điểm. Từ thực nghiệm, chúng tôi rút ra

cần log2N giai đoạn để phân rã tín hiệu N điểm, ví dụ tín hiệu 16 điểm (24) cần 4 giai đoạn, tín hiệu 512 điểm (27) cần 7 giai đoạn.

Song song với việc phân rã tín hiệu, chúng tôi cũng sử dụng thuật toán bit reversal sorting để lọc các tín hiệu ở những điểm chẳn, lẻ khác nhau. Ví dụ, mẫu số 3 (0011) được hoán đổi với mẫu số 12 (1100), mẫu số 4 (0100) được hoán đổi chuyển thành mẫu số 2 (0010).

Hình 1.12 Bit Reversal Sorting

Giai đoạn 2

Xác định phổ tần số

cho một điểm, ở giai đoạn này không cần làm gì cả. Bởi vì, lúc này mỗi điểm tín

hiệu là một phổ tần số.

Giai đoạn 3

Kết hợp N phổ tần số thành một phổ tần số duy nhất theo thứ tự đảo ngược thứ tự

mà quá trình phân rả đã diễn ra. Đây là giai đoạn cuối cùng và cũng là giai đoạn khó khăn nhất của giải thuật Fast Fourier Transform.

Ví dụ: để kết hợp 16 phổ tần số riêng lẻ của từng điểm, bước đầu tiên chúng tôi kết

hợp 16 phổ tần số đó thành 8 phổ tần số cho mỗi 2 điểm. Tiếp đó, thành 4 phổ tần

số cho mỗi 4 điểm. Cứ tiếp tục như thế cho đến khi, kết quả cuối cùng của biến đổi

Hình 3.1 thể hiện cách thức kết hợp từ các phổ tần số riêng lẻ thành một phổ tần số

duy nhất của tín hiệu. Đối với miền thời gian, mỗi phổ tần số sẽ được kết hợp với 0, đối với miền tần số các phổ tần số này sẽ được lặp lại.

Hình 1.13 FFT Synthesis

Thuật toán Butterfly:

Thuật toán Butterfly là giải thuật cơ bản của biến đổi Fourier nhanh. Giải thuật này kết hợp các kết quả tính toán của từng biến đổi Fourier rời rạc (DFTs) riêng lẻ

thành một biến dổi Fourier rời rạc lớn hơn chứa tất cả (DFT), và ngược lại phân rả

một biến đổi Fourier rời rạc thành các biến đổi nhỏ hơn. Cấu trúc của giải thuật Butterfly tương tự như thuật toán Viterbi.

Nếu biến đổi Fourier rời rạc có kích thước là 2 và chỉ có 2 mẫu đầu vào là

Hình 1.14 Basic butterfly

Biến đổi Fourier rời rạc có kích thước N

Hình 1.15 Basic butterfly computation in the decimation-in-time FFT algorithm

Trong đó k là số nguyên phụ thuộc vào phần biến đổi được tính.

1.5.5 Cài đặt thuật toán biến đổi Fourier nhanh

Chúng tôi đã cài đặt thành công giải thuật biến đổi Fourier rời rạc để tính toán các

tín hiệu liên tục. Biến đổi Fourier nhanh phân tích tín hiệu thành các thành phần

tần số. Ở đây, chúng tôi phân tích trên một cửa sổ dữ liệu âm thanh thay vì trên toàn thời gian nói. Cửa sổ này là sản phẩm của việc ứng dụng Hamming Window

vào tín hiệu. Kết quả trả về là độ lớn phổ của dữ liệu trong cửa sổ Hamming. Mỗi

giá trị phổ trả về đại diện cho độ lớn của tần số cụ thể cho dữ liệu trong cửa sổ

nói “khoa công nghệ thông tin”. Phổ tần số trục tung là trục tần số, trục hoành là trục thời gian. Bóng tối là độ lớn của tần số tại thời điểm t tương ứng.

Hình 1.16 Tín hiệu của câu nói "khoa công nghệ thông tin” (kết quả của FFT)

CHƯƠNG 2 :HUẤN LUYỆN TIẾNG VIỆT NAM 2.1 Bộ từ điển Lexicom

Lexicon là bộ từ điển dùng để thể hiện các chữ thành các đơn vị phát âm

(phonemes). Nó là một thành phần quan trọng trong hệ thống nhận dạng tiếng nói.

Nhóm chúng em đã xây dựng được lexicon tiếng Việt theo phiên âm chuẩn quốc

tế. Lexicon tiếng Việt hơn 12 nghìn chữ sử dụng 41 phonemes cho cả hai miền

Nam và Bắc. Ví dụ: BIẾC B 4 IY AH K ... NGỜI NG 1 ER Y NGỞ NG 3 ER NGỠ NG 2 ER NGỢ NG 5 ER ... NHA N Y 0 AA ...

Trong đó các dấu “ngang”, “huyền”, “ngã”, “hỏi”. “sắc” và “nặng” được biểu

diễn bằng các số tương ứng “0”, “1”, “2” , “3”, “4” và “5”.

Có nhiều chữ người miền Nam và miền Bắc phát âm khác nhau. Người miền

Trung thì phát âm hoặc giống người Bắc hoặc giống người Nam. Chính vì thế mà nhóm em chỉ làm lexicon cho hai miền Nam và Bắc. Đây là cách phát âm phổ

thông theo hai miền chứ không phải cách phát âm địa phương.

Ví dụ:

BÀN B 1 AA NG Phiên âm theo giọng miền Nam

2.2 Dữ liệu

Dữ liệu học là một phần không thể thiếu trong nhận dạng tiếng nói. Dữ liệu

học quyết định trực tiếp đến kết quả nhận dạng. Dữ liệu học gồm hai phần là dữ

liệu văn bản và dữ liệu âm thanh. Dữ liệu âm thành là những tập tin âm thanh thu

âm những câu trong dữ liệu văn bản.

2.2.1 Dữ liệu văn bản

Tùy vào mục đích của việc nghiên cứu và chương trình ứng dụng nhận dạng

tiếng nói khác nhau thì có bộ dữ liệu văn bản khác nhau. Thường thì bộ dữ liệu văn bản được chọn theo chủ đề của ứng dụng.

Ví dụ:

Bộ dữ liệu văn bản đọc số từ 0 đến 9: kích thước từ vựng là 10 gồm các chữ

“không”, “một” ... “chín” và là bộ dữ liệu có kích thước từ vựng nhỏ nhất. Dưới đây là một số câu trong bộ dữ liệu đọc số mà nhóm em đã làm.

<S> KHÔNG HAI BỐN SÁU TÁM </S>

<S> MỘT KHÔNG NAM BẢY </S> <S> NĂM HAI BỐN BỐN </S>

<S> CHÍN KHÔNG MỘT </S>

<S> BA MỘT KHÔNG BẢY </S> Trong đó: <S> là bắt đầu một câu

</S> là kết thúc một câu.

Bộ dữ liệu từ vựng lớn là bộ dữ liệu gồm tất cả các chữ tiếng Việt: kích

thước từ vựng hơn 8 nghìn chữ. Dưới đây là một số câu trong bộ dữ liệu từ vựng

<S> TRẦN THỊ MAI ANH </S>

<S> ĐÊ HÁT KHÔNG BẢY ĐÊ TÊ HÁT </S> <S> CÔNG NGHỆ PHẦN MỀM </S>

<S> HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU</S>

<S> NGUYỄN CÔNG BÌNH </S>

Để có được một bộ dữ liệu từ vựng lớn thì nhóm chúng em phải thu thập dữ

liệu từ nhiều nguồn như báo chí, tác phẩm văn học, internet... Từ dữ liệu ban đầu

chúng em đã tách đoạn, tách câu, lọc bỏ những chữ không đúng chuẩn tiếng Việt,

những chữ tiếng nước ngoài, những chữ viết tắt, con số để được một bộ dữ liệu

chuẩn có các câu như trên.

2.2.2 Dữ liệu âm thanh

Dữ liệu âm thanh phụ thuộc vào bộ dữ liệu văn bản. Nó bao gồm tất cả các tập

tin âm thanh thu âm các câu trong bộ dữ liệu văn bản. Bộ dữ liệu văn bản cho nhận

dạng số gồm 200 câu thì bộ dữ liệu âm thanh là 200 tập tin âm thanh. Nhóm chúng em đã ghi âm dữ liệu thành tập tin có đuôi là .raw. Tập tin âm thanh .raw có độ nén cao, dung lượng nhỏ thích hợp cho việc ghi âm dữ liệu lớn.

Một tập tin âm thanh chuẩn là một tập tin không có tiếng ồn và nhiễu, các chữ

phải được đọc rõ ràng.

Hình 2.1 Sóng của câu "ba bốn bảy" không bị ồn và nhiễu

Trong qua trình thu âm, người thu âm có thể đọc nhanh làm mất tiếng dẫn đến

các chữ bị dính liền vào nhau. Điều này dẫn đến việc khi chúng ta cho huấn luyện

câu thu âm là “tôi đi” do đọc nhanh làm cho chữ “tôi” dính liền vào chữ “đi”. Khi

nhận dạng có thể cho kết quả sai là “tô đi” chứ không phải “tôi đi”.

Hình 2.2 Câu "tôi đi" được đọc rõ ràng

Hình 2.3 Câu "tôi đi" khi đọc quá nhanh

Ngược lại, nếu người thu âm đọc quá chậm và kéo dài chữ thì cũng dẫn đến

huấn luyện và nhận dạng bị sai. Ví dụ: chữ “tôi” được đọc kéo dài dẫn đến khi

nhận dạng có thể ra kết quả sai là “tôôôi đi” thay vì là “tôi đi”.

Hình 2.4 Chữ “tôi” khi đọc ngân dài

Bộ dữ liệu âm thanh phải được thu âm rõ ràng, dứt khoát từng chữ (đọc như

đọc chính tả). Người thu âm dữ liệu học cũng đóng vai trò rất quan trọng. Người

thu âm nằm trong độ tuổi từ 18 đến 51 chia đều theo độ tuổi, cân bằng cả giọng

nam và giọng nữ. Số lượng người thu âm lớn, trải đều theo lứa tuổi, cân bằng số

nam và nữ làm cho hệ thống trở lên phong phú hơn, linh hoạt hơn và khả năng

thích ứng cao. Ví dụ như huấn luyện 1000 người đọc, khi người thứ 1001 đọc thì hệ thống dễ dàng thích nghi với giọng của người này và cho kết quả nhận dạng

2.2.3 Tiếng ồn và nhiễu trong dữ liệu âm thanh

Tiếng ồn, nhiễu ảnh hưởng rất lớn đến quá trình học dữ liệu và nhận dạng.

Tiếng ồn, nhiễu là do nhiều nguyên nhân như tiếng ồn xe cộ, công trường, người

nói chuyện..., và nhiễu chủ yếu là do microphone.

Hình 2.5 Câu “ba bốn bảy” thu âm bị ồn và nhiễu

Lưu ý: khi thu âm nên chọn thời gian và địa điểm yên tĩnh thích hợp để hạn

chế tiếng ồn, và chọn microphone ít gây nhiễu.

2.3 Huấn luyện tiếng Việt

Bộ huấn luyện mà nhóm em sử dụng là SphinxTrain. Đây là bộ huấn luyện

phát triển bởi trường đại học Carnegie Mellon. Sau đây nhóm em xin trình bày về

quá trình chuẩn bị dữ liệu và huấn luyện đọc số tiếng Việt.

2.3.1 Chuẩn bị dữ liệu

Dữ liệu cho nhận dạng đọc số tương đối đơn giản vì kích thước từ vựng nhỏ

với 10 chữ số. Bộ dữ liệu đọc số nhóm em chuẩn bị là 200 câu và do nhiều người

thu âm. Để học tiếng Việt thì chúng ta phải chuẩn bị các dữ liệu đầu vào như sau:

VT.dic

Là tập tin từ điển tiếng Việt theo phiên âm quốc tế (lexicon). Đây là lexicon

cho đọc số, chỉ có 10 chữ “không”, “một”, ..., “chín”.

Từ điển đọc số tiếng Việt phiên âm quốc tế:

BA B 0 AA B\u1ea2Y B 3 AY B\u1ed0N B 4 AO NG

CH\u00cdN T Y 4 IY N HAI HH 0 AA Y KH\u00d4NG K HH 0 AW NG M\u1ed8T M 5 AO K N\u0102M N 0 AH M S\u00c1U SH 4 AW T\u00c1M T 4 AA M VT.filler

Là một tập tin đóng vai trò là một bộ lọc nhiễu.

<S> SIL <SIL> SIL </S> SIL

Trong đó:

<S> : khoảng nặng đầu câu

<SIL> : khoản nặng trong câu

</S> : khoảng nặng cuối câu

VT.phone

Là tập tin chứa các phonemes xuất hiện trong từ điển đọc số (VT.dic) và trong bộ lọc nhiễu (VT.filler), có 20 phonemes được sử dụng cho 10 chữ từ 0 đến 9 là:

0 3

4 5 AA AH AO AW AY B HH IY K M N NG SH SIL T Y

Các phonemes này phải duy nhất trong tập tin VT.phone và chỉ gồm những

phonemes mà chúng ta cần (xuất hiện trong VT.dic và VT.filler).

VT_train.transcription

Là tập tin chứa các câu mà chúng ta dùng để học. Dưới đây là một số câu trong 200 câu dùng để huấn luyện đọc số:

………... <S> N\u0102M HAI B\u1ed0N B\u1ed0N </S>

<S> CH\u00cdN KH\u00d4NG M\u1ed8T </S> <S> BA M\u1ed8T KH\u00d4NG B\u1ea2Y </S> <S> M\u1ed8T B\u1ea2Y CH\u00cdN </S> <S> BA S\u00c1U N\u0102M </S>

<S> CH\u00cdN B\u1ea2Y HAI </S>

<S> M\u1ed8T KH\u00d4NG HAI B\u1ed0N </S> <S> N\u0102M KH\u00d4NG HAI </S>

<S> M\u1ed8T KH\u00d4NG HAI B\u1ed0N </S>

<S> KH\u00d4NG N\u0102M M\u1ed8T BA KH\u00d4NG M\u1ed8T B\u1ed0N BA </S>

<S> KH\u00d4NG N\u0102M M\u1ed8T BA KH\u00d4NG KH\u00d4NG B\u1ed0N S\u00c1U </S>

<S> KH\u00d4NG N\u0102M M\u1ed8T BA KH\u00d4NG M\u1ed8T B\u1ed0N HAI </S>

<S> CH\u00cdN KH\u00d4NG KH\u00d4NG M\u1ed8T </S> <S> HAI N\u0102M T\u00c1M CH\u00cdN </S>

<S> BA HAI </S>

………... Thu âm 800 câu đọc số và lưu các tập tin âm thanh .raw trong thư mục wav.

VT _train.fileids

Là tập tin chứa tất cả tên các tập tin âm thanh trong thư mục wav (không để đuôi .raw), thứ tự tên tập tin âm thanh trong VT_train.fileids tương ứng với thứ tự

câu được thu âm trong tập tin VT_train.transcription (số dòng trong

VT_train.fileids phải bằng số dòng trong VT_train.transcription). 001

002 003 ... 800 Chú ý kiểm tra:

 Các tập tin .dic, .filler, .phones, and .transcription nội dung đều viết hoa.

 Mỗi tập tin đều có một dòng trống ở cuối.

 Phải có cùng số dòng trong tập tin .transcription và tập tin .fileids.

 Chắc chắn rằng tập tin .phone không có dòng nào bị trùng lắp.

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:

Một phần của tài liệu nhận dạng tiếng nói việt nam từ vựng lớn (Trang 28 - 67)