LỜI MỞ ĐẦU Trong thời đại công nghệ thông tin hiện nay, khi việc giao tiếp giữa người với máy tính luôn là vấn đề được quan tâm thì việc trao đổi thông tin bằng tiếng nói có vai trò quan trọng. Máy tính ra đời đã giúp con người giải quyết công việc nhanh gọn và hiệu quả hơn. Tuy nhiên, các máy tính ngày nay chỉ nhận thông tin từ con người qua các thiết bị như: bàn phím, chuột, bút… Mặc dù tốc độ của máy tính ngày càng được cải thiện đáng kể song tốc độ tạo lập thông tin của các thiết bị này vẫn còn thấp. Con người mong muốn máy tính ngày càng mạnh hơn, thông minh hơn, và một trong số yêu cầu đó là máy tính trong tương lai phải tương tác với người sử dụng bằng tiếng tiếng nói tự nhiên. Dây sẽ là một bước tiến lớn nhằm nâng cao sức mạnh của máy tính, đồng thời cũng tăng tốc độ truyền đạt thông tin giữa máy tính và con người. Xử lý tiếng nói trở thành một trong những lĩnh vực quan trọng trong xu hướng phát triển công nghệ của xã hội hiện nay. Đặc biệt, khi công nghệ thông tin ngày càng phát triển thì các ứng dụng xử lý tiếng nói ngày càng trở nên cấp thiết. Mục đích của những nghiên cứu trong lĩnh vực xử lý tiếng nói là làm sao cho việc tương tác giũa người và máy càng phát triển hiệu quả và tự nhiên hơn. Hiện nay trên thế giới các công nghệ xử lý tiếng nói đã phát triển, các hệ thống ứng dụng xử lý tiếng nói đã được sử dụng ở nhiều nơi, đọ chính xác của các hệ thống này ngày càng được cải thiện. Các ứng dụng của lĩnh vực xử lý tiếng nói rất phổ biến: nhận dạng tiếng nói, xác thực người nói qua giọng nói và các thành tựu của chúng được áp dụng vào nhiều lĩnh vực thực tế. Ở Việt Nam, nhận dạng tiếng nói vẫn là một lĩnh vực khá mới mẻ. Đến nay tuy đã có nhiều người nghiên cứu về nhận dạng tiếng Việt và đã đạt được một số thành tựu, nhưng nhìn chung vẫn chưa đạt được kết quả cần thiết đẻ có thể tạo ra các sản phẩm mang tính ứng dụng cao. Đề tài nghiên cứu tập trung xây dựng chương tình nhận dạng tiếng nói, từ đó xây dựng ứng dụng nhận dạng một số từ, các số cụ thể ứng dụng nhận dạng tiếng nói vào điểu khiển nút, lệnh trên một số thiết bị. Nội dung bài tập lớn này gồm các chương như sau: Chương 1: Tổng quan lý thuyết nhận dạng giọng nói Chương này giới thiệu tổng quan về nhận dạng tiếng nói, các nguyên tắc cơ bản trong nhận dạng tiếng nói. Các cách tiếp cận, quá trình nhận dạng tiếng nói. Đồng thời nêu ra những thuận lợi, khó khăn trong nhận dạng tiếng Việt. Chương 2. Thiết kế chương trình nhận dạng tiếng nói Mô hình nhận dạng tiếng nói. Nguyên lý hoạt động, trình bày thuật toán và các hàm matlab sử dụng. Chương 3. Xây dựng giao diện chương trình và hiển thị kết quả phân tích Nội dung cụ thể từng chương sẽ lần lượt được trình bày trong các phần tiếp theo của bài tập lớn. MỤC LỤC LỜI CẢM ƠN 3 LỜI MỞ ĐẦU 4 MỤC LỤC 6 DANH MỤC TỪ VIẾT TẮT 7 DANH MỤC HÌNH ẢNH 8 CHƯƠNG 1. TỔNG QUAN LÝ THUYẾT XỬ LÝ TIẾNG NÓI 1 1.1 Tổng quan về nhận dạng tiếng nói 1 1.2 Các nguyên tắc cơ bản trong nhận dạng tiếng nói 2 1.3 Các hệ thống nhận dạng tiếng nói: 2 1.4 Phương pháp MFCC 4 1.4.1 Phương pháp MFCC là gì? 4 1.4.2 Nguyên lý hoạt động 4 1.5. Học lượng tử hóa vector và hàng xóm gần nhất của K (Learning Vector Quantization and KNearest Neighbor) 10 1.5.1 Học lượng tử hóa vector (Learning Vector Quantization) 10 1.5.2 KNearest Neighbor Classifiers 13 CHƯƠNG 2. THIẾT KẾ CHƯƠNG TRÌNH NHẬN DẠNG GIỌNG NÓI 16 2.1 Mô hình nhận dạng giọng nói 16 2.2 Nguyên lý hoạt động của hệ thống nhận dạng 21 2.2 Thuật toán và các hàm sử dụng 21 CHƯƠNG 3. HIỂN THỊ PHÂN TÍCH KẾT QUẢ NHẬN DẠNG GIỌNG NÓI 25 3.1 Các bước thực hiện: 25 3.2 Kết Quả Nhận Dạng 31 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 35 TÀI LIỆU THAM KHẢO 36
TỔNG QUAN LÝ THUYẾT XỬ LÝ TIẾNG NÓI
Tổng quan về nhận dạng tiếng nói
Nhận dạng tiếng nói là hệ thống cho phép máy móc hiểu ngữ nghĩa lời nói bằng cách chuyển đổi tín hiệu âm thanh từ người nói qua Micro hoặc các thiết bị khác thành chuỗi từ Quá trình này có thể ứng dụng trong nhiều lĩnh vực như điều khiển thiết bị, nhập dữ liệu, soạn thảo văn bản bằng giọng nói, quay số điện thoại tự động, và xử lý ngôn ngữ ở mức cao hơn.
Các hệ thống nhận dạng tiếng nói có thể được phân loại như sau:
• Nhận dạng từ phát âm rời rạc /liên tục;
• Nhận dạng tiếng nói phụ thuộc người nói/không phụ thuộc người nói;
• Hệ thống nhận dạng từ điển cỡ nhỏ (dưới 20 từ) /từ điển cỡ lớn (hàng nghìn từ);
• Nhận dạng tiếng nói trong môi trường có nhiễu thấp/cao;
Trong hệ thống nhận dạng tiếng nói, cách phát âm rời rạc có khoảng lặng giữa các từ trong câu, trong khi hệ thống nhận dạng tiếng nói liên tục không yêu cầu điều này.
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
Hệ thống nhận dạng giọng nói bao gồm các phần tử cơ bản và có nhiều mô hình khác nhau tùy thuộc vào quy mô và phương pháp nhận dạng Hình 1.1 minh họa mô hình tổng quát của một hệ thống nhận dạng tiếng nói điển hình.
Tín hiệu tiếng nói sau khi được thu nhận và lượng tử hóa sẽ chuyển đổi thành một tập hợp các vector tham số đặc trưng, với các phân đoạn có độ dài từ 10 đến 30 ms.
Các đặc trưng này được sử dụng để so sánh hoặc tìm kiếm các từ gần nhất, dựa trên các ràng buộc về âm học, từ vựng và ngữ pháp Cơ sở dữ liệu tiếng nói đóng vai trò quan trọng trong quá trình huấn luyện, giúp mô hình hóa và phân lớp để xác định các tham số hệ thống.
Các nguyên tắc cơ bản trong nhận dạng tiếng nói
Các nghiên cứu về nhận dạng tiếng nói dựa trên ba nguyên tắc cơ bản:
Tín hiệu tiếng nói được thể hiện chính xác thông qua các giá trị phổ trong khoảng thời gian ngắn, cho phép chúng ta trích xuất đặc điểm tiếng nói từ những khoảng thời gian này Các đặc điểm này sau đó được sử dụng làm dữ liệu cho quá trình nhận dạng tiếng nói.
Nội dung của tiếng nói được chuyển hóa thành chữ viết thông qua các ký hiệu ngữ âm, giúp bảo toàn ý nghĩa của phát âm Khi chúng ta phiên âm, phát âm được thể hiện dưới dạng một chuỗi các ký hiệu ngữ âm, đảm bảo rằng thông điệp gốc vẫn được giữ nguyên.
Nhận dạng tiếng nói là quá trình nhận thức quan trọng, trong đó ngôn ngữ nói mang ý nghĩa sâu sắc Thông tin về ngữ nghĩa và suy đoán đóng vai trò then chốt, đặc biệt khi thông tin âm học không rõ ràng.
Các hệ thống nhận dạng tiếng nói
Các hệ thống nhận dạng tiếng nói được chia thành hai loại chính: nhận dạng từ rời rạc và nhận dạng từ liên tục Trong nhận dạng tiếng nói liên tục, có thể phân loại thành hai nhóm dựa trên kích thước từ điển: hệ thống với từ điển nhỏ và hệ thống với từ điển trung bình hoặc lớn.
Trong hệ thống nhận dạng từ rời rạc, các phát âm được hiểu là chỉ bao gồm một từ hoặc nhóm từ độc lập, không phụ thuộc vào ngữ cảnh Nhận dạng tiếng nói với từ rời rạc thường được áp dụng trong các chương trình điều khiển bằng câu lệnh.
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
Hệ th ốn g n hậ n d ạn g t ừ l iê n t ục
H ệ t hố ng vớ i k ích th ướ c t ừ điể n t ru ng b ìn h v à lớ n Hệ th ốn g v ới kíc h th ướ c b ộ t ừ đ iể n n hỏ H ệ t hố ng n hậ n d ạn g t ừ r ời rạ c
Hệ thống nhận dạng giọng nói điều khiển, như ứng dụng quay số bằng giọng nói trên điện thoại di động, cho thấy rằng việc nhận diện các từ rời rạc dễ dàng hơn nhiều so với nhận diện tiếng nói liên tục Trong trường hợp nhận dạng tiếng nói liên tục, việc xác định ranh giới của các từ không phải lúc nào cũng đơn giản.
Phương pháp MFCC
1.4.1 Phương pháp MFCC là gì?
Phương pháp thứ tư MFCC (Mel-Frequency Ceptrums Coefficients).
MFCC là một cách để trích xuất các đặc trưng (feature extraction) giọng nói
(speech) thường được sử dụng trong các model nhận dạng giọng nói
(Automatic Speech Recognition) hay phân loại giọng nói (Speech
MFCC, hay Mel Frequency Cepstral Coefficients, là hệ số thu được từ biến đổi Fourier ngược (IFFT) trên phổ âm thanh đã được xử lý qua bộ lọc Mel Kết quả này giúp phân loại và nhận diện giọng nói từ các tệp âm thanh.
Nhận dạng tiếng nói là quá trình phân loại thông tin đầu vào từ tín hiệu tiếng nói thành các mẫu đã được học và lưu trữ Các mẫu này có thể là từ ngữ hoặc âm vị, và nếu chúng không thay đổi, việc nhận dạng sẽ trở nên đơn giản hơn thông qua việc so sánh dữ liệu tiếng nói cần nhận diện với các mẫu đã lưu.
Giọng nói thường được biểu diễn trong hệ tọa độ hai chiều với trục x là thời gian (ms) và trục y là biên độ Các giá trị trên trục y được tạo ra trực tiếp từ bộ thu âm, và do đó, chúng được gọi là tín hiệu giọng nói (speech signal).
Hình 1.3 Speech signal Đầu tiên, ta sẽ biến đối speech signal thành âm phổ (hay còn gọi là spectrum) bằng cách áp dụng FFT (Fast Fourier Transform)
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
Kết quả của việc biến đổi này, tức là spectrum, được biểu diễn dưới dạng hai chiều (x′,y′) với x'x′ là tần số (Hz) và y′ là cường độ (dB).
Hình 1.5 minh họa biểu diễn Spectrum dưới dạng hai chiều, trong đó các điểm màu đỏ được gọi là Formants, đại diện cho các tần số áp đảo, mang đặc tính riêng của âm thanh Đường màu đỏ trong hình biểu thị Spectral.
Envelopes Mục tiêu chính của ta là lấy được đường màu đỏ này.
Gọi spectrum là X[k] có hai thành phần là spectral envelopes H[k] và spectral
Spectral Envelope (đường biên quang phổ)
Spectral details (Chi tiết quang phổ) Để tách được H[k], ta cần phải lấy logarithm của spectrum và lấy phần ở tần số thấp (low frequency):
The human ear functions as a filter, focusing on specific parts rather than the entire spectral envelope This concept inspired the creation of the Mel-Frequency Filter, which mimics the ear's selective auditory processing.
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
Details about this filter will be discussed later After applying the filter, we will use the Inverse Fast Fourier Transform on the logarithm of the spectrum.
IFFT(log(X[k])) = IFFT(log(H[k]) + log(E[k]))
Trong đó, x[k]x[k] được gọi là cepstrum vì IFFT là nghịch đảo của FFT và cepstrum cũng là nghịch đảo của spectrum, hay chứ nhỉ.
Cepstrum bây giờ sẽ giống như Speech Signal, biểu diễn dưới dạng hai chiều
Trong lĩnh vực nhận diện âm thanh, hai cột giá trị được gọi là magnitude (y′′) và quefrency (x′′) với các đơn vị khác nhau Các hệ số MFCCs, thường được lấy từ Cepstrum, bao gồm 12 giá trị của y′′, vì các hệ số còn lại thường không có tác dụng trong các hệ thống nhận diện âm thanh.
Tóm lại, pipeline của ta sẽ là speech signal→ spectrum → mel-freq filter → cepstral.
MFCCs được hiện thực như sau:
Để máy tính có thể trích xuất được MFCCs, cần thêm một số thành phần khác vào nguyên lý hoạt động đã nêu Pipeline cơ bản sẽ bao gồm các bước cần thiết để thực hiện quá trình này.
Hình 1.8 Nguyên lý hoạt động MFCC Preemphasis
Ta sẽ áp dụng công thức sau lên speech signal: y(t) =x(t)−αx(t−1)
Có nhiều lý do để áp dụng preemphasis như:
1.Tránh vấn đề về số khi áp dụng FFT
2.Làm cân bằng tần số spectrum
3.Khuếch đại tần số cao (để lọc tần số thấp dễ hơn)
Nhưng mà preemphasis không bắt buộc sử dụng nữa vì FFT đã được cải thiện.
Speech signal ở dạng liên tục theo từng ms, do đó khó để giải quyết nên người ta sẽ chia speech signal thành các frames.
Mỗi frame có kích thước khoảng 20-40 ms và chồng lên nhau (tức là từ đầu frame sau tới cuối frame trước) khoảng 10-15 ms.
Kết quả sẽ ở dưới dạng hai chiều (x,y) với x là chiều dài khung (frame_lengh) và y là số của một khung
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
Do framing làm rời rạc hóa speech signal ta sẽ áp dụng một hàm gọi là Hamming Window để làm smooth các frames: w [ n ] = 0.54 − 0.46 cos ( N −12 πn ) (0 ≤ n ≤ N – 1)
-trong đó Nn là chiều dài khung
Fourier Transform and Power Spectrum Đây là bước ta chuyển speech signal thành spectrum, ta sẽ áp dụng công thức sau:
Trong đó NFFT bằng 256 hoặc 512, x i là frame thứ i của speech signal x.
Filter Banks Đây là bước ta áp dụng bộ lọc Mel-Frequency FIlter.
Các phương trình sau dùng để chuyển giữa Hert (f)(f) và Mel (m)(m):
Sau đây là chi tiết về bộ lọc này, đó là các phương trình sau:
The Discrete Cosine Transform (DCT) is a crucial step in converting the spectrum into cepstrum By applying DCT, which is a form of Inverse Fast Fourier Transform (IFFT), to the output of the filter banks, we can obtain Mel-frequency cepstral coefficients (MFCCs) Subsequently, we extract 12 coefficients as previously mentioned.
THIẾT KẾ CHƯƠNG TRÌNH NHẬN DẠNG GIỌNG NÓI
Mô hình nhận dạng giọng nói
Phương pháp tính toán các hệ số MFCC là một kỹ thuật trích xuất đặc trưng giọng nói phổ biến, nhờ vào hiệu quả của nó trong việc phân tích cepstral.
Nhóm SVTH: Nhóm 3 lớp: ĐH_CNKTMT1_K11 đã áp dụng thang đo MEL, một phương pháp được phát triển dựa trên cách mà tai người cảm nhận các dải tần số khác nhau.
Ở tần số thấp dưới 1000 Hz, tai người cảm nhận âm thanh một cách tuyến tính Ngược lại, ở tần số cao, độ biến thiên của âm thanh tuân theo hàm logarit Để trích xuất các đặc trưng âm học quan trọng của tiếng nói, các băng lọc tuyến tính được áp dụng cho tần số thấp và các biến thể theo hàm logarit cho tần số cao Mô hình tính toán các hệ số MFCC được mô tả trong hình dưới đây.
Hình 2.14Sơ đồ tính toán các hệ số MFCC Ý nghĩa và phương pháp xác định tham số ở các khối trong sơ đồ trên mô tả như sau:
Khối 1: Bộ lọc hiệu chỉnh (Preemphasis)
Tín hiệu tiếng nói s(n) được xử lý qua bộ lọc số bậc thấp nhằm tăng cường độ phổ đồng đều và giảm thiểu ảnh hưởng tiêu cực đến các bước xử lý tín hiệu tiếp theo Bộ lọc này thường có bậc một và được thiết kế với dạng cụ thể.
H(z) = 1- az 1- 0.9≤ a≤ 1.0 Quan hệ giữa tín hiệu ra với tín hiệu vào tuân theo phương trình:
Giá trị a thường được chọn là 0.97 s(n)-α.(n-1)
Khối 2 : Phân khung (Frame Blocking)
Trong khối tín hiệu hiệu chỉnh s(n), tín hiệu được chia thành các khung, mỗi khung có N mẫu và hai khung kề nhau lệch nhau M mẫu Khung đầu tiên chứa N mẫu, trong khi khung thứ hai bắt đầu chậm hơn khung đầu tiên M mẫu và chồng lên khung đầu tiên N-M mẫu Tương tự, khung thứ ba sẽ chậm hơn khung đầu tiên 2M mẫu.
Quá trình phân tích mẫu tiếng nói bắt đầu từ khung thứ hai M mẫu, sau đó tiếp tục chờm lên khung thứ nhất N-2M mẫu Quá trình này sẽ diễn ra liên tục cho đến khi tất cả các mẫu tiếng nói cần phân tích được đưa vào một hoặc nhiều khung.
Khối 3: Lấy cửa sổ (Windowing)
Bước tiếp theo trong xử lý tín hiệu là áp dụng cửa sổ cho từng khung riêng lẻ để giảm thiểu sự gián đoạn của tín hiệu âm thanh ở đầu và cuối mỗi khung Khi sử dụng hàm w(n) trong khoảng 0 ≤ n ≤ N-1, tín hiệu sau khi lấy cửa sổ sẽ được tính là n(k) = x(n(k)) * w(n), với điều kiện 0 ≤ n ≤ N-1 Thông thường, cửa sổ Hamming được ưa chuộng nhờ vào khả năng giảm thiểu các hiệu ứng không mong muốn.
Khối 4: Biến đổi Fourier rời rạc (FFT)
Tác dụng của FFT là chuyển đổi mỗi khung với N mẫu từ miền thời gian sang miền tần số, giúp phân tích tín hiệu hiệu quả hơn FFT là thuật toán nhanh cho phép tính toán DFT, một công cụ quan trọng trong xử lý tín hiệu.
X(k) Khối 5: Biến đổi sang thang đo Mel trên miền tần số
Một phương pháp hiệu quả để chuyển đổi sang thang mel là sử dụng băng lọc với mỗi bộ lọc có đáp ứng tần số dạng tam giác Thường thì, số lượng băng lọc được sử dụng là trên 20 băng, và tần số thường được chọn từ 0 đến Fs/2, trong đó Fs là tần số lấy mẫu của tín hiệu tiếng nói Ngoài ra, có thể áp dụng một dải tần giới hạn cho quá trình này.
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
LOFREQ và HIFREQ sẽ được sử dụng để loại bỏ các tần số không cần thiết trong quá trình xử lý âm thanh Ví dụ, khi xử lý tiếng nói qua điện thoại, có thể xác định dải tần từ LOFREQ00 đến HIFREQ400 để tối ưu hóa chất lượng âm thanh.
Tai người cảm nhận âm thanh theo thang Mel, không phải tần số tuyến tính Tần số 1 kHz ở mức 40 dB được định nghĩa là 1000 Mel Công thức gần đúng cho mối quan hệ giữa tần số ở thang Mel và thang tuyến tính được xác định như sau:
Hình 2.15 Các băng lọc tam giác theo thang tần số Mel
Một phương pháp chuyển đổi sang thang mel là sử dụng băng lọc với hơn 20 bộ lọc có đáp ứng tần số dạng tam giác Thông thường, tần số được chọn từ 0 đến Fs/2 (Fs là tần số lấy mẫu tiếng nói), nhưng cũng có thể sử dụng một dải tần từ LOFREQ đến HIFREQ để loại bỏ các tần số không cần thiết Ví dụ, trong xử lý tiếng nói qua điện thoại, dải tần có thể được giới hạn từ LOFREQ00 đến HIFREQ400 Sau khi thực hiện FFT, ta thu được phổ tín hiệu (fn), phản ánh một dãy năng lượng.
Khi áp dụng phép lọc tam giác lên dãy W(n), chúng ta thu được dãy mới W(n) Từ đó, bằng cách tính tổng các giá trị trong từng băng lọc, ta có thể xác định các hệ số Mk (với k = 1, 2, 3,…).
Khối 6: Biến đổi Cosine rời rạc (DCT)
Trong bước này, chúng ta sẽ chuyển đổi log của các giá trị về miền thời gian thông qua biến đổi Cosine rời rạc (DCT) Kết quả của phép biến đổi này là các hệ số MFCC.
Trong các ứng dụng nhận dạng tiếng nói, thường chỉ sử dụng một số giá trị đầu tiên của hệ số MFCC Cụ thể, 12 hệ số MFCC cùng với 1 hệ số năng lượng được chuẩn hóa sẽ được lấy làm tham số đặc trưng cho tín hiệu tiếng nói, tạo thành tổng cộng Q hệ số.
Khối 7: Cepstral có trọng số
Nguyên lý hoạt động của hệ thống nhận dạng
Hệ thống thu âm sử dụng các tín hiệu âm thanh đã được lưu trữ dưới dạng file mẫu để nhận dạng âm thanh bên ngoài, như giọng nói của người nói Khi âm thanh được ghi lại qua micro, hệ thống sẽ đối chiếu với các mẫu đã lưu Sau đó, âm thanh vừa thu được sẽ được phát lại để người nói kiểm tra tính chính xác của giọng nói của mình.
Sau khi so sánh âm thanh thu được với mẫu có sẵn, hệ thống sẽ tiến hành kiểm nghiệm nhận dạng Quá trình này cho phép người dùng kiểm tra bằng cách phát lại lệnh, và nếu nội dung hiển thị trên màn hình khớp với yêu cầu, điều đó có nghĩa là quá trình nhận dạng đã thành công.
Thuật toán và các hàm sử dụng
Hàm BlockFrames: Puts the signal into frames chứa tín hiệu vào khung)
Tín hiệu vào khung bao gồm các tham số như tin hiệu mẫu, số lượng mẫu trên mỗi khung (n), tín hiệu phân tích (s) và khoảng cách giữa hai khung (m) Hàm M3 = blockFrames(s, fs, m, n) sẽ tính toán chiều dài của tín hiệu (l) và số lượng khung (nbFrame) bằng cách sử dụng công thức nbFrame = floor((l - n) / m) + 1 Trong vòng lặp, các khung tín hiệu được xử lý từ 1 đến n và từ 1 đến nbFrame.
M(i, j) = s(((j - 1) * m) + i); %#ok end end h = hamming(n);
M3(:, i) = fft(M2(:, i)); %#ok end end
Hàm DISTEU Function ( khoản cách giá trị cua hai ma trận) function d = disteu(x, y)
The code snippet checks for matching dimensions between two matrices, ensuring that the number of rows in both matrices is equal It initializes a distance matrix filled with zeros and calculates the pairwise distances between columns of the first matrix and columns of the second matrix using the Euclidean distance formula The function 'mydistance' computes the distance based on the specified type, returning the square root of the sum of squared differences when the type is zero.
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11 if tipo == 1 out = sum(abs(x-y)); end
% trọng số khoảng cách if tipo == 2 pesi = zeros(size(x)); pesi(1) = 0.20; pesi(2) = 0.90; pesi(3) = 0.95; pesi(4) = 0.90; pesi(5) = 0.70; pesi(6) = 0.90; pesi(7) = 1.00; pesi(8) = 1.00; pesi(9) = 1.00; pesi(10) = 0.95; pesi(11:13) = 0.30; out = sum(abs(x-y).*pesi); end end
hàm MFCC Function function r = mfcc(s, fs) m = 100; n = 256; frame=blockFrames(s, fs, m, n); m = melfb(20, n, fs); n2 = 1 + floor(n / 2); z = m * abs(frame(1:n2, :)).^2; r = dct(log(z)); end
hàm %% VQ Vector quantization (phep lượng tử vector) function r = vqlbg(d,k) e = 1; r = mean(d, 2); dpr = 10000; for i = 1:log2(k) r = [r*(1+e), r*(1-e)]; while (1 == 1) z = disteu(d, r);
[m,ind] = min(z, [], 2); t = 0; for j = 1:2^i r(:, j) = mean(d(:, find(ind == j)), 2); %#ok x = disteu(d(:, find(ind == j)), r(:, j)) %#ok for q = 1:length(x) t = t + x(q); end end if (((dpr - t)/t) < e) break; else dpr = t;
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11 end end end
HIỂN THỊ & PHÂN TÍCH KẾT QUẢ NHẬN DẠNG GIỌNG NÓI
Các bước thực hiện
Bước 1: Chạy giao diện đã tạo.
Bước 2: Nhấn nút Sẵn Sàng để quan sát Bảng Chỉ Dẫn và thực hiện theo hướng dẫn Quá trình này sẽ ghi lại mẫu âm thanh giọng nói của bạn phục vụ cho nhận dạng Đồng thời, bên cạnh sẽ hiển thị mẫu văn bản cho lệnh âm thanh vừa thu.
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
Hình 3.17 Nhấn nút Sẵn Sàng CODE cho hàm nhập dữ liệu âm thanh vào function pushbutton1_Callback(hObject, eventdata, handles)
To record audio using MATLAB, initialize the audio recorder with a specified sample rate and bit depth Prompt the user to say "MOT" into the microphone with countdown messages displayed on the screen After a brief pause, record the audio for one second and retrieve the audio data Play back the recorded sound and save it as 'mot.wav' Finally, display an image on the user interface without axes.
Bước 3: Sau khi đã thu âm giọng nói, nhấn nút Ra Lệnh để thu âm lệnh.
Hình 3.18 Nhấn nút Ra Lệnh
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
Bước 4: Quá trình nhận dạng sẽ cho ra kết quả bằng cách hiển thị mẫu văn bản cho lệnh vừa được thu.
The code snippet provided outlines the process for checking the results of a sound recognition task using MATLAB It initializes arrays for sound file names, corresponding identifiers, and various data structures such as `fileData`, `mfccData`, `vqData`, `distM`, and `distances` A recognition threshold is set at 9, and the number of VQ points is defined as 16 The loop iterates through four sound samples, which are 'mot.wav', 'hai.wav', 'ba.wav', and 'bon.wav', facilitating the analysis and recognition of these audio files.
[fileData{i}, Fs] = audioread(fileNames{i}); % Read file data mfccData{i} = mfcc(fileData{i}, Fs vqData{i} = vqlbg(mfccData{i}, vqpoints) ; % Compute Vector Quantization end
The audio recording process begins by initializing a recorder with a specified sampling frequency and bit depth Users are prompted to speak into the microphone with countdown messages, followed by a recording of one second The recorded audio data is then processed to extract Mel-frequency cepstral coefficients (MFCCs) These coefficients are compared against predefined codebook vectors using the vector quantization method A distance matrix is calculated to assess the similarity between the recorded audio and existing samples The minimum distance is identified, allowing for the determination of the closest matching sound category.
The SVTH group from class ĐH_CNKTMT1_K11 is responsible for displaying images based on the selected index When the index is 1, the image 'mot.png' is loaded and displayed on axes1 For index 2, 'hai.png' is shown, while index 3 corresponds to 'ba.png', and index 4 displays 'bon.png' Each image is presented without axis markings to enhance visual clarity.
Kết Quả Nhận Dạng
Trong quá trình nhận dạng bằng thuật toán KNN (K-Nearest Neighbor Classifiers), các giá trị được hiển thị ngẫu nhiên dựa trên thông số khoảng cách gần nhất.
Trong quá trình thực hiện so sánh âm thanh, bốn mẫu âm thanh ngoài đã được thu lại Kết quả cho thấy mẫu tín hiệu nhận dạng đúng yêu cầu là số "một" tại cửa sổ command của trình dịch MATLAB, với khoảng cách tới âm số một (distance to một = 5.9279) là gần nhất so với các kết quả khác.
.4057, distance to ba = 9.4196, distance to bốn = 7.0224 ).
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
Trong thử nghiệm tiếp theo, bốn mẫu âm thanh ngoài được tạo ra, tuy nhiên, quá trình thu âm bị ảnh hưởng bởi các yếu tố bên ngoài Kết quả so sánh âm thanh thu được với mẫu tín hiệu yêu cầu số "ba" cho thấy khoảng cách tới âm số ba là 4.6574, không phải là kết quả gần nhất trong bốn kết quả: khoảng cách tới một là 7.2055, tới hai là 3.8264, và tới bốn là chưa được đề cập.
= 3.9498 ) Mà khoảng cách tới âm hai (distance to hai = 3.8264) là gần nhất nên hệ thông hiển thị kết quả nhận được âm hai mà không phải âm ba mà.
Kết quả từ 30 lần thực hiện lấy mẫu nhận dạng (10 lần trong môi trường lý tưởng và 20 lần trong các môi trường khác nhau như phòng kín, lớp học, và ngoài trời) cho thấy rằng sự nhận dạng bị ảnh hưởng đáng kể bởi các tạp âm.
Để đảm bảo chất lượng thu âm trong quá trình ra lệnh, cần tránh môi trường ồn ào và đảm bảo âm thanh giọng nói đủ lớn để không bị lấn át bởi các âm thanh xung quanh Ngoài ra, lệnh phải được thu âm đồng bộ với các chỉ dẫn hiển thị trên bảng.
Chỉ dẫn bới tín hiệu chỉ được thu thập trong một khoảng thời gian cụ thể; việc không thu được tín hiệu hoặc tín hiệu không rõ ràng sẽ dẫn đến kết quả nhận dạng không chính xác.
Tỷ lệ nhận dạng chính xác trong quá trình thực hiện ngẫu nhiên (trong 20 lần thực hiện): 70%
Tỷ lệ nhận dạng chính xác trong môi trường lý tưởng (trong 10 lần thực hiện ở môi trường không có tạp âm): 90%
NHÓM SVTH: NHÓM 3 LỚP: ĐH_CNKTMT1_K11
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Do quy mô và thời gian thực hiện Bài Tập Lớn có hạn, bài báo cáo chỉ tập trung vào các vấn đề cốt lõi liên quan đến nhận dạng giọng nói bằng Matlap sử dụng phương pháp MFCC và kỹ thuật VQ-KNN (vector quantization K-nearest neighbor) Việc phân tích chi tiết các yếu tố ảnh hưởng đến kết quả nhận dạng cũng bị giới hạn do thời gian Nhóm em xin đề xuất một số hướng nghiên cứu tiếp theo về nhận diện giọng nói bằng Matlap với phương pháp MFCC và VQ-KNN dựa trên các công trình nghiên cứu toàn cầu.
Nhận dạng giọng nói bằng Matlap sử dụng phương pháp MFCC
Áp dụng phương pháp có giám sát sử dụng các thuật toán VQ-KNN.
Nhận dạng giọng nói bằng Matlap phép lượng tử vector (vector quantization) một dạng của KNN (K-nearest neighbor) người láng giềng gần nhất.
Kết quả thử nghiệm cho thấy việc kết hợp tham số F0 với MFCC cải thiện đáng kể khả năng nhận dạng phương ngữ tiếng Việt so với khi chỉ sử dụng MFCC Nghiên cứu cũng xác nhận hiệu quả của mô hình hỗn hợp Gauss đa biến (GMM) trong việc nhận dạng phương ngữ Các thử nghiệm trên bộ dữ liệu VDSPEC chỉ ra rằng bộ tham số MFCC với 7 hệ số mang lại kết quả tốt nhất Những phát hiện này có thể được phát triển thêm để cải thiện hiệu suất trong các hệ thống nhận dạng tiếng Việt tự động.