CƠ SỞ LÝ THUY Ế T
Tổng quan về nhận dạng người nói
1.1.1 Nhận dạng người nói là gì?
Nhận dạng người nói là một hệ thống sinh trắc học, giúp xác thực danh tính người dùng dựa trên đặc điểm giọng nói riêng biệt của họ Qua hơn bốn thập kỷ phát triển, công nghệ này sử dụng các tính năng âm thanh để phân biệt giọng nói của từng cá nhân Đặc điểm tiếng nói con người chứa hai loại thông tin quan trọng.
Thông tin mức thấp trong âm thanh bao gồm các yếu tố như độ cao, trường độ, cường độ, tần số, nhịp điệu, giai điệu, quang phổ và âm formant Những đặc điểm này thường được nhận dạng bởi hệ thống nhận dạng âm thanh thông qua quá trình huấn luyện, giúp đưa ra quyết định chính xác hơn trong việc phân tích và xử lý âm thanh.
Thông tin mức cao bao gồm các yếu tố như phương ngữ, dấu nhấn trong giao tiếp, ngữ cảnh và phong cách chủ đề Những đặc điểm này thường liên quan đến khả năng tự nhiên của con người trong việc xác định danh tính của người nói.
Thông tin về cách nói không thay đổi hoàn toàn từ khi con người bắt đầu nói cho đến khi về già, nhưng chúng có tính ổn định cao trong suốt giai đoạn dài của cuộc đời Khi trưởng thành, những thói quen khi nói và đặc điểm âm thanh sẽ hình thành và duy trì tính ổn định Điều này là cơ sở khoa học quan trọng cho việc phát triển các hệ thống nhận dạng người nói.
Một hệ thống nhận dạng người nói lý tưởng cần phải xác định chính xác người nói trong mọi điều kiện môi trường Tuy nhiên, có nhiều yếu tố ảnh hưởng đến quá trình nhận dạng, dẫn đến những sai sót trong kết quả.
- Trạng thái cảm xúc của người nói Ví dụ như căng thẳng hay ép buộc…
- Vị trí đặt của thiết bị thu âm ở mỗi thời điểm ghi âm khác nhau
- Âm thanh được ghi ở môi trường không phù hợp: phòng nhiều tiếng ồn, bị ảnh hưởng bởi nhiễu
- Sử dụng kênh ghi âm, xác thực không phù hợp
- Tốc độ phát âm khi thử nghiệm khác so với dữ liệu huấn luyện
- Người thử nghiệm bị bệnh (như cảm lạnh… ảnh hưởng đến đường âm), người cao tuổi (đường âm thanh bị thay đổi theo độ tuổi)
Các nguồn nêu các lỗi xác minh dẫn đến kết quả việc nhận dạng người nói thực sự khá phức tạp
1.1.2 Các ứng dụng của nhận dạng người nói
Nhận dạng người nói là lĩnh vực ứng dụng rất nhiều trong đời sống:
- Xác minh danh tính và kiểm soát truy cập:
Truy cập ngân hàng qua điện thoại
Truy cập cơ sở dữ liệu, thông tin bí mật máy tính từ xa
Kiểm soát sử dụng điện thoại trong nhà tù khi người nhà phạm nhân tới thăm
Tìm ra tội phạm thông qua việc so khớp giọng nói
- Hệ thống bán hàng gián tiếp (lấy lại thông tin khách hàng)
Lấy được thông tin khách hàng gọi tới trung tâm
Lấy mẫu giọng nói của khách hàng qua điện thoại
Phương pháp nhận dạng người nói phụ thuộc từ khóa
Nhận dạng người nói được chia thành hai bài toán chính: nhận dạng (Identification) và phát hiện/xác minh (Detection/Verification), tùy thuộc vào ứng dụng Cả hai bài toán này đều dựa trên một cơ sở dữ liệu các mẫu tham khảo từ N người nói đã được xác định trước và sử dụng các kỹ thuật phân tích và quyết định tương tự nhau Nhận dạng người nói (Speaker Identification) là quá trình xác định danh tính của người nói trong một nhóm, dựa vào các mẫu tiếng nói đã được máy tính ghi nhận trước đó.
Xác minh người nói (Speaker Verification) là quá trình xác định xem giọng nói phát ra có phải là của người cần kiểm tra hay không Phương pháp này còn được biết đến với các tên gọi khác như xác nhận giọng nói, chứng thực, xác thực người nói và phát hiện người nói.
Xác minh người nói đơn giản hơn nhận dạng người nói, vì chỉ cần so sánh mẫu kiểm tra với mẫu tham khảo để xác định sự khớp nhau Ngược lại, nhận dạng người nói yêu cầu lựa chọn giọng nói phù hợp nhất từ N giọng đã biết, đòi hỏi thực hiện nhiều so sánh và quyết định Do đó, sai số trong nhận dạng người nói có thể cao hơn so với xác minh người nói.
Tôi mu ốn đăng nh ập hệ thống Xin chào, bạn Dương !
Tôi mu ốn đăng nh ập hệ thống
Tôi mu ốn đăng nh ập hệ thống
Xin lỗi, bạn không được hệ thống nhận dạng!
Hình 1.1 Hệ thống xác định người nói
Hệ thống xác định người nói thông qua dữ liệu tiếng nói cho phép nhận diện người dùng đã được lưu trữ Sau khi người dùng đăng nhập bằng mật khẩu tiếng nói, hệ thống sẽ kiểm tra xem người nói có trong cơ sở dữ liệu hay không Nếu đã có, hệ thống sẽ tiến hành xác thực danh tính người nói.
Ide nt if ica ti o n Sy st em
Để đăng nhập vào hệ thống, người dùng cần phải nhập đúng lời chào và đồng ý với các điều khoản Nếu thông tin không hợp lệ hoặc chưa có trong hệ thống, sẽ có thông báo cảnh báo và người dùng sẽ không được phép truy cập vào hệ thống.
Hình 1.2 Mô hình xác định người nói
Mô hình xác định người nói (Hình 1.2) mô tả quy trình huấn luyện và thử nghiệm của hệ thống nhận diện giọng nói Đầu tiên, hệ thống trích xuất đặc trưng từ dữ liệu tiếng nói Trong giai đoạn huấn luyện, mô hình cho từng người nói được tạo ra và lưu trữ trong cơ sở dữ liệu chung Khi thử nghiệm, dữ liệu tiếng nói mới sẽ được trích xuất đặc trưng và so khớp với dữ liệu trong cơ sở dữ liệu Kết quả sẽ là người nói có độ tương đồng cao nhất hoặc điểm số lớn nhất, từ đó xác định được danh tính người nói cần tìm.
Trích chọn đặc trưng Lựa chọn tốt nhất
Cơ sở dữ liệu người nói
Người nói được nhận dạng
Tính tương độ đồng của mô hình
Tôi là Tu ấn! Xin lỗi,
Hình 1.3 H ệ thống xác minh người nói
Hệ thống xác minh người nói sử dụng dữ liệu tiếng nói để kiểm tra danh tính Khi dữ liệu tiếng nói được cung cấp kèm theo tên người cần xác minh, nếu khớp, hệ thống sẽ hiển thị lời chào cùng tên Ngược lại, nếu phát hiện giả mạo, hệ thống sẽ đưa ra cảnh báo.
Hình 1.4 Mô hình xác minh người nói
V er if ica ti o n S y ste m nghi ệm Th ử
Tính tương độ đồng của mô hình người nói
Mô hình xác minh người nói trong Hình 1.4 hoạt động tương tự như mô hình đã trình bày trước đó, nhưng đơn giản hơn nhiều Trong quá trình thử nghiệm, hệ thống không cần so khớp với toàn bộ cơ sở dữ liệu tiếng nói, mà chỉ so khớp với dữ liệu của người cần kiểm tra Kết quả xác minh sẽ là Đúng hoặc Sai dựa trên sự khớp giữa giọng nói đưa vào và giọng nói của người cần kiểm tra.
Hệ thống nhận dạng người nói được phân loại thành hai loại chính: độc lập văn bản và phụ thuộc văn bản, dựa trên các ràng buộc về tín hiệu tiếng nói trong quá trình huấn luyện và kiểm tra.
Trong nhận dạng phụ thuộc văn bản, người dùng cần phát âm cụm từ đã được hệ thống xác định trước, có thể là cố định hoặc gợi ý Việc sử dụng cùng một văn bản cho cả giai đoạn huấn luyện và kiểm tra giúp nâng cao độ chính xác của nhận dạng Hệ thống này yêu cầu văn bản nói trong giai đoạn kiểm tra phải giống hoặc kết hợp với văn bản đã được sử dụng trong giai đoạn huấn luyện Luận văn này trình bày việc áp dụng mô hình phụ thuộc văn bản với các từ khóa để tiến hành huấn luyện và thử nghiệm.
Trong hệ thống nhận dạng độc lập văn bản, hệ thống không biết trước cụm từ mà người dùng sẽ nói, điều này mang lại tính linh hoạt nhưng có thể làm giảm độ chính xác Để đạt được kết quả tốt trong nhận dạng độc lập văn bản, cần thu thập nhiều dữ liệu tiếng nói hơn cho cả giai đoạn huấn luyện và kiểm tra so với hệ thống phụ thuộc văn bản.
1.2.2 Các thành phần của một hệ thống nhận dạng người nói phụ thuộc từ khóa
Cũng như một hệ nhận dạng người nói nói chung, hệ nhận dạng người nói phụ thuộc từ khóa có thành phần tổng quát như hình vẽ dưới đây:
Hình 1.5 Các thành ph ần của một hệ thống nhận dạng người nói ph ụ thuộc từ khóa
Hình 1.5 cho ta thấy các hệ thống nhận dạng người nói phụ thuộc vào từ khóa gồm các thành phần sau:
- Trích chọn đặc trưng: Tín hiệu tiếng nói đưa vào được biến đổi giọng nói thô thành những vector đặc trưng của từng người nói
- Xây dựng mô hình người nói: huấn luyện người nói dựa vào một phương pháp cụ thể
- Cơ sở dữ liệu người nói: Lưu trữ tất cả dữ liệu người nói đã được trích chọn đặc trưng vào một kho dữ liệu
Luật quyết định là quá trình xác định và đưa ra quyết định dựa trên việc so khớp và tính toán từng từ khóa Quá trình này tổng hợp các cụm từ khóa đã được kiểm tra với cơ sở dữ liệu của người nói trước đó, nhằm đưa ra kết quả chính xác trong việc nhận diện người nói trong các cuộc thử nghiệm.
Huấn luyện người nói Đặc trưng tiếng thứ 2 Đặc trưng tiếng thứ 1 Đặc trưng tiếng thứ N
Cơ sở dữ liệu người nói
1.2.3 Các giai đoạn xử lý của một hệ thống nhận dạng người nói phụ thuộc từ khóa
Hình 1.5 cho ta thấy quá trình xử lý của các hệ thống nhận dạng ng ười nói phụ thuộc vào từ khóa gồm hai giai đoạn:
Để huấn luyện hệ thống, cần ghi âm giọng nói của từng người tham gia, mỗi người sẽ thực hiện việc ghi âm theo các cụm từ khóa hoặc dãy từ khóa cụ thể.
Việc tăng cường số lượng giọng nói được đưa vào sẽ nâng cao độ chính xác trong nhận dạng, nhưng cần lưu ý rằng việc lưu trữ dữ liệu âm thanh có thể tốn nhiều dung lượng.
Trích chọn đặc trưng là quá trình chuyển đổi tín hiệu tiếng nói thực thành dạng tham số đặc trưng, nhằm cải thiện hiệu quả nhận dạng và thử nghiệm Việc này đóng vai trò quan trọng, ảnh hưởng trực tiếp đến kết quả nhận dạng Một số phương pháp phổ biến trong trích chọn đặc trưng bao gồm hệ số cepstrum tần số Mel (MFCC), hệ số cepstrum dự đoán tuyến tính (LPCC), và LPC.
Tìm hiểu về các kết quả nhận dạng người nói đã có với Tiếng Việt
1.3.1 Định danh người nói tiếng Việt sử dụng mô hình hỗn hợp Gaussian của nhóm tác giả Đinh Lê Thành, Nguyễn Quốc Linh, Trịnh Văn Loan a Cơ sở dữ liệu:
Chương trình thử nghiệm được thực hiện trên 13 người nói khác nhau với đoạn phát âm "không một hai ba bốn năm sáu bảy tám chín" Mỗi người tham gia được huấn luyện 10 lần và kiểm thử từ 3-5 lần Định dạng thu âm là 16000Hz, 16 bit, Mono, cho phép người nói huấn luyện hoặc kiểm thử từ file wav đã thu sẵn hoặc trực tiếp trong thời gian thực.
Mô hình Mel Frequency Cepstrum Coefficient (MFCC) được áp dụng trong quá trình trích chọn đặc trưng, trong khi mô hình hỗn hợp dữ liệu Gaussian được sử dụng để mô hình hóa và nhận dạng dữ liệu trong hệ thống.
Hình 1.6 H ệ thống định danh người nói sử dụng giải thuật GMM
Việc huấn luyện GMM bao gồm các bước cần thiết để xác định bộ tham số GMM cho từng người nói Bộ tham số này được tính toán dựa trên dữ liệu huấn luyện đã thu thập.
Pha huấn luyện Pha nhận dạng
Tính độ tương thích mô hình loglikehood
Mô hình có loglikehood lớn nhất được xem là kết quả định danh
Các bộ hệ số GMM đặc trưng
Các bộ hệ số GMM đặc trưng
Để đạt được độ tương đồng cao nhất, cần thực hiện 22 bước luyện tập Việc tính toán có thể được thực hiện thông qua thuật toán EM (Expectation-Maximization) Phương pháp log-tương đồng giúp xác định mức độ tương đồng giữa mẫu thử và mô hình huấn luyện, với kết quả là một điểm số thể hiện mức độ tương đồng; điểm số càng cao thì mức độ tương đồng càng lớn.
- Kết quả kiểm thử ở cấu hình 64 thành phần hỗn hợp Gaussian: 96,7%
- Kết quả kiểm thử ở cấu hình 128 thành phần hỗn hợp Gaussion: 100%
- Kết quả kiểm thử ở cấu hình 256 thành phần hỗn hợp Gaussion: 96,7%
1.3.2 Xây dựng và khảo sát độ dài từ khóa trong nhận dạng người nói phụ thuộc vào từ khóa tiếng Việt theo mô hình Markov ẩn tác giả: Ngô Minh Dũng, Đặng Văn Chuyết a Cơ sở dữ liệu:
Tập từ khóa huấn luyện là các âm tiếng Việt từ số 0 đến số 9, đó là các âm tiết: “Không”, “Một”, “Hai”, “Ba”, “Bốn”, “Năm”, “Sáu”, “Bẩy”, “Tám”, “Chín”
Cơ sở dữ liệu nghiên cứu bao gồm 140 người nói, trong đó có 61 nam và 79 nữ, với độ tuổi từ 20 đến 55, tất cả đều nói giọng Bắc bộ Mỗi người đã thực hiện 15 lần phát âm các âm tiết vào micro máy tính trong môi trường văn phòng Một chương trình ghi âm tự động đã thu tín hiệu âm thanh của từng âm tiết trong vòng 1 giây, với tần số lấy mẫu 11025 Hz, mã hóa PCM, 16 bit, mono, và lưu trữ dưới định dạng file wav riêng biệt Dữ liệu âm thanh từ 10 lần phát âm đầu tiên của mỗi người được sử dụng để huấn luyện hệ thống, trong khi 5 lần phát âm sau được dùng để kiểm tra hiệu suất nhận dạng.
Nhóm tác giả áp dụng phương pháp nhận dạng bằng mô hình HMM, lựa chọn các vector đặc trưng dựa trên độ chính xác, độ phức tạp nhận dạng và tốc độ tính toán Họ quyết định sử dụng 19 hệ số MFCC, sau khi loại bỏ hệ số đầu tiên, nhằm tối ưu hóa đặc trưng trích trọn Để xây dựng hệ thống nhận dạng, nhóm tác giả đã chọn mô hình Markov ẩn với hàm mật độ xác suất liên tục và 7 trạng thái chuyển đổi từ trái qua phải.
Trong hệ thống nhận dạng giọng nói, mỗi người nói sẽ được xây dựng một mô hình riêng biệt Trong quá trình huấn luyện, chuỗi vector đặc trưng từ 10 lần phát âm các âm tiết sẽ được sử dụng để đào tạo Để tính toán các tham số cho từng mô hình, thuật toán EM (Expectance Maximization) sẽ được áp dụng Nguyên lý hoạt động của hệ thống nhận dạng được minh họa qua hình vẽ bên dưới.
Hình 1.7 Pha nh ận dạng hệ nhận dạng người nói phụ thuộc từ khóa thay đổi
Nghiên cứu khả năng nhận dạng người nói dựa trên cơ sở dữ liệu âm tiết từ các file âm thanh khác nhau được thực hiện bằng cách sinh ra dãy số ngẫu nhiên trong miền tham số Thay vì xây dựng nhiều hệ nhận dạng phụ thuộc từ khóa, nhóm tác giả chỉ phát triển 10 hệ nhận dạng tương ứng với 10 từ khóa từ “không” đến “chín” Kết quả đầu ra của hệ thống là sự kết hợp từ 10 hệ nhận dạng này.
Hình 1.8 K ết quả khảo sát độ chính xác nhận dạng người nói phụ thuộc độ dài t ừ khóa
Chương 1 của luận văn trình bày tổng quan về bài toán nhận dạng người nói phụ thuộc từ khóa tiếng Việt, với kết quả nghiên cứu từ hai nhóm tác giả đạt độ chính xác cao, trong đó có phần thực nghiệm đạt 100% Đề tài nghiên cứu đầu tiên tập trung vào việc định danh người nói tiếng Việt qua mô hình hỗn hợp Gaussian, trong khi đề tài thứ hai khảo sát độ dài từ khóa tiếng Việt theo mô hình Markov ẩn Tác giả đề xuất một hướng nghiên cứu mới bằng cách kết hợp hai mô hình này nhằm cải thiện độ chính xác trong nhận dạng người nói phụ thuộc vào từ khóa tiếng Việt Chương tiếp theo sẽ trình bày các công cụ được sử dụng trong đề tài.
CÁC CÔNG CỤ SỬ DỤNG TRONG ĐỂ TÀI
Bộ công cụ ALIZE
ALIZE là thư viện hỗ trợ nhận dạng tự động người qua giọng nói, được phát triển dựa trên hệ thống GIVES (General Identity Verification System) có sẵn tại KTH (Kungliga Tekniska Högskolan - Viện Công nghệ Hoàng gia Thụy Điển).
Gói LIA-RAL sử dụng thư viện ALIZE, đóng vai trò là giao diện chính trong toàn bộ dự án Cả hai gói đều được cài đặt bằng ngôn ngữ lập trình C++ Frederic Wils là tác giả của phiên bản ALIZE đầu tiên, và hiện tại, ALIZE đang được bảo trì và phát triển.
Jean-Francois Bonastre, tác giả của LIA-RAL tại phòng thí nghiệm máy tính của trường đại học Avignon, Pháp
ALIZE là phần mềm miễn phí có thể tải xuống tại [địa chỉ này](http://mistral.univ-avignon.fr/download_en.html), bao gồm hai gói: ALIZE 2.0 (1.028M) và LIA – RAL2.0 (9.761M) Để sử dụng ALIZE, người dùng cần cài đặt hệ điều hành Linux hoặc sử dụng môi trường chạy lệnh UNIX như CYGWIN trên Windows CYGWIN là công cụ miễn phí có thể tải tại [đây](http://www.cygwin.com/) Trong nghiên cứu này, tác giả đã thử nghiệm trên môi trường Linux bằng cách cài đặt máy ảo VMware Workstation v9.0.0 (426M) với hệ điều hành CentOS6.3 (706.5M).
ALIZE được phát triển trong C + + theo hướng đối tượng UML Gói LIA-
RAL được xây dựng dựa trên thư viện ALIZE, do đó không thể chỉ sử dụng LIA-RAL Mặc dù ALIZE là một thư viện tổng quát, nhưng không đủ để trở thành một hệ thống xác minh người qua giọng nói LIA-RAL được sử dụng để ước tính các công việc bên trong của ALIZE, vì vậy hai gói này phải được sử dụng cùng nhau Hầu hết các hoạt động của người dùng diễn ra qua LIA-RAL, ngoại trừ bộ phân tích.
26 các tập tin cấu hình là sử dụng từ ALIZE Mã trong gói LIA-RAL được chia thành hai loại:
Thư viện tổng quát Spk-Tools cung cấp các giải thuật huấn luyện và hàm thống kê, được áp dụng cho các véc tơ đặc trưng, giúp tối ưu hóa quy trình phân tích dữ liệu.
Thứ hai, nó chứa nhiều chương trình con, được thiết kế để làm việc trong phương thức đường ống (pipeline)
Hiện tại, chưa có một khung sườn chính thức nào để triển khai hệ thống xác minh người qua giọng nói (ASV) đầy đủ Để xây dựng một chương trình hoàn chỉnh, cần phải kết nối các chương trình con, điều này đòi hỏi người dùng phải đọc tài liệu, nghiên cứu các tập tin cấu hình có sẵn và kiểm tra tính năng của từng chương trình con.
Hình 2.1 Thành ph ần của gói công cụ ALIZE Để cho phép tất cả mọi người sử dụng ALIZE, ALIZE là tập hợp của một số bộ:
- Một thư viện ở mức độ thấp (ALIZE): thư viện này chứa tất cả các chức năng cần thiết để sử dụng hỗn hợp Gaussian
- Bộ công cụ cấp cao (LIA_RAL): bộ công cụ phân chia thành các phần như sau:
- LIA_SpkTools: thư viện cấp cao
- LIA_Utils: công cụ cần thiết để xử lý tất cả các định dạng được sử dụng trong ALIZE: mô hình GMM, các thông số,
LIA_SpkDet là một bộ công cụ toàn diện phục vụ cho các nhiệm vụ của hệ thống xác thực sinh trắc học, bao gồm huấn luyện mô hình giọng nói và từ ngữ, thiết lập các thông số tiêu chuẩn hóa, cũng như tính toán điểm số thông thường.
- LIA_SpkSeg: một công cụ mới để phát hiện tiếng nói
SPro là một bộ công cụ mạnh mẽ, cung cấp các lệnh thực thi thuật toán trích chọn đặc trưng tiếng nói, hỗ trợ trong các ứng dụng nhận dạng người nói.
SPro được phát triển để hiển thị giải phân tích quang phổ và đồng thời cung cấp các trích chọn đặc trưng cổ điển cho ứng dụng tiếng nói Các lệnh chính của SPro bao gồm những tính năng quan trọng phục vụ cho việc phân tích và xử lý âm thanh.
- Hệ số cepstral (filter-bank và dự đoán tuyến tính)
- Dự đoán tuyến tính dẫn xuất tiêu biểu (dự báo và phản ánh hệ số, tỷ lệ phạm vi và những dòng cặp phổ)
Các thư viện được viết trong ANSI C, cung cấp các chức năng sau:
- Tín hiệu đầu vào dạng sóng
- Xử lý tín hiệu ở mức thấp (FFT, phân tích LPC, )
- Xử lý đặc trưng mức thấp ( CMS, chuẩn hóa sự khác biệt, …)
Thư viện không hỗ trợ các hàm trích chọn đặc trưng ở mức cao, mà thay vào đó, nó trực tiếp chuyển đổi dạng sóng thành các đặc trưng Điều này chủ yếu là do các hàm như vậy cần nhiều đối số để đảm bảo tính linh hoạt.
Spro là phần mềm tương thích với các hệ điều hành Linux, SPARC/SunOS và HP-UX Phiên bản SPro 4.0.1 có dung lượng 1.3M và có thể được tải xuống tại địa chỉ: [http://www.irisa.fr/metiss/guig/spro/spro-4.0.1/](http://www.irisa.fr/metiss/guig/spro/spro-4.0.1/).
2.1.4 Các công cụ nhận dạng người nói sử dụng SPro và ALIZE
Hình 2.2 Sơ đồ các công cụ sử dụng ALIZE trong nhận dạng người nói
Hình 2.2 mô tả các bước và công cụ liên kết tại mỗi bước, dưới đây là trình bày các bước như sau: a Trích chọn đặc trưng
Công cụ phân tích filter – bank sử dụng sfbcep trong SPro để thực hiện các đặc trưng được trích chọn Quá trình này được thực hiện thông qua câu lệnh: sfbcep [option] inputfile outputfile.
Các tùy chọn(option) như sau:
Xác định sóng đầu vào của file Định dạng hiển thị là ‘PCM16’, ‘wave’ hoặc ‘sphere’ Mặc định là: ‘PCM16’
Thiết lập sóng đầu vào tỉ lệ tần sô cho ‘PCM16’ Mặc định là 8kHz
Thiết lập đặc trưng cho các kênh Mặc định là 1
Trích chọn đặc trưng Loại bỏ khoảng lặng
Huấn luyện mô hình nền
Hu ấ n luy ệ n mô hình đích (gmm)
Trao đổi các mẫu sóng đầu vào
Thiết lập bộ đệm đầu vào kích cỡ tới n kbytes Mặc định: 10MB
Thiết lập bộ đệm đầu vào kích cỡ tới n kbytes Mặc định: 10MB
Thiết lập hệ số tiền nhấn mạnh đến f Mặc định: 0.95
Thiết lập các phân tích dài khung tới f ms Mặc định: 20.0 ms
Thiết lập khoảng thời gian giữa hai khung liên tiếp tới ms
Thiết lập số lượng đầu ra hệ số Cepstral đến n Mặc định là 12
Thêm năng lượng cho vector đặc trưng
Xác định các cửa sổ dạng sóng Cửa sổ có sẵn là ‘Hamming’, ‘Hanning',
`Blackman' hay không có gì Mặc định là của số ‘Hamming’
Thiết lập số kênh trong filter bank Mặc định là: 24
Thiết lập ràng buộc tần số thấp đến f Hz Mặc đinh: 0 Hz
Thiết lập tần số giới hạn trên đến f Hz Mặc định: Niquist
Thiết lập độ dài FFT tới n mẫu Mặc đinh: 512
Thêm các dẫn xuất đầu tiên đến các vector đặc trưng
Thêm các dẫn xuất tự thứ hai với vector đặc trưng Yêu cầu ` delta'
In thông báo và giúp các công cụ thoát
In thông tin phiên bản và thoát
Inputfile: Đầu vào là đường dẫn đến file tín hiệu âm thanh
Outputfile: Đầu ra của file âm thanh b Loại bỏ khoảng lặng
Sau khi tính toán tất cả các vector đặc trưng, bước quan trọng tiếp theo là xác định tính khả dụng của các vector đó Một phương pháp hiệu quả để phát hiện vấn đề này là so sánh với các khung có khoảng lặng Để chọn các khung tương ứng với tín hiệu, cần áp dụng một phương pháp dựa trên phân bố năng lượng của từng tín hiệu Để chuẩn hóa các hệ số năng lượng, hãy sử dụng lệnh NormFeat từ thư viện LIA SpkDet.
NormFeat [option] inputFeatureFileName inputfile là công cụ dùng để xử lý tín hiệu đầu vào liên quan đến đặc trưng, thông qua việc áp dụng các phương pháp chuẩn hóa Trong đó, inputfile là tên của file cần xử lý, có định dạng danh sách với phần mở rộng lst, và options là các tùy chọn đi kèm.
Giá trị tùy chọn được mô tả ở bảng dưới đây:
Bảng 2.1: Mô tả tùy chọn sử dụng tiêu chuẩn hóa năng lượng
Tùy chọn Giá trị Mô tả mode norm Xác định các loại tiêu chuẩn hóa( Định mức đặc trưng bình thường là phân bố gaussion
The article outlines the configuration settings for feature extraction in a file processing system It specifies the vector size as 31 on a scale of 1.0, with a feature size of 60 The settings include the load and save feature file formats, with the load feature file extension being prm and the save feature file extension as enr.prm The feature files are stored in the designated path /prm/ Additionally, the parameter writeAllFeatures is set to True, ensuring that all features from the original file are recorded correctly.
Sau đó, để chọn các khung với năng lượng cao nhất, sử dụng lệnh EnergyDetector của thư viện LIA SpkDet Câu lệnh thực hiện như sau:
EnergyDetector.exe [options] inputFeatureFileName inputfile
Bộ công cụ Sphinx3
Sphinx-3 là phiên bản nâng cấp từ Sphinx-II, được phát triển bởi trường Đại học Carnegie Mellon, chuyên về nhận dạng tiếng nói Hệ thống này bao gồm cả huấn luyện âm học và bộ giải mã Sphinx là phần mềm mã nguồn mở, hoạt động trên nền tảng Unix và được lập trình bằng ngôn ngữ C Người dùng có thể tải xuống phiên bản Sphinx 3.0.8 với dung lượng 49MB từ trang web chính thức.
To install Sphinx3, it is necessary to first install Sphinxbase You can download Sphinxbase version 0.8, which has a size of 3.3 MB, from the following link: http://sourceforge.net/projects/cmusphinx/files/sphinxbase/0.8/sphinxbase-
Các bộ giải mã s3.X mới nhất được phát triển nhằm chuyển đổi tiếng nói thành văn bản, với mục tiêu chính là nâng cao tốc độ xử lý Dưới đây là tóm tắt các tính năng nổi bật và những hạn chế của chúng.
- Thời gian nhận 5-10x để nhận dạng các công việc với bộ từ vựng lớn
- Giới hạn mô hình âm học liên tục
- Cấu trúc HMM hạn chế từ 3-5 trạng thái từ trái sang phải
- Mô hình ngôn ngữ Bigram hoặc Trigram
- Thực hiện chế độ hàng loạt hay trực tiếp từ tiếng nói trước khi ghi Gói chứa các chương trình sau:
- s3decode: The Sphinx-3 s3.2/s3.3/s3.X giải mã quá trình xử lý tập tin cesptral
- s3gausubvq: Cụm các vector để xây dựng mô hình âm thanh
- s3livedecode: giải mã trong chế độ trực tiếp
- s3livepretend: giải mã trong chế độ hàng loạt
- s3align: ràng buộc liên kết
- s3allphone: Nhận dạng âm vị
- s3astar: tìm kiếm theo giải thuật A*, tạo ra N-best
- s3dag: ứng dụng để tìm kiếm cách đường đi tốt nhất
2.2.2 Tổng quan về bộ giải mã s3.X
Bộ giải mã s3.X sử dụng thuật toán Viterbi và Heuristics, áp dụng cấu trúc tìm kiếm Lexical-Tree tương tự như Sphinx-II nhưng với cải tiến giúp tăng độ chính xác Đầu vào của bộ giải mã là tiếng nói ghi âm ở định dạng PCM thô, và kết quả nhận dạng được lưu vào một file.
- Kết quả đầu ra: Bộ giải mã cung cấp 2 kiểu đầu ra cho nhận dạng:
Giả thuyết nhận dạng là kết quả tốt nhất cho mỗi quá trình xử lý lời nói, thể hiện dưới dạng một chuỗi từ tuyến tính Nó bao gồm các thuộc tính bổ sung như phân đoạn thời gian và điểm số, giúp cải thiện độ chính xác trong nhận diện.
Lưới từ là một công cụ quan trọng trong việc nhận dạng lời nói, cho phép biểu diễn một từ từ tất cả người nói trong quá trình giải mã Nó bao gồm các thuộc tính như phân đoạn thời gian và điểm số hợp lệ của âm thanh, giúp cải thiện độ chính xác trong việc nhận diện.
Các bộ giải mã không chỉ tạo ra bản ghi chi tiết mà còn cung cấp thông tin hữu ích cho việc gỡ rối và thu thập số liệu thống kê từ thiết bị xuất chuẩn hoặc thiết bị lỗi chuẩn.
Các bộ giải mã bao gồm các chương trình tổng hợp để tạo ra một file thực thi duy nhất, thực hiện nhiệm vụ nhận dạng và đưa ra kết quả chính xác cho file đầu vào Đầu vào cần thiết bao gồm các mô hình đào tạo âm thanh, một tập file chỉ số mô hình, một mô hình ngôn ngữ, từ điển ngôn ngữ, từ điển phụ (filler) và thiết lập các tín hiệu âm thanh cần nhận dạng Dữ liệu được nhận dạng thường được gọi là dữ liệu thử nghiệm.
Tóm lại, các thành phần cung cấp để giải mã sẽ là:
Mã nguồn của bộ giải mã
Mô hình ngôn ngữ / Tập ngữ pháp hữu hạn (FSG)
Các dữ liệu thử nghiệm
Để thực hiện nhận dạng âm thanh, cần có mô hình âm thanh đã được huấn luyện và các bộ giải mã tương ứng Trong quá trình huấn luyện, việc tạo tên cho mô hình tập tin chỉ số là rất quan trọng Tập tin mô hình chỉ số giúp nhận diện các trạng thái của HMM (Hidden Markov Model) và được sử dụng bởi người huấn luyện cũng như các bộ giải mã để truy cập chính xác các thông số trạng thái Mỗi tập hợp mô hình âm thanh cần có tập tin mô hình chỉ số tương ứng để quá trình giải mã diễn ra hiệu quả.
- Giải mã có thểđược thực hiện bằng một trong hai cách:
Để xây dựng một mô hình ngôn ngữ N-gram, cần có một mẫu văn bản đủ lớn, thường được thu thập từ các nguồn kỹ thuật số như tin tức và trang web, hoặc được tạo ra thông qua việc sao chép.
39 chép dữ liệu tiếng nói Đầu ra của một mô hình ngôn ngữ có thể là một sự kết hợp của các từ trong mô hình ngôn ngữ
Sử dụng tập ngữ pháp hữu hạn (FSG)
Việc sử dụng một tập ngữ pháp hữu hạn (FSG) giúp xác định chính xác ngôn ngữ được chấp nhận bởi bộ nhận dạng giọng nói Đầu ra của FSG chỉ bao gồm những từ đã được quy định trong văn phạm, khác với mô hình ngôn ngữ N-gram, nơi mà các từ có thể được kết hợp tự do.
2.2.3 Công cụ nhận dạng tiếng nói sử dụng Sphinx3 a Tạo thư mục làm việc và cấu hình file cần thiết
Tạo thư mục để lưu trữ các file sinh ra của Sphinx3 Giả sử tên thư mục là: AnhDT Sử dụng câu lệnh như sau:
Kết quả sinh ra thư mục : “etc” Trong thư mục etc chứa 2 file: sphinx_train.cfg và feat params
Sau đó thì sửa trong thư mục “etc” các đường dẫn lưu các file cấu hình, file dữ liệu tiếng nói b Tính tham số MFCC
Để tạo ra các phân đoạn từ âm tiết, trước tiên cần trích xuất đặc trưng của file wav bằng công cụ sphinx_fe Bạn cần cung cấp các đối số phù hợp khi thực hiện lệnh sphinx_fe.
-verbose yes \ (Hiển thị tên file đầu vào)
-samprate 8000 \ (Tỷ lệ lấy mẫu)
-dither yes \ (Thờm ẵ - bớt nhiễu )
-nfilt 33 \ (số các bộ lọc)
-lowerf 133.33334 \ (độ lớn mép dưới của bộ lọc)
-upperf 3500 \ (độ lớn mép trên của bộ lọc)
-nfft 256 \ (kích cỡ của FFT)
-c docs/fileid.txt \ (Thư mục lưu FileID)
-di decoding/data \ (Thư mục lưu trữ file Wav)
-mswav yes \ (Định dạng đầu vào như Microsoft Wav )
-ei wav \ (Đầu vào mở rộng để được áp dụng cho tất cả các tập tin đầu vào) -do features \ (Thư mục lưu trữ các đặc trưng của file)
-eo mfc (Đầu ra mở rộng sẽ được áp dụng cho tất cả các tập tin đầu ra) c Đào tạo mô hình âm học
Lệnh chạy sẽ sinh ra các thư mục: bwaccumdir , logdir, model_architecture, model_parameters, qmanger, result, trees và file html cùng thư mục “etc”
Thư mục bwaccumdir: Thư mục đệm được sử dụng các thuật toán Baum-Welch để lưu trữ các kết quả trung gian
Thư mục feat: Lưu trữ các trích chọn đặc trưng
Thư mục logdir: Thư mục chứa quá trình chạy chương trình trong mỗi lần huấn luyện
Thư mục model_architecture: Chứa tất cả các file mô hình được tạo ra
Thư mục model_parameters: Chứa các tập tin nhị phân chính là các mô hình âm học HMM
Thư mục kết quả chứa thông tin về việc chạy chương trình và tính điểm cho từng từ khóa Đôi khi, âm thanh trong cơ sở dữ liệu không khớp với file danh sách (file transcription) đã tạo ra, ví dụ như file transcription ghi là “Chào các bạn” nhưng âm thanh thu được lại là “Chào chào các bạn” Quá trình huấn luyện thường phát hiện và ghi lại các lỗi này trong các file HTML hoặc file log Nếu có nhiều lỗi, có thể do sai sót trong quá trình sao chép và sắp xếp giữa mô hình âm thanh và file transcription Trong trường hợp có ít lỗi, có thể bỏ qua chúng Để chỉnh sửa cho đúng, người dùng có thể điều chỉnh trong file transcription hoặc yêu cầu hệ thống nhắc nhở bằng cách sử dụng huấn luyện forced alignment với lệnh sphinx3_align.
Sau khi trích xuất đặc trưng và huấn luyện mô hình âm học bằng công cụ sphinx3_align, cần cung cấp các đối số cần thiết để thực hiện lệnh sphinx3_align.
-hmm model_1/ \ (Thư mục lưu trữ các file mô hình: ví dụ mô hình: variance, mixture_weights, transition_matrices, mdef)
-dict marathiAgmark1500.dic \ (file từ điển)
-fdict 850spkr.filler \ (từ điển filler)
-ctl docs/fileid.txt\ (file-ids)
-insent phone.insent \ (File đầu vào transcription tương ứng để kiểm soát tập tin)
-cepdir features\ (thư mục trong đó các file đặc trưng được lưu trữ)
-phsegdir phonesegdir\ (thư mục mà bạn muốn lưu trữ các file phone- segmented)
-wdsegdir aligndir\ (Thư mục lưu trữ các phân đoạn từ)
-outsent phone.outsent\ (File đầu ra transcription chính xác với phát âm/ transcription)
TRIỂ N KHAI H Ệ TH Ố NG TH Ử NGHI Ệ M NH Ậ N D Ạ NG NGƯỜI NÓI TIẾNG VIỆT
Sơ đồ tổng quan quá trình xây dựng hệ thống nhận dạng người nói phụ thuộc từ khóa tiếng Việt
Hình 3.1 H ệ nhận dạng người nói phụ thuộc từ khóa tiếng Việt
Hệ thống nhận dạng người nói được thử nghiệm theo các bước cụ thể Đầu tiên, dữ liệu được chuẩn bị từ các file wav ghi âm qua micro với các từ khóa đã định sẵn Bộ dữ liệu này được chia thành hai phần: phần huấn luyện và phần thử nghiệm, sử dụng cho các công cụ ALIZE và Sphinx Khi chạy thử nghiệm trên ALIZE, hệ thống sẽ cung cấp điểm số (Score) cho từng người nói, trong khi Sphinx sẽ đưa ra điểm số cho từng từ khóa Để xác định người nói, hệ thống tính toán điểm tổng hợp của từng người trong cơ sở dữ liệu.
Tính điểm số của từng người nói sử dụng ALIZE
Tính điểm số của từng từ khóa sử dụng Sphinx
43 giá trị alpha thay đổi, người nói được nhận dạng ứng với người nói có điểm số lớn nhất.
Chuẩn bị dữ liệu
Chương trình đã được thử nghiệm trên 48 người nói, bao gồm 24 nam và 24 nữ, trong độ tuổi từ 13 đến 54, tất cả đều đến từ miền Bắc Việt Nam Thông tin chi tiết về các người nói được trình bày trong bảng dưới đây.
Bảng 3.1: Thông tin về dữ liệu 48 người nói
STT H ọ và tên Tu ổ i Quê quán Gi ớ i tính
1 Đỗ Thế Anh 20 Yên Mỹ - Hưng Yên Nam
2 Nguy ễn Văn Bẩ y 45 Khoái Châu - Hưng Yên Nam
3 Nguyễn Văn Cao 21 Mỹ Hào - Hưng Yên Nam
4 Vũ Công Chiến 20 Yên Mỹ - Hưng Yên Nam
5 Lê Thị Chi 23 Ân Thi - Hưng Yên Nữ
6 Đào Thu Diệp 27 Khoái Châu - Hưng Yên Nữ
7 Đỗ Th ị Dung 24 TP H ải Dương - H ải Dương N ữ
8 Phạm Thị Dung 54 Khoái Châu - Hưng Yên Nữ
9 Đào Đình Dương 14 Khoái Châu - Hưng Yên Nam
10 Phạm Ngọc Hải 45 Khoái Châu - Hưng Yên Nam
11 Đào Thị Hằng 13 Khoái Châu - Hưng Yên Nữ
12 Tr ầ n Th ị H ạ nh 25 Nam Sách - H ải Dương N ữ
13 Trần Văn Hiệp 23 Mỹ Hào - Hưng Yên Nam
14 Vũ Thị Thanh Hoa 20 Mỹ Hào - Hưng Yên Nữ
15 Nguyễn Thị Huệ 24 Kim Thành - Hải Dương Nữ
16 Phạm Mạnh Hùng 23 Duy Tiên - Hà Nam Nam
17 Vũ Khánh Hường 22 Quế Võ - Bắc Ninh Nam
18 Nguyễn Thị Huyền 22 Mỹ Hào - Hưng Yên Nữ
19 Lê Trung Huy 21 Yên M ỹ - Hưng Yên Nam
20 Lê Văn Huy 21 Yên Mỹ - Hưng Yên Nam
21 Trần Văn Khánh 21 Ân Thi - Hưng Yên Nam
22 Đào Đình Khoa 28 Khoái Châu - Hưng Yên Nam
23 Đào Đình Khỏe 23 Chí Linh - Hải Dương Nam
STT H ọ và tên Tu ổ i Quê quán Gi ớ i tính
24 Nguyễn Thế Khương 22 Gia Lâm - Hà Nội Nam
25 Phạm Trung Kiên 22 Yên Phong - Bắc Ninh Nam
26 Phạm Hồng Kì 20 Mỹ Hào - Hưng Yên Nam
27 Đào Thị Lan Anh 13 Khoái Châu - Hưng Yên Nữ
28 Phạm Thị Liên 40 Khoái Châu - Hưng Yên Nữ
29 Nguyễn Văn Minh 21 Bình Giang - Hải Dương Nam
30 Nguyễn Thị Hải Năng 30 Ba Vì - Hà Tây Nữ
31 Nguyễn Xuân Nhị 22 Mỹ Hào - Hưng Yên Nam
32 Đào Thị Quỳnh 18 Khoái Châu - Hưng Yên Nữ
33 Nguyễn Thị Quỳnh 23 Ân Thi - Hưng Yên Nữ
34 Vũ Văn Sơn 21 Văn Giang - Hưng Yên Nam
35 Nguyễn Thị Suốt 24 Văn Giang - Hưng Yên Nữ
36 Tr ầ n Th ị Tâm 24 Văn Lâm - Hưng Yên N ữ
37 Lê Trung Thành 25 Phù Cừ - Hưng Yên Nam
38 Bùi Bá Thức 24 Lương Tài - Bắc Ninh Nam
39 Nguyễn Đình Thương 23 Kinh Môn - Hải Dương Nam
40 Nguyễn Thị Thanh Thủy 21 Kim Bảng - Hà Nam Nữ
41 Ph ạ m Anh T ố 24 Văn Lâm - Hưng Yên Nam
42 Bùi Thị Huyền Trang 21 Yên Mỹ - Hưng Yên Nữ
43 Phạm Thị Trang 22 TX Hưng Yên - Hưng Yên Nữ
44 Phạm Thị Tú 23 Tiên Lữ - Hưng Yên Nữ
45 Trần Thị Vân 24 Phù Cừ - Hưng Yên Nữ
46 Lê Th ị Vui 24 Yên M ỹ - Hưng Yên N ữ
47 Nguyễn Thị Yến 24 Mỹ Hào - Hưng Yên Nữ
48 Nguyễn Thị Ngọc Yến 23 Văn Lâm - Hưng Yên Nữ
Mỗi người tham gia sẽ đọc lần lượt các từ “không một hai ba bốn năm sáu bảy tám chín” và “chín tám bẩy sáu năm bốn ba hai một” tổng cộng 15 lượt cho mỗi cụm từ Quá trình thu âm diễn ra trong các phòng kín, sử dụng mic để thu âm trực tiếp Phần mềm được sử dụng cho việc thu âm là Cool Edit Pro 2.0, với định dạng thu là 16000Hz, 16 bit, Mono.
Hình 3.2 File wav bi ểu diễn tín hiệu phát âm từ khóa 0 đến 9 của người nói
Sau khi thu âm, file âm thanh được lưu trữ dưới định dạng Wav Mỗi người tham gia được huấn luyện với 20 lần phát âm đoạn văn và trải qua quá trình kiểm thử từ 2 đến 10 lần.
Kết quả nghiên cứu đã xây dựng một cơ sở dữ liệu tiếng nói phục vụ cho việc nhận dạng người nói qua các từ khóa tiếng Việt Cơ sở dữ liệu này được lưu trữ trong file INPUT, bao gồm 470MB dữ liệu âm thanh, tương đương với 288 phút.
Mỗi người đọc sẽ có định dạng file lưu theo lượt đọc từ khóa, với 30 lượt đọc cho mỗi cá nhân Lượt đọc từ "không đến chín" được lưu theo định dạng: TenNguoiNoi_09_SoLuotDoc, ví dụ: DiepDT_09_01 đến DiepDT_09_15 Ngược lại, lượt đọc từ "chín đến không" sẽ được lưu dưới định dạng: DiepDT_90_01 đến DiepDT_90_15, với định dạng file mặc định là Wav Mỗi file tiếng nói sẽ chứa 10 âm thanh tương ứng với 10 từ khóa.
Dữ liệu được mô tả ở trên được chia thành 2 tập:
Dữ liệu huấn luyện được xây dựng từ 48 người, mỗi người có 30 file thu âm Trong số này, 20 file sẽ được sử dụng để huấn luyện, bao gồm 10 file đầu từ 0 đến 9 và 10 file đầu từ 9 đến 0.
960 files – khoảng 273MB dữ liệu – 196 phút
- Tập dữ liệu để Test: Lấy 5 file test sau của mỗi người đọc từ 0 -> 9 và 5 file test sau của mỗi người đọc từ 9 ->0 để cắt ra thử nghiệm
Mỗi file test dài được cắt ra thành 10 từ khóa, bao gồm các số từ 0 đến 9 Với 10 file test dài và 48 người nói, tổng số file test sẽ lên tới 4.800 file, mỗi file có độ dài khoảng 0.03-0.05 giây, tạo ra khoảng 66 MB dữ liệu.
Mỗi file test sẽ được cắt thành các cụm từ hai từ, với mỗi người nói thực hiện 50 file test Khi người nói đọc từ 0 đến 9, sẽ có 5 từ khóa được cắt ra: 01, 23, 45, 67, 89 Ngược lại, khi đọc từ 9 đến 0, sẽ có 5 từ khóa khác: 98, 76, 54, 32, 10 Tổng cộng, với 48 người nói, sẽ có 2.400 file test, mỗi file có độ dài khoảng 0.1-0.3 giây, tạo ra khoảng 150 MB dữ liệu.
Mỗi file test sẽ chứa các cụm từ dài 5 từ, được cắt ra từ các đoạn người nói đọc Cụ thể, khi người nói đọc từ 0 đến 9, sẽ có hai từ khóa được cắt ra là 01234 và 56789 Ngược lại, khi đọc từ 9 đến 0, hai từ khóa cắt ra sẽ là 98765 và 43210 Tổng cộng, với 48 người nói thực hiện 20 file test mỗi người, sẽ có 960 file test được tạo ra, mỗi file test có thời gian từ 0.4 đến 0.7 giây.
Tập test bao gồm 10 từ khóa, với mỗi file ghi âm từ 0 đến 9 và từ 9 đến 0 Mỗi người tham gia sẽ có 10 file test, tạo ra tổng cộng 48 người nói, dẫn đến 480 file test với thời gian mỗi file từ 11 đến 15 giây Tổng dung lượng dữ liệu đạt khoảng 160 MB.
Trong quá trình huấn luyện hoặc kiểm tra nhận dạng, chỉ cần sử dụng một số từ khóa nhất định Khi cần cắt một từ khóa để sử dụng trong chương trình, việc thực hiện thủ công sẽ tốn nhiều thời gian, đặc biệt là khi số lượng người lớn Để tiết kiệm thời gian, có thể sử dụng công cụ Praat để cắt từng từ và lưu lại dưới dạng tên file.
Praat là phần mềm nghiên cứu và phân tích ngữ âm phổ biến và dễ sử dụng, cho phép người dùng thực hiện phân tích bài phát biểu một cách miễn phí Được phát triển bởi Paul Boersma và David Weenink từ Đại học Amsterdam, Praat (nghĩa là "nói chuyện" trong tiếng Hà Lan) là công cụ lý tưởng cho các nhà nghiên cứu ngữ âm.
Phần mềm này hỗ trợ phân tích tiếng nói hiệu quả, cho phép các nhà nghiên cứu quan sát trực tiếp các tham số như tần số cơ bản (F0), cường độ, trường độ và formants trên tín hiệu nói Nó còn cung cấp các chức năng trích xuất tham số, phục vụ cho nhiều nghiên cứu khác nhau.
Praat không chỉ hỗ trợ người dùng trong việc phân tích âm thanh mà còn cung cấp khả năng lập trình các chương trình tính toán và biểu diễn tham số tự động thông qua chức năng viết script linh hoạt Bạn có thể tải Praat tại đây: http://praat.en.softonic.com/download.
3.2.1 Chuẩn bị dữ liệu cho nhận dạng bởi công cụ ALIZE a Tạo file danh sách chứa trong thư mục lst
To prepare for training and testing data, the following files are required: all.lst, all1.lst, TenNguoiNoi_train, world.lst, and world.weight Each file contains essential content that must be documented for effective data processing.
Nhận dạng người nói sử dụng ALIZE
Các bước thực hiện nhận dạng người nói sử dụng công cụ ALIZE được mô tả như hình dưới đây:
Hình 3.3 Các bước xây dựng hệ nhận dạng người nói sử dụng SPro & ALIZE
Tạo thư mục làm việc
Dò tìm năng lượng Phát hiện tiếng nói trong tín hiệu
Chuẩn hóa các tham số của tín hiệu Chuẩn hóa TrainWorldInit
Huấn luyện GMM cho từng người nói
Tính điểm số của từng người nói
Sau đây là hướng dẫn chi tiết các bước thực hiện lệnh chạy của chương trình:
3.3.1 Bước 1: Tạo thư mục làm việc
Để tổ chức công việc hiệu quả, hãy tạo các thư mục chứa các file dữ liệu cần thiết cho chương trình, bao gồm các file có tên như lst, prm, lbl, gmm, cfg, ndx và input.
“input”chứa các file wav có thể đặt cùng thư mục hoặc ngoài thư mục này
3.3.2 Bước 2: Tính tham số MFCC
Để tạo ra các vector đặc trưng từ tín hiệu tiếng nói, bạn cần sử dụng công cụ sfbcep để tính toán các tham số MFCC Trước tiên, các file wav cần được chuẩn hóa thành file prm Hãy tạo một thư mục có tên "prm" để chương trình có thể lưu trữ các file prm một cách dễ dàng.
- Đầu vào: file tiếng nói có định dạng *.wav
- Đầu ra: file prm có chứa tham số MFCC
Sử dụng câu lệnh: sfbcep -F PCM16 -f 16000 -p 19 -e -D -A input/AnhDT_09_01.wav prm/AnhDT_09_01.prm Ý nghĩa của câu lệnh như sau:
-F PCM16: sử dụng định dạng hiển thị sóng đầu vào của file là : PCM16
-f 16000: sử dụng tần số cho sóng đầu vào là: 16000F
-p 19: có hệ số Cepstral là 19
-e: sử dụng thêm năng lượng cho vector đặc trưng
-D: Thêm các dẫn xuất đầu tiên đến các vector đặc trưng
-A: Thêm các dẫn xuất thứ hai với vector đặc trưng
Kết quả : sinh ra file AnhDT_09_01.prm
3.3.3 Bước 3: Dò tìm năng lượng
- Đầu vào: file all1.lst
- Đầu ra: file enr.prm được lưu trong thư mục prm
NormFeat config /cfg/NormFeat_energy.cfg inputFeatureFilename
Kết quả : sinh ra file AnhDT_09_01.enr.prm, AnhDT_09_02.enr.prm…
3.3.4 Bước 4: Phát hiện tiếng nói trong tín hiệu
- Đầu vào: file all1.lst
- Đầu ra: file lbl được lưu trong thư mục lbl
EnergyDetector config /cfg/EnergyDetector.cfg inputFeatureFilename
/lst/all1.lst verbose true debug false
Kết quả : sinh ra file AnhDT_09_01.lbl, AnhDT_2Tu_67_4.lbl…
Nội dung của file AnhDT_2Tu_67_4.lbl:
3.3.5 Bước 5: Chuẩn hóa các tham số của tín hiệu
- Đầu vào: file all1.lst
- Đầu ra: file norm.prm được lưu trong thư mục prm
NormFeat config /cfg/NormFeat.cfg inputFeatureFilename /lst/all1.lst
Kết quả : sinh ra file AnhDT_09_01.lbl, AnhDT_2Tu_67_4.norm.prm…
- Đầu vào: file world.lst và file world.weight
- Đầu ra: file worl_init.gmm, world_initinit.gmm
TrainWorld config /cfg/TrainWorldInit.cfg inputStreamList /lst/world.lst weightStreamList /lst/world.weight outputWorldFilename world_init debug false verbose true
- Đầu vào: file world.lst và file world.weight
- Đầu ra: file world.gmm
TrainWorld config /cfg/TrainWorldFinal.cfg inputStreamList /lst/world.lst weightStreamList /lst/world.weight outputWorldFilename world inputWorldFilename world_init debug false verbose true
3.3.8 Bước 8: Huấn luyện GMM cho từng người nói Đầu vào: file TenNguoiNoi.ndx Đầu ra: file TenNguoiNoi_gmm.gmm
TrainTarget config /cfg/target_dc.cfg targetIdList /ndx/AnhDT.ndx inputWorldFilename world debug false verbose true
Kết quả : sinh ra file AnhDT_gmm, BayNVN_gmm, CaoNV_gmm,
3.3.9 Bước 9: Nhận dạng người nói
- Đầu và: file testSpeaker_TenNguoiNoi.ndx
- Đầu ra là: file TenNguoiNoi.res
ComputeTest config cfg/target_seg_male.cfg ndxFilename ndx/testSpeakerAnhDT.ndx outputFilename AnhDT.res inputWorldFilename world channelCompensation AnhDT
Kết quả : sinh ra file AnhDT.res, BayNVN.res, CaoNV.res, ChienDT.res
Ví dụ: file kết quả AnhDT.res như sau:
Mỗi file âm thanh sẽ ghi lại điểm số tương ứng cho N người nói, và người có điểm số cao nhất trong số đó chính là kết quả mà hệ thống xác định.
Nhận dạng tiếng nói sử dụng Sphinx3
Hình 3.4 Sơ đồ tổng quát xây dựng Forced alignment proces
Tạo thư mục làm việc và cấu hình các file
Cập nhật dữ liệu huấn luyện
Tính điểm số qua sphinx3 Huấn luyện mô hình âm học
Quá trình huấn luyện mô hình Sphinx3 được chia thành 4 bước, trong đó bước đầu tiên là tạo cấu trúc thư mục và các file cấu hình cần thiết Bước này sẽ cung cấp hướng dẫn chi tiết về các câu lệnh để thiết lập cấu trúc thư mục và các file cấu hình.
Bước 2: Cập nhật dữ liệu huấn luyện, trong bước này, bạn sẽ thực hiện các thao tác để cập nhật dữ liệu vào các thư mục làm việc trên máy tính, nhằm chuẩn bị cho quá trình huấn luyện hiệu quả.
+ Bước 3: Tính tham số MFCC của các file wav Bước này sẽ trình bày chi tiết các câu lệnh để tính tham số MFCC của các file wav
+ Bước 4: Huấn luyện mô hình âm học của từng từ khóa Ở bước này sẽ tạo ra mô hình các âm vị của người nói (HMM)
+ Bước 5: Tính điểm số nhận dạng tiếng nói của từng từ khóa
Và sau đây là phần trình bày chi tiết từng bước đã nêu ở trên:
3.4.1 Bước 1: Tạo cấu trúc thư mục và các file cấu hình cần thiết
Tạo thư mục Sphinx_TenNguoiNoi, có 48 người nói tương ứng với 48 thư mục Chạy lệnh: sphinxtrain -t AnhDT setup
Kết quả sinh ra thư mục : “etc” Trong thư mục etc chứa 2 file: sphinx_train.cfg và feat params
3.4.2 Bước 2: Cập nhật dữ liệu huấn luyện
Cập nhật các file tài nguyên vào đúng tên file và đường dẫn trong file cấu hình
Mở file có đường dẫn AnhDT/etc/sphinx_train.cfg và sửa như sau:
$CFG_WAVFILES_DIR = "$CFG_BASE_DIR/wav"; sửa thành:
$CFG_WAVFILES_DIR = "/home/diep/input"; Ở bước này copy lần lượt 5 file đã tạo: AnhDT.dic, AnhDT.phone, AnhDT.filler,
AnhDT_train.fileids, AnhDT_train.transcription vào thư mục “etc
3.4.3 Bước 3: Huấn luyện mô hình âm học
Sau khi đã copy đầy đủ các 5 file vào thư mục “etc” Chạy lệnh: sphinxtrain run
Chương trình sẽ tạo ra các file thư mục: bwaccumdir, feat, logdir, model_architecture, model_parameters, qmanger, result, trees cùng thư mục etc
3.4.4 Bước 4: Tính tham số MFCC của file Wav
- Đầu vào: đường dẫn file đến file wav
- Đầu ra: File mfc tương ứng
Câu lệnh thực hiện: sphinx_fe -i /home/diep/input/AnhDT_2Tu_01_1.wav -o AnhDT_2Tu_01_1.mfc
3.4.5 Bước 5: Tính điểm số từng từ khóa qua Sphinx3
- Đầu vào: Thư mục lưu trữ các mô hình HMM, và các file: test.transcription, test.fileids, file mfc, file dic,
- Đầu ra: file out, wdseg
Câu lệnh chạy như sau:
/home/diep/sphinx3/src/programs/sphinx3_align
-insent /Sphinx3_testtran/AnhDT_2Tu_01_1_test.transcription
-hmm /Sphinx_AnhDT/model_parameters/AnhDT.ci_cont
-dict /Sphinx_AnhDT/etc/AnhDT.dic
-ctl /Sphinx3_testtran/AnhDT_2Tu_01_1_test.fileids
-cepdir /mfcc -cepext mfc -wdsegdir
Nội dung trong file wdseg chính là giá trị điểm số cần tính
Ví dụ: kết quả chạy AnhDT_2Tu_01_1.wdseg chương trình như sau:
Chương trình nhận dạng người nói tích hợp bộ công cụ ALIZE và Sphinx3 cho phép lưu trữ kết quả từ các file âm thanh vào một file duy nhất.
TONGHOPAS Tác giả xây dựng bộ thử nghiệm với 4 sự thay đổi của từ khóa
Ví dụ: File tổng hợp cho 1 từ khóa với người thử nghiệm đầu tiên tên là: File TONGHOP1TUAS có nội dung như sau:
Cấu trúc file được lưu trữ bao gồm tên file wav và từ khóa đang xét, tiếp theo là 48 giá trị điểm số từ chương trình ALIZE, sau đó là 48 giá trị điểm số từ Sphinx3_align.
Với file ví dụ ở trên:
- Tên file: AnhDT_0_01.wav: có nghĩa là người tên AnhDT nói số “không” xét lần thứ 01
- 48 giá trị chạy ALIZE là: 0.75 -1.71 -1.04 -1.75 -1.18 0.29 0.26 -1.43 -1.17 - 0.18 -1.02 0.48 -0.33 -1.22 -0.93 -0.81 -1.41 0.28 -0.80 1.01 -0.54 0.09 -2.42 -
Các giá trị từ -2.19 đến 1.17 đại diện cho điểm số nhận dạng của 48 người nói khi so sánh tín hiệu tiếng nói thử nghiệm của người tên AnhDT với 48 mô hình GMM đã được huấn luyện Những giá trị này phản ánh hiệu suất nhận dạng giọng nói trong quá trình thử nghiệm.
Điểm số được lưu trữ sẽ tương ứng với từng người nói theo chỉ số quy ước trước đó Trong dãy điểm số, điểm cao nhất sẽ xác định người nói mà chương trình nhận dạng.
Các giá trị điểm số từ -3205525.00 đến 0.00 đại diện cho kết quả của 48 người nói khi thử nghiệm với 1, 2, 5 và 10 từ khóa Những điểm số này được so sánh với tín hiệu giọng nói của người tên AnhDT khi phát âm số “không” Mỗi điểm số tương ứng với một người nói cụ thể, dựa trên chỉ số đã được quy định trước trong dữ liệu HMM đã được huấn luyện Thông tin chi tiết có thể tham khảo trong phần phụ lục về CODE nhận dạng người nói tiếng Việt.
Với phương pháp lưu trữ dữ liệu thử nghiệm này, các thử nghiệm khác nhau có thể truy cập dữ liệu từ file tổng hợp, giúp chương trình tiết kiệm thời gian và tài nguyên bằng cách không cần phải chạy nhiều lần.
Nhận dạng người nói phụ thuộc từ khóa tiếng Việt
3.5.1 Nhận dạng người nói sử dụng ALIZE và Sphinx3
- P Alize : lần lượt là 48 giá trị điểm số được lưu ở các file tổng hợp là kết quả chạy qua bộ công cụ ALIZE
- alpha: giá trị thử nghiệm
- P Sphinx : lần lượt là 48 giá trị điểm số được lưu ở các file tổng hợp là kết quả chạy tính xác suất qua bộ công cụ Sphinx3
Các th ử nghiệm lần lượt được thực hiện như sau:
- Test 1: Thử nghiệm với dữ liệu lấy từ xác suất tiên nghiệm lấy từ mô hình
GMM (chạy qua bộ công cụ ALIZE ) và mô hình HMM (chạy qua bộ công cụ Sphinx) của từng người nói
Chương trình thử nghiệm sẽ xuất ra file kết quả tổng hợp, bao gồm điểm số từ bộ công cụ ALIZE và Sphinx Tiếp theo, chúng tôi sẽ tiến hành thử nghiệm với các giá trị alpha khác nhau nhằm tìm ra tỷ lệ nhận dạng người nói cao nhất theo công thức đã đề ra.
- Test 2: Thử nghiệm với dữ liệu lấy từ xác suất tiên nghiệm lấy từ mô hình
GMM (chạy qua bộ công cụ ALIZE) và xác suất hậu nghiệm lấy từ mô hình HMM (chạy qua bộ công cụ Sphinx) của từng người nói
Chương trình thử nghiệm tạo ra file kết quả tổng hợp với điểm số từ bộ công cụ ALIZE và Sphinx Hệ số alpha được chạy trong khoảng [0,1], và để tính toán, xác suất tiên nghiệm của ALIZE sẽ được nhân với xác suất hậu nghiệm của Sphinx theo công thức đã đề cập Xác suất tiên nghiệm của ALIZE là kết quả từ chương trình, trong khi giá trị xác suất hậu nghiệm của Sphinx được tính toán riêng.
= xác suất của từng từ khóa/ tổng hợp của N người nói từ khóa đó a Thử nghiệm dữ liệu lấy từ xác suất của ALIZE và Sphinx:
Ch ạy theo xác suất: pSpeakerMax = P Alize + alpha*P Sphinx
Bảng 3.2: Kết quả nhận dạng người nói thử nghiệm với Test 1: sử dụng xác suất tiên nghiệm lấy từ mô hình HMM và GMM của người nói
Tập Test Tỷ lệ nhận dạng đúng % (alpha = value)
Hình 3.5 Bi ểu đồ thể hiện kết quả nhận dạng với Test 1
Nhận xét cho thấy rằng kết quả nhận dạng người nói không thay đổi nhiều với bộ từ khóa ngắn (1-2 từ khóa) khi thay đổi giá trị alpha Tuy nhiên, với bộ từ khóa dài (5-10 từ khóa), tỷ lệ nhận dạng đạt cao hơn và có thể đạt độ chính xác 100% Khi giá trị alpha giảm xuống -9, tỷ lệ nhận dạng giảm còn 86,8% Sự gia tăng tỷ lệ nhận dạng người nói gấp đôi khi chuyển từ 1 từ khóa lên 2 từ khóa, và với 5 từ khóa trở lên, độ chính xác tuyệt đối 100% được duy trì khi giá trị alpha nhỏ.
64 b Thử nghiệm dữ liệu lấy từ xác suất tiên nghiệm của ALIZE và xác suất hậu nghiệm Sphinx
Bảng 3.3 trình bày kết quả nhận dạng người nói trong thử nghiệm Test 2, trong đó xác suất tiên nghiệm được lấy từ mô hình GMM và xác suất hậu nghiệm được lấy từ mô hình HMM cho từng người nói.
Tỷ lệ nhận dạng đúng % (với giá trị alpha=) 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Hình 3.6 Bi ểu đồ thể hiện kết quả nhận dạng với Test 2
Nhận xét từ bảng tổng hợp và biểu đồ cho thấy rằng kết quả nhận dạng người nói không có sự thay đổi đáng kể khi giá trị alpha nằm trong khoảng từ 0.0 đến 0.8.
Khi giá trị alpha tăng lên, tỷ lệ nhận dạng từ khóa giảm rõ rệt Cụ thể, với alpha=0.9, tỷ lệ nhận dạng cho 1 từ khóa giảm 3-4%, 2 từ khóa giảm khoảng 4%, 5 từ khóa giảm từ 15-22%, và 10 từ khóa giảm trên 10% Đặc biệt, khi alpha=1, tỷ lệ nhận dạng cho 1, 2, 5, và 10 từ khóa chỉ còn khoảng 1,5 đến 3,1% Điều này cho thấy rằng tỷ lệ nhận dạng có xu hướng giảm khi giá trị alpha tăng.
3.5.2 Phân tích và đánh giá kết quả a Thời gian chạy chương trình thử nghiệm:
Bảng 3.4: Kết quả tổng hợp các thử nghiệm theo thời gian
Thời gian chạy (tính theo phút)
Nhìn vào bảng thời gian chạy thử nghiệm, có thể thấy rằng kết quả của hai bài kiểm tra là tương tự nhau do sử dụng chung một file dữ liệu tổng hợp Sự khác biệt duy nhất giữa hai bài kiểm tra là công thức chạy (3.1) và (3.2) Bảng tổng hợp thời gian chạy cho thấy rằng, với 10 file dài thử nghiệm, bao gồm 5 file của 48 người nói, kết quả không có sự khác biệt đáng kể.
Khi số lượng file dữ liệu từ 48 người giảm dần từ "không" đến "chín", thời gian chạy của chương trình sẽ tăng lên Kết quả cho thấy chương trình hoạt động tối ưu hơn khi số file được tổ chức hợp lý.
Lấy giá trị nhận dạng cho ra kết quả nhận dạng tốt nhất của các chương trình nhận dạng kết hợp của ALIZE và Sphinx được bảng 3.4:
Bảng 3.5: Bảng tổng hợp kết quả nhận dạng các chương trình đã thử nghiệm
Tỷ lệ nhận dạng đúng (%)
Hình 3.7 Bi ểu đồ thể hiện kết quả nhận dạng với các thử nghiệm
Qua s ố liệu thống kê được biểu diễn bằng bảng và biểu đồ, ta có nhận xét chung như sau:
Nghiên cứu cho thấy việc nhận dạng người nói với từ khóa dài mang lại tỷ lệ chính xác cao, đạt 100% trong bài kiểm tra với 5 và 10 từ khóa Tuy nhiên, trong bài kiểm tra thứ hai, tỷ lệ này giảm nhẹ xuống khoảng 97% Khi số lượng từ khóa giảm xuống còn 2, tỷ lệ nhận dạng đạt 86,3% và 84,6% cho hai bài kiểm tra Đặc biệt, khi chỉ sử dụng 1 từ khóa, tỷ lệ nhận dạng giảm xuống dưới 40% Thực tế cho thấy thời gian nhận dạng cho mỗi từ khóa chỉ mất khoảng 0,03-0,05 giây.
1 từ khóa 2 từ khóa 5 từ khóa 10 từ khóa
Việc cải thiện độ chính xác nhận dạng là một thách thức, tuy nhiên, khi thử nghiệm với 2 từ khóa trong mỗi file wav có thời gian từ 0,1-0,3 giây, tỷ lệ nhận dạng đã tăng hơn 2 lần so với khi chỉ sử dụng 1 từ khóa Đặc biệt, khi sử dụng 5 hoặc 10 từ khóa với thời gian thử nghiệm từ 0,4 đến 11 giây cho mỗi file wav, tỷ lệ nhận dạng có thể đạt 100%.
Kết quả từ hai bài kiểm tra cho thấy sự khác biệt trong tỷ lệ nhận dạng Trong khi bài kiểm tra 2 với một từ khóa có tỷ lệ nhận dạng cao hơn 0,3%, bài kiểm tra 1 lại vượt trội hơn khi sử dụng bộ từ khóa dài từ 2-10 từ khóa nhờ vào giá trị alpha thấp hơn Bảng 3.3 cũng chỉ ra rằng thời gian nhận dạng giảm khi người nói sử dụng câu dài hơn, với tỷ lệ nhận dạng tốt hơn cho các câu có 5 và 10 từ khóa so với các câu ngắn chỉ có 1 và 2 từ khóa.