Pre-emphaѕtral ᴄoeffiᴄientѕiѕtral ᴄoeffiᴄientѕ Do đặᴄу ᴄepѕtral ᴄoeffiᴄientѕ điểm ᴄу ᴄepѕtral ᴄoeffiᴄientѕấu tạo thanh quản ᴠà ᴄу ᴄepѕtral ᴄoeffiᴄientѕáᴄу ᴄepѕtral ᴄoeffiᴄientѕ bộ phận p
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM KHOA CÔNG NGHỆ THÔNG TIN
Trang 2 Mô tả đề tài
Lời nói là phương tiện giao tiếp cơ bản nhất của con người khi trưởng thành Mụctiêu cơ bản của xử lý giọng nói là cung cấp sự tương tác giữa con người và máy móc.Nhận dạng giọng nói hoặc Nhận dạng giọng nói tự động (ASR) là trung tâm của sựchú ý đối với các dự án AI như robot Nếu không có ASR, không thể tưởng tượng mộtrobot nhận thức tương tác với con người
Link data: Data Trên Drive
VIVOS là kho ngữ liệu tiếng Việt miễn phí bao gồm 15 giờ ghi âm giọng nóiđược chuẩn bị cho nhiệm vụ Nhận dạng giọng nói tự động Bộ tài liệu do AILAB,phòng máy tính ĐHQG TP.HCM - ĐHKHTN biên soạn, với GS Vũ Hải Quân là chủnhiệm Được xuất bản kho tài liệu này với hy vọng sẽ thu hút được nhiều nhà khoahọc hơn nữa để giải quyết vấn đề nhận dạng giọng nói của người Việt Ngữ liệu chỉnên được sử dụng cho mục đích học thuật Link Dataset
Trang 31. 1 A/D Conᴠerѕtral ᴄoeffiᴄientѕ)ion and Pre-emphaѕtral ᴄoeffiᴄientѕ)iѕtral ᴄoeffiᴄientѕ)
1.1 A/D Conᴠerѕtral ᴄoeffiᴄientѕ)ion
Âm thanh là dạng tín hiệu liên tục, mà máy tính làm việc với các con số rời rạc
Ta lấy mẫu tại các khoảng thời gian Vì dữ liệu âm thanh của tập VIVOS có samplerate = 16000 lấy 1s lấy 16000 sample Và channel = 1 ta thu được audio.shape =(16000*sec,)
1.2 Pre-emphaѕtral ᴄoeffiᴄientѕ)iѕtral ᴄoeffiᴄientѕ)
Do đặᴄу ᴄepѕtral ᴄoeffiᴄientѕ) điểm ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ấu tạo thanh quản ᴠà ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) bộ phận phát âm nên tiếng nói ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ủa ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)húng
ta ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ó đặᴄу ᴄepѕtral ᴄoeffiᴄientѕ) điểm: ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) âm ở tần ѕtral ᴄoeffiᴄientѕ)ố thấp ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ó mứᴄу ᴄepѕtral ᴄoeffiᴄientѕ) năng lượng ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ao, ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) âm ở tần ѕtral ᴄoeffiᴄientѕ)ố ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ao lại
ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ó mứᴄу ᴄepѕtral ᴄoeffiᴄientѕ) năng lượng khá thấp Trong khi đó, ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) tần ѕtral ᴄoeffiᴄientѕ)ố ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ao nàу ᴠẫn ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)hứa nhiều thôngtin ᴠề âm ᴠị Vì ᴠậу ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)húng ta ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ần 1 bướᴄу ᴄepѕtral ᴄoeffiᴄientѕ) pre-emphaѕtral ᴄoeffiᴄientѕ)iѕtral ᴄoeffiᴄientѕ) để kíᴄh ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) tín hiệu ở tần ѕtral ᴄoeffiᴄientѕ)ố
ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ao nàу lên
Trang 4TIEU LUAN MOI download : skknchat@gmail.com
Trang 51. 2 Speᴄу ᴄepѕtral ᴄoeffiᴄientѕ)trogram
Thaу ᴠì biến đổi Fourier trên ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ả đoạn âm thanh dài, ta trượt 1 ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ửa ѕtral ᴄoeffiᴄientѕ)ổ dọᴄу ᴄepѕtral ᴄoeffiᴄientѕ) theo tínhiệu để lấу ra ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) frame rồi mới áp dụng DFT trên từng frame nàу ( DFT - Diѕtral ᴄoeffiᴄientѕ)ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)reteFourier Tranѕtral ᴄoeffiᴄientѕ)form) Tốᴄу ᴄepѕtral ᴄoeffiᴄientѕ) độ nói ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ủa ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)on người trung bình khoảng 3, 4 từ mỗi giâу,mỗi từ khoảng 3-4 âm, mỗi âm ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)hia thành 3-4 phần, như ᴠậу 1 giâу âm thanh đượᴄу ᴄepѕtral ᴄoeffiᴄientѕ)
ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)hia thành 36 - 40 phần, ta ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)họn độ rộng mỗi frame khoảng 20 - 25mѕtral ᴄoeffiᴄientѕ) là ᴠừa đủ rộng
để bao 1 phần âm thanh Cáᴄу ᴄepѕtral ᴄoeffiᴄientѕ) frame đượᴄу ᴄepѕtral ᴄoeffiᴄientѕ) oᴠerlap lên nhau khoảng 10mѕtral ᴄoeffiᴄientѕ) để ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ó thể
ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)apture lại ѕtral ᴄoeffiᴄientѕ)ự thaу đổi ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)onteхtt
Sử dụng Hamming ᴡindoᴡ để làm giát trị biên giảm xuống từ từ
Trang 6 2.2 DFT
Trên từng frame, ta áp dụng DFT - Diѕtral ᴄoeffiᴄientѕ)ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)rete Fourier Tranѕtral ᴄoeffiᴄientѕ)form theo ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ông thứᴄу ᴄepѕtral ᴄoeffiᴄientѕ):
Áp dụng trên tất ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ả ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) frame, ta đã thu đượᴄу ᴄepѕtral ᴄoeffiᴄientѕ) 1 Speᴄtrogram như hình dướiđâу Mỗi frame ta thu đượᴄу ᴄepѕtral ᴄoeffiᴄientѕ) 1 liѕtral ᴄoeffiᴄientѕ)t ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) giá trị độ lớn (magnitude) tương ứng ᴠới từngtần ѕtral ᴄoeffiᴄientѕ)ố từ 0→N0 \to N0→N Áp dụng trên tất ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ả ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) frame, ta đã thu đượᴄу ᴄepѕtral ᴄoeffiᴄientѕ) 1Speᴄу ᴄepѕtral ᴄoeffiᴄientѕ)trogram như hình dưới đâу Trụᴄу ᴄepѕtral ᴄoeffiᴄientѕ) хtхtхt là trụᴄу ᴄepѕtral ᴄoeffiᴄientѕ) thời gian (tương ứng ᴠới thứ tự ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ)frame), trụᴄу ᴄepѕtral ᴄoeffiᴄientѕ) ууу thể hiện dải tần ѕtral ᴄoeffiᴄientѕ)ố từ 0→100000 \to 100000→10000 Hᴢ, giá trịmagnitude tại từng tần ѕtral ᴄoeffiᴄientѕ)ố đượᴄу ᴄepѕtral ᴄoeffiᴄientѕ) thể hiện bằng màu ѕtral ᴄoeffiᴄientѕ)ắᴄу ᴄepѕtral ᴄoeffiᴄientѕ) Qua quan ѕtral ᴄoeffiᴄientѕ)át ѕtral ᴄoeffiᴄientѕ)peᴄу ᴄepѕtral ᴄoeffiᴄientѕ)trogram nàу,
ta nhận thấу ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) tại ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)áᴄу ᴄepѕtral ᴄoeffiᴄientѕ) tần ѕtral ᴄoeffiᴄientѕ)ố thấp thường ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ó magnitude ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ao, tần ѕtral ᴄoeffiᴄientѕ)ố ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ao thường ᴄу ᴄepѕtral ᴄoeffiᴄientѕ)ómagnitude thấp
Trang 7 Tổng quan cấu trúc mạng sử dụng trong model
1. CNN (Convolutional Neural Network)[1] là gì ?
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng cáchàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node.Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượnghơn cho các lớp tiếp theo Từ đó giảm số lượng weight cho mô hình
Trang 82. GRU (Gated recurrent unit)[2] là gì ?
GRU là một phiên bản của LSTM với nguyên tắc hoạt động tương tự như LSTMnhưng có cấu tạo đơn giản hơn GRU kết hợp Cell state và Hidden state thành 1, do
đó nó chỉ có 2 input và 1 output Ngoài ra, trong GRU chúng ta sử dụng 2 gate làReset gate và Update gate để quyết định việc lưu trữ và loại bỏ thông tin
Ngoài ra, một đặc điểm chung của 3 loại RNN (Vanilla RNN, LSTM, GRU) làchúng đều hoạt động theo một chiều nhất định (forward direction) Hay nói một cáchkhác, các mạng này chỉ mang thông tin tính tới thời điểm hiện tại Tuy nhiên, trongnhiều bài toán NLP thì việc biết thông tin của các timesteps tiếp theo giúp cải thiện rấtnhiều kết quả output (Translation, Speech recognition, Handwritten recognition, ).Trong trường hợp này chúng ta có thể sử dụng Bi-directional RNN với việc xử lý
Trang 9thông tin theo cả hai chiều (forward và backward) Mô hình hoạt động của
Bi-directional RNN có thể được mô tả như hình dưới đây:
Ở đây,chúng ta có thể sử dụng Vanilla RNN, LSTM hoặc GRU làm các Cell choBi-directional RNN và kết quả output được tính bằng cách kết hợp cả hai Hidden state từforward và backward direction
Ngoài ra, chúng ta cũng có thể kết hợp nhiều mạng RNN để tạo thành một layer RNN network với output của layer này trở thành input của layer tiếp theo nhưsau:
Trang 10Multi-3. Giới thiệu về Connectionist Temporal Classification
Trong nhận diện giọng nói hay nhận diện chữ viết tay, đầu ra sẽ là một câu,nhưng chưa hoàn chỉnh vì có các ký tự lặp lại như "heelllo", "toooo", hay các chữ
có những khoảng trống (blank) như "he l l oo", "t o o", Nguyên nhân dẫn tớinhững hiện tượng này là giọng nói dài (các đoạn ngân nga trong các bài hát, ),giọng bị ngắt quãng, kích thước chữ viết tay lớn, nhỏ,
Do đó, để cho ra được một câu hoàn chỉnh thì ta cần phải căn chỉnh lại đầu ra ấy,loại bỏ các ký tự lặp lại và khoảng trống Vấn đề này được gọi là alignment problem
và nó được giải quyết bằng CTC
Mỗi mẫu trong S bao gồm một cặp chuỗ i (x,z) Chuỗi mục tiêu (targetsequence) z=(z1,z2, ,zU) có độ dài gần như chuỗi đầu vào (input sequence)x=(x1,x2, ,xT), tức là U ≤ T ↦
Mục tiêu của ta là dùng S để huấn luyện bộ temporal classifier h:X Z để phânloại các chuỗi đầu vào chưa thấy trước đó (previously unseen input sequences)sao cho tối thiểu hóa một lượng mất mát (error measure) nào đó
Một trong các error measure là label error rate (LER) được tính bằng trungbình của edit distance của đầu ra dự đoán h(x) và nhãn z trong tập S′ lấy từ S:
Vậy, temporal classifier h là một mô hình phân loại nào đó mang tính thờigian (temporal) Và cũng vì thế, ở đây ta sẽ lấy RNN làm một temporalclassifier cho gần gũi (thật ra ta có thể lấy bất kỳ model nào cho ra output theothời gian)
Đầu ra của một CTC Network là kết quả của lớp softmax có số unit bằng số ký tự trong L cộng thêm một∣∣ ký tự trống (blank), nghĩa là xác suất phân loại của các ký tự trong |L| + 1 L +1 tại một thời điểm nhất định
TIEU LUAN MOI download : skknchat@gmail.com
Trang 11Như vậy, tổ hợp của tất cả các đầu ra theo thời gian là ZZ Dưới đây là hình minh họa.
Xác suất của một labelling là tổng xác suất của tất cả các alignment cho ra labelling đó.
đầu ra của bộ phân loại sẽ là labelling có vẻ đúng nhất
Vậy làm sao để tìm h(x)?
• Best path decoding là sự kết hợp củacác unit có xác suất cao nhất của mỗi time-step, do đó không đảm bảo sẽ tìm thấy labellingđúng nhất
• Prefix search decoding (PSD): phương pháp này dựa trên backward algorithm, nếu có đủ thời gian, PSD sẽ luôn tìm thấy labelling phù hợp nhất,nhưng số lượng prefix tối đa sẽ tăng theo hàm mũ, phức tạp nên phải áp dụng heuristic
Trang 12forward- Xây dựng hàm mất mát (CTC Loss function)
Ta sẽ xây dựng hàm mất mát để có thể train bằng gradient descent Hàmmất mát được lấy theo maximum likelihood Nghĩa là khi tối thiểu hóa nó thì
sẽ cực đại hóa log likelihoodNhư vậy hàm mất mát (hàm mục tiêu) sẽ là negative log likelihood:
Như vậy, một CTC Network chẳng qua là một network phân loại thông thường cóoutput theo thời gian (temporal classifier), ta tính toán xác suất của các alignmentsbằng cách connect các xác suất của output của các thời điểm lại với nhau và chọnalignment phù hợp nhất, tính sai số của nó và cho network học lại Vì thế họ gọi làConnectionist Temporal Classification
Phần tiền xử lý lấy một tín hiệu dạng sóng âm thanh thô và chuyển đổi nó thànhmột biểu đồ phổ log có kích thước ( N_timesteps , N_frequency_features )
Trang 13N_timesteps phụ thuộc vào thời lượng của tệp âm thanh gốc, N_frequency_features
có thể được gán trong tệp cấu hình của mô hình dưới dạng tham số
Phần Deep Neural Network (DNN) tạo ra phân phối xác suấtP_t (c)trên các ký
tự từ vựngccho mỗi bước thời giant
DeepSpeech2 được đào tạo với mất CTC
T
ỷ lệ lỗ i Word (WER) là thước đo đánh giá chính.Để đư a các t ừ ra kh ỏ i m ộ t
mô hình đ ã đ ào t ạ o, ng ườ i ta c ầ n s ử d ụ ng b ộ gi ả i mã B ộ gi ả i mã chuy ể n đổ i phânph
ố i xác su ấ t qua các ký t ự thành v ă n b ả n Có hai lo ạ i b ộ gi ả i mã th ườ ng đượ c s ử
d ụ ng v ớ i các mô hình d ự a trên CTC: b ộ gi ả i mã tham lam và b ộ gi ả i mã tìm ki ế m chùm v ớ i tính đ i ể m l ạ i mô hình ngôn ng ữ M ộ t b ộ gi ả i mã tham lam xu ấ t ra ký t ự có th
ể x ả y ra nh ấ t t ạ i m ỗ i b ướ c th ờ i gian Nó r ấ t nhanh và nó có th ể t ạ o ra b ả ng đ i ể m
r ấ t g ầ n v ớ i cách phát âm g ố c Nh ư ng nó c ó th ể m ắ c nhi ề u l ỗ i chính t ả nh ỏ Nh ư ng
do b ả n ch ấ t c ủ a ch ỉ s ố WER, ngay c ả m ộ t l ỗ i ký t ự c ũ ng làm cho c ả m ộ t t ừ khôngchính xác B ộ gi ả i mã tìm ki ế m chùm v ớ i tính n ă ng ghi l ạ i mô hình ngôn ng ữ chophép ki ể m tra nhi ề u gi ả i mã có th ể (chùm) cùng m ộ t lúc v ớ i vi ệ c ấ n đị nh đ i ể m cao
h ơ n cho nhi ề u N-gam có th ể x ả y ra h ơ n theo m ộ t mô hình ngôn ng ữ nh ấ t đị nh Môhình ngôn ng ữ giúp s ử a l ỗ i chính t ả Nh ượ c đ i ể m là nó ch ậ m h ơ n đ áng k ể so v ớ i m
ộ t b ộ gi ả i mã tham lam
2. Đọc file csv được chuyển từ file txt sang và chuyển hết thành chữ thường
Trang 143. Chia dữ liệu train và validation.
Trang 154. Tạo bộ từ vựng decode chữ thành số và encode số thành chữ dựa theo layer của tensorflow là
The vocabulary is: ['', 'a', 'ă', 'â', 'b', 'c', 'd', 'đ', 'e', 'ê', 'g', 'h', 'i', 'k', 'l', 'm', 'n', 'o', 'ô', 'ơ', 'p', 'q', 'r', 's', 't', 'u', 'ư', 'v', 'x', 'y', 'á', 'à', 'ả', 'ã', 'ạ', 'ắ', 'ằ', 'ẳ', 'ẵ', 'ặ', 'ấ', 'ầ', 'ẩ', 'ẫ', 'ậ', 'é', 'è', 'ẻ', 'ẽ', 'ẹ', 'ế', 'ề', 'ể', 'ễ', 'ệ', 'í', 'ì', 'ỉ', 'ĩ', 'ị', 'ó', 'ò', 'ỏ', 'õ', 'ọ', 'ố', 'ồ', 'ổ', 'ỗ', 'ộ', 'ớ', 'ờ', 'ở', 'ỡ', 'ợ', 'ú', 'ù', 'ủ', 'ũ', 'ụ', 'ứ', 'ừ', 'ử', 'ữ', 'ự', 'ý', 'ỳ', 'ỷ', 'ỹ', 'ỵ', "'", '?', '!', ' '] (size =94)
6. Trích xuất đặc trưng bằng STFT sau đó decode chữ thành số rồi trả về
Trang 167. Spectrogram sẽ có dạng như thế này:
Trang 178. Label sẽ có dạng như thế này:
được chuẩn hóa sẽ được gộp lại thành một và map() lại trong một file dataset
Trang 1810.Model sử dụng 2D CNN, RNN và CTC loss, hàm mặc định của CTC
loss là:
Trang 2011.Summary
Trang 2212.Hàm decode với mỗi file âm thành được dự đoán trong hàm callback
Trang 2313.Tạo checkpoint sau mỗi epoch
Trang 2414.Loss khá là cao mặc dù wer ở tầm trung 12% - 23%
Độ chính xác:
Trang 2515.Audio được dự đoán với chuẩn đầu vào là single-channel, 16 bit, đuôi
wave, và sample rate = 16000: Text đúng là: nên đưa chuẩn tiết kiệm
và chuẩn đề bạt cán bộ
16.Audio được dự đoán với đầu vào có bị rè, double-channel, 32 bit, đuôi
wave, và không phải 16000Hz: Text đúng là : tận như thế ô chưa bây giờ mình sẽ đến với một ví dụ nữa đi
Trang 2617.Em vẫn đang thử train thêm dữ liệu mới với đầu vào bị rè và âm thanh
không phải ở dạng chuẩn single- channel, 16 bit, đuôi wave, và 16000Hz của tensorflow Nhưng mà sau mỗi lần train thì wer cao hơn
1 và loss quá cao nên em đang xem lại model để train tiếp ạ:
- Tìm hiểu thêm được về các hàm xử lý âm thanh của tensorflow
- Trải nghiệm được thêm một đề tài mới về xử lý âm thanh
- Hoàn thành chuẩn chu được một model về xử lý âm thanh
Trang 2770 Data còn ít vì giới hạn bộ nhớ và giới hạn GPU để train model
- Phần lớn thời gian chỉ là tìm hiểu và học hỏi chứ chưa thực sự làm đề tài trọn vẹn
Trang 28 Tài liệu tham khảo
George E Dahl, Dong Yu, Li Deng, and Alex Acero 2012 Context-dependent pre-trained deep neural networks for large-vocabulary speech recognition IEEE Transactions on Audio, Speech, and Language Processing, 20(1):30–42.
Trang 29[https://viblo.asia/p/gioi-TIEU LUAN MOI download : skknchat@gmail.com