1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI BÁO CÁO XÂY DỰNG MÔ HÌNH NLP Đề tài VIETNAMESE SPEECH RECOGNITION

27 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM KHOA CÔNG NGHỆ THÔNG TIN  BÀI BÁO CÁO XÂY DỰNG MƠ HÌNH NLP Đề tài: VIETNAMESE SPEECH RECOGNITION GVHD: Đặng Thị Phúc Họ tên Mssv Phạm Thanh Hải 19501521 Nguyễn Duy Đường Vũ 18061881 Võ Giang Khang 19499601 TP Hồ Chí Minh, 18 tháng năm 2022  Mơ tả đề tài Lời nói phương tiện giao tiếp người trưởng thành Mục tiêu xử lý giọng nói cung cấp tương tác người máy móc Nhận dạng giọng nói Nhận dạng giọng nói tự động (ASR) trung tâm ý dự án AI robot Nếu khơng có ASR, khơng thể tưởng tượng robot nhận thức tương tác với người.   Collect and label data Link data: Data Trên Drive VIVOS kho ngữ liệu tiếng Việt miễn phí bao gồm 15 ghi âm giọng nói chuẩn bị cho nhiệm vụ Nhận dạng giọng nói tự động Bộ tài liệu 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 kho tài liệu với hy vọng thu hút nhiều nhà khoa học để giải vấn đề nhận dạng giọng nói người Việt. Ngữ liệu nên sử dụng cho mục đích học thuật Link Dataset Training Testing Nữ 24 Nam 22 12 Tổng số mẫu 116600 760 Tổng thời gian 14h55p 45p Dữ liệu tự tạo: Training Nữ 20 Nam 20 Tổng số mẫu 5000 Tổng thời gian 6h20p  Feature engineering Trong toán speech recognize hay toán liên quan tới giọng nói thường biến đổi tín hiệu giọng nói thành dạng MFCC (Mel frequenᴄу ᴄepѕtral ᴄoeffiᴄientѕ) 1 A/D Conᴠerѕion and Pre-emphaѕiѕ  1.1 A/D Conᴠerѕion Âm dạng tín hiệu liên tục, mà máy tính làm việc với số rời rạc Ta lấy mẫu khoảng thời gian Vì liệu âm tập VIVOS có sample rate = 16000  lấy 1s lấy 16000 sample Và channel = ta thu audio.shape = (16000*sec,)  1.2 Pre-emphaѕiѕ Do đặᴄ điểm ᴄấu tạo quản ᴠà ᴄáᴄ phận phát âm nên tiếng nói ᴄủa ᴄhúng ta ᴄó đặᴄ điểm: ᴄáᴄ âm tần ѕố thấp ᴄó mứᴄ lượng ᴄao, ᴄáᴄ âm tần ѕố ᴄao lại ᴄó mứᴄ lượng thấp Trong đó, ᴄáᴄ tần ѕố ᴄao nàу ᴠẫn ᴄhứa nhiều thơng tin ᴠề âm ᴠị Vì ᴠậу ᴄhúng ta ᴄần bướᴄ pre-emphaѕiѕ để kíᴄh ᴄáᴄ tín hiệu tần ѕố ᴄao nàу lên Speᴄtrogram  2.1 Windoᴡing Thaу ᴠì biến đổi Fourier ᴄả đoạn âm dài, ta trượt ᴄửa ѕổ dọᴄ theo tín hiệu để lấу ᴄáᴄ frame rồi áp dụng DFT frame nàу ( DFT - Diѕᴄrete Fourier Tranѕform) Tốᴄ độ nói ᴄủa ᴄon người trung bình khoảng 3, từ giâу, từ khoảng 3-4 âm, âm ᴄhia thành 3-4 phần, ᴠậу giâу âm đượᴄ ᴄhia thành 36 - 40 phần, ta ᴄhọn độ rộng frame khoảng 20 - 25mѕ ᴠừa đủ rộng để bao phần âm Cáᴄ frame đượᴄ oᴠerlap lên khoảng 10mѕ để ᴄó thể ᴄapture lại ѕự thaу đổi ᴄonteхt Sử dụng Hamming ᴡindoᴡ để làm giát trị biên giảm xuống từ từ  2.2 DFT Trên frame, ta áp dụng DFT - Diѕᴄrete Fourier Tranѕform theo ᴄông thứᴄ:  Áp dụng tất ᴄả ᴄáᴄ frame, ta thu đượᴄ 1 Speᴄtrogram như hình đâу Mỗi frame ta thu đượᴄ liѕt ᴄáᴄ giá trị độ lớn (magnitude) tương ứng ᴠới tần ѕố từ 0→N0 \to N0→N Áp dụng tất ᴄả ᴄáᴄ frame, ta thu đượᴄ 1 Speᴄtrogram như hình đâу Trụᴄ ххх trụᴄ thời gian (tương ứng ᴠới thứ tự ᴄáᴄ frame), trụᴄ ууу thể dải tần ѕố từ 0→100000 \to 100000→10000 Hᴢ, giá trị magnitude tần ѕố đượᴄ thể màu ѕắᴄ Qua quan ѕát ѕpeᴄtrogram nàу, ta nhận thấу ᴄáᴄ ᴄáᴄ tần ѕố thấp thường ᴄó magnitude ᴄao, tần ѕố ᴄao thường ᴄó magnitude thấp  Tổng quan cấu trúc mạng sử dụng model CNN (Convolutional Neural Network)[1] ? Mạng CNN tập hợp lớp Convolution chồng lên sử dụng hàm nonlinear activation ReLU để kích hoạt trọng số node Mỗi lớp sau thông qua hàm kích hoạt tạo thơng tin trừu tượng cho lớp Từ giảm số lượng weight cho mơ hình Ví dụ cách hoạt động lớp tích chập: Các bước xây dựng CNN o o o o Convolution Pooling Flattening Full Connection GRU (Gated recurrent unit)[2] ?  GRU phiên LSTM với nguyên tắc hoạt động tương tự LSTM có cấu tạo đơn giản GRU kết hợp Cell state Hidden state thành 1, có input output Ngoài ra, GRU sử dụng gate Reset gate Update gate để định việc lưu trữ loại bỏ thơng tin Ngồi ra, đặc điểm chung loại RNN (Vanilla RNN, LSTM, GRU) chúng hoạt động theo chiều định (forward direction) Hay nói cách khác, mạng mang thơng tin tính tới thời điểm Tuy nhiên, nhiều toán NLP việc biết thơng tin timesteps giúp cải thiện nhiều kết output (Translation, Speech recognition, Handwritten recognition, ) Trong trường hợp sử dụng Bi-directional RNN với việc xử lý thông tin theo hai chiều (forward backward) Mô hình hoạt động Bidirectional RNN mơ tả hình đây: Ở đây,chúng ta sử dụng Vanilla RNN, LSTM GRU làm Cell cho Bi-directional RNN kết output tính cách kết hợp hai Hidden state từ forward backward direction Ngồi ra, kết hợp nhiều mạng RNN để tạo thành Multilayer RNN network với output layer trở thành input layer sau: Giới thiệu Connectionist Temporal Classification Trong nhận diện giọng nói hay nhận diện chữ viết tay, đầu câu, chưa hoàn chỉnh có ký tự lặp lại "heelllo", "toooo", hay chữ có khoảng trống (blank) "he l l oo", "t o o", Nguyên nhân dẫn tới tượng giọng nói dài (các đoạn ngân nga hát, ), giọng bị ngắt quãng, kích thước chữ viết tay lớn, nhỏ, Do đó, câu hồn chỉnh ta cần phải chỉnh lại đầu ấy, loại bỏ ký tự lặp lại khoảng trống Vấn đề gọi là alignment problem và giải CTC  Temporal Classification Gọi S là tập huấn luyện gồm mẫu từ phân phối cố nhDXìZ, ú: ã ã X = (Rm)* l mt tập gồm tất chuỗi (sequence) vectors số thực có độ dài m Z = L* tập gồm tất chuỗi có ký tự alphabet có hạn L của labels Các phần tử L* gọi là label sequences hay labellings Mỗi mẫu S bao gồm cặp chuỗi (x,z) Chuỗi mục tiêu (target sequence) z=(z1,z2, ,zU) có độ dài gần chuỗi đầu vào (input sequence) x=(x1,x2, ,xT), tức U ≤ T Mục tiêu ta dùng S để huấn luyện bộ temporal classifier h:X↦Z để phân loại các chuỗi đầu vào chưa thấy trước đó (previously unseen input sequences) cho tối thiểu hóa lượng mát (error measure) Một error measure là label error rate (LER) tính trung bình edit distance đầu dự đốn h(x) nhãn z trong tập S′ lấy từ S: Vậy, temporal classifier h là mơ hình phân loại mang tính thời gian (temporal) Và thế, ta lấy RNN làm một temporal classifier cho gần gũi (thật ta lấy model cho output theo thời gian)  Đầu CTC Network: RNN Đầu CTC Network kết lớp softmax có số unit số ký tự trong L cộng thêm ký tự trống (blank), nghĩa xác suất phân loại ký tự trong |L| + 1∣L∣+1 tại thời điểm định Như vậy, tổ hợp tất đầu theo thời gian là ZZ Dưới hình minh họa  Xác suất labelling Xác suất một labelling là tổng xác suất tất các alignment cho ra labelling đó  Xây dựng phân loại đầu phân loại là labelling có vẻ Vậy để tìm h(x)? • • Best path decoding  là kết hợp unit có xác suất cao time-step, khơng đảm bảo tìm thấy labelling Prefix search decoding (PSD): phương pháp dựa forwardbackward algorithm, có đủ thời gian, PSD ln tìm thấy labelling phù hợp nhất, số lượng prefix tối đa tăng theo hàm mũ, phức tạp nên phải áp dụng heuristic Chia liệu train validation Tạo từ vựng decode chữ thành số encode số thành chữ dựa theo layer tensorflow 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) Set thông số hàm STFT tensorflow Trích xuất đặc trưng STFT sau decode chữ thành số trả spectrogram chữ decode Spectrogram có dạng này: Label có dạng này: Với tên dataframe đưa thành file audio tương ứng với từ chuẩn hóa gộp lại thành map() lại file dataset 10.Model sử dụng 2D CNN, RNN CTC loss, hàm mặc định CTC loss là: 11.Summary 12.Hàm decode với file âm thành dự đoán hàm callback 13.Tạo checkpoint sau epoch 14.Loss cao wer tầm trung 12% - 23% Độ xác: 15.Audio dự đốn với chuẩn đầu vào single-channel, 16 bit, đuôi wave, sample rate = 16000: Text là: nên đưa chuẩn tiết kiệm chuẩn đề bạt cán 16.Audio dự đoán với đầu vào có bị rè, double-channel, 32 bit, wave, 16000Hz: Text : tận chưa đến với ví dụ 17.Em thử train thêm liệu với đầu vào bị rè âm dạng chuẩn single-channel, 16 bit, đuôi wave, 16000Hz tensorflow Nhưng mà sau lần train wer cao loss cao nên em xem lại model để train tiếp ạ:  Đánh giá trình làm Ưu điểm - Tìm hiểu thêm hàm xử lý âm tensorflow - Trải nghiệm thêm đề tài xử lý âm - Hoàn thành chuẩn chu model xử lý âm Nhược điểm - Do nhóm cịn thiếu kiến thức Deep Learning kinh nghiệm build model nên model giống với model mẫu - Thành làm chưa tốt với loss cao accuracy tới tầm 7080% - Data cịn giới hạn nhớ giới hạn GPU để train model - Phần lớn thời gian tìm hiểu học hỏi chưa thực làm đề tài trọn vẹn  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 Model_deepspeech2 [https://nvidia.github.io/OpenSeq2Seq/html/speech-recognition/deepspeech2.html] Daniel Povey and George Saon 2006 Feature and model space speaker adaptation with full covariance Gaussians In Proc Interspeech Speech Recognition – Phonetics [https://jonathan-hui.medium.com/speech-recognition-phoneticsd761ea1710c0] Feature Extraction - MFCC cho xử lý tiếng nói [https://viblo.asia/p/feature-extraction-mfcc-cho-xu-lytieng-noi-4dbZN2xmZYM] Takaaki Hori, Shinji Watanabe, Yu Zhang, William Chan Jun 2017 Advances in Joint CTC-Attention based End-to-End Speech Recognition with a Deep CNN Encoder and RNN-LM Dario Amodei, Rishita Anubhai, et al 2015 Deep Speech 2: End-to-End Speech Recognition in English and Mandarin, Nguyễn Lê Huy.2019 Giới thiệu Connectionist Temporal Classification (CTC) [https://viblo.asia/p/gioi-thieu-ve-connectionist-temporal-classification-ctc-phan-1-ORNZqj08l0n]

Ngày đăng: 19/07/2022, 10:53

Xem thêm:

w