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

Đồ Án tốt nghiệp xây dựng Ứng dụng chuyển giọng nói thành văn bản xử dụng wav2vec

60 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Xây dựng ứng dụng chuyển giọng nói thành văn bản xử dụng wav2vec
Tác giả Nguyễn Văn Vũ
Người hướng dẫn ThS. Vũ Duy Giang
Trường học Trường Đại học Công nghiệp Hà Nội
Chuyên ngành Khoa học máy tính
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 60
Dung lượng 1,75 MB

Cấu trúc

  • CHƯƠNG 1. GIỚI THIỆU TỔNG QUAN VỀ BÀI TOÁN (12)
    • 1.1. Giới thiệu về giọng nói (12)
    • 1.2. Tổng quan về nhận dạng giọng nói (13)
      • 1.2.1 Lịch sử phát triển của nhận dạng giọng nói (13)
      • 1.2.2 Các thuật toán và mô hình nhận dạng giọng nói hiện nay (17)
      • 1.2.3 Ứng dụng trong thực tế (23)
      • 1.2.4 Khó khăn và thách thức (24)
    • 1.3. Phân tích bài toán nhận dạng giọng nói (25)
    • 1.4. Lý do chọn đề tài (25)
  • CHƯƠNG 2. CÁC KĨ THUẬT XỬ LÝ BÀI TOÁN (26)
    • 2.1. Thuật toán giảm nhiễu Noise reduction (26)
      • 2.1.1 Giới thiệu (26)
      • 2.1.2 Cổng Nhiễu – Noise Gate (27)
      • 2.1.3 Giảm nhiễu tĩnh (27)
      • 2.1.4 Giảm nhiễu động (28)
    • 2.2. Kĩ thuật phát hiện giọng nói (Voice activity detection) (29)
    • 2.3. Hàm mất mát (Loss Function) (29)
      • 2.3.1 Định nghĩa (29)
      • 2.3.2 Hàm mất mát phân loại theo khoảng thời gian CTC (30)
      • 2.3.3 Word error rate (WER) (31)
      • 2.3.4 Character error rate (CER) (32)
  • CHƯƠNG 3. MÔ HÌNH CHUYỂN GIỌNG NÓI THÀNH VĂN BẢN (33)
    • 3.1. Giới thiệu mô hình (33)
    • 3.2. Kiến trúc mô hình (35)
    • 3.3. Học tập đối lập (36)
    • 3.4. Lượng tử hóa (36)
    • 3.5. Mặt nạ che dấu dữ liệu (39)
    • 3.6. Hàm mục tiêu (40)
    • 3.7. Tinh chỉnh mô hình (41)
    • 3.8. Mô hình ngôn ngữ N-gram (42)
    • 3.9. Tìm kiếm đầu ra của mô hình – Beam search (44)
      • 3.9.1 Tìm kiếm tham lam – Ý tưởng ngây thơ (44)
      • 3.9.2 Beam search – sử dụng xác suất có điều kiện (44)
  • CHƯƠNG 4. XÂY DỰNG ỨNG DỤNG PHẦN MỀM CHUYỂN GIỌNG NÓI THÀNH VĂN BẢN XỬ DỤNG WAV2VEC (47)
    • 4.1. Bộ dữ liệu sử dụng cho thực nghiệm (47)
    • 4.2. Mô hình sử dụng cho thực nghiệm và ứng dụngss (47)
    • 4.3. Quy trình thực hiện thực nghiệm (48)
      • 4.3.1 Tiền xử lý dữ liệu (48)
    • 4.4. Môi trường và công nghệ sử dụng (49)
      • 4.4.1 Môi trường (49)
      • 4.4.2 Flutter python (50)
    • 4.5. Xây dựng phần mềm (50)
      • 4.5.1 Tổng quan về hệ thống (50)
      • 4.5.2 Phân tích thiết kế phần mềm (52)
      • 4.5.3 Xây dựng giao diện người dùng (54)
  • KẾT LUẬN (57)
  • TÀI LIỆU THAM KHẢO (58)

Nội dung

Công nghệ nhận dạng được phát triển từ rất sớm, Giai đoạn đầu 1970 – 1980: • Mô hình Markov ẩn, trong những năm 1970, các phương pháp dựa trên mô hình này bắt đầu xuất hiện và trở thành

GIỚI THIỆU TỔNG QUAN VỀ BÀI TOÁN

Giới thiệu về giọng nói

Nhận dạng giọng nói hay còn gọi là hệ thống nhận dạng giọng nói tự động (ASR) đã được ứng dụng rộng rãi trong cuộc sống và từ lâu đã trở thành một chủ đề lớn trong nghiên cứu về trí tuệ nhân tạo, ngôn ngữ tự nhiên và xử lý giọng nói Khi có sự có mặt của học sâu, hệ thống nhận dạng giọng nói xây dựng dựa trên mạng nơ-ron đã phát triển mạnh Một lượng lớn công trình nghiên cứu tập trung vào các khía cạnh khác nhau của hệ thống dựa trên mạng nơ-ron như Tổng hợp giọng nói theo tham số thống kê được phát triển bởi Google, WaveNet, FastSpeech, … Do đó chất lượng của hệ thống nhận dạng giọng nói đã được nâng cao trong vài năm gần đây

Trước khi nói về bài toán, cần phân tích cách con người tạo ra âm thanh như thế nào Âm thanh và tiếng nói của con người được tạo ra bởi sự tương tác phức tạp của các thành phần có trong cơ thể con người Hầu hết các âm thanh lời nói bắt đầu từ hệ hô hấp, hệ thống này đẩy không khí ra khỏi phổi theo mô tả trong Hình 1.1

Hình 1.1 Cấu tạo bộ lọc nguồn tạo ra âm thanh và lời nói của con người Nguồn [1]

Theo bài báo [1], không khí đi qua khí quản và đi vào thanh quản, nơi có hai nếp cơ nhỏ, được gọi là “nếp thanh quản” Khi các nếp thanh quản được tập trung lại với nhau để tạo ra một đường dẫn khi hẹp, luồng khí khiến chúng rung theo chu kì Các rung động của dây thanh quản điều chỉnh áp suất không khí và tạo ra âm thanh tuần hoàn Các âm thanh được tạo ra, khi dây thanh quản rung, được gọi là “âm hữu thanh” Trong khi các âm mà dây thanh quản không rung là “âm vô thanh” Các đường dẫn khí phía trên thanh quản được gọi là “dây thanh quản” Các luồng không khí hỗn loạn được tạo ra tại các phần co thắt của của thanh môn và thanh quản cũng góp phần tạo ra âm thanh nguồn không theo chu kì được phân phối trên một dải tần số rộng Hình dạng của đường âm thanh và vị trí của các khớp nối (hàm, lưỡi, màng thanh quản, môi, miệng, răng, vòm miệng cứng) là yếu tố quan trọng để xác định đặc trưng âm học của tiếng nói Trạng thái của các nếp gấp thanh âm cũng như vị trí, hình dạng và kích thước của các khớp nối thay đổi theo thời gian để tạo ra âm thành khác nhau một cách tuần tự.

Tổng quan về nhận dạng giọng nói

1.2.1 Lịch sử phát triển của nhận dạng giọng nói

Nhận dạng giọng nói là công nghệ cho phép máy tính nhận dạng và chuyển đổi ngôn ngữ nói thành văn bản Công nghệ này sử dụng một số mô hình học sâu để xác định chính xác văn bản trong lời nói

Công nghệ nhận dạng được phát triển từ rất sớm,

• Mô hình Markov ẩn, trong những năm 1970, các phương pháp dựa trên mô hình này bắt đầu xuất hiện và trở thành nền tảng của hầu hết các hệ thống ASR, mô hình này là một mô hình thông kê mạnh mẽ được sử dụng để phân tích các chuỗi thời gian hoặc dữ liệu có thứ tự, cho phép mô hình hóa sự thay đổi âm thanh theo thời gian

• Dynamic Time Warping (DTW), là một kĩ thuật đo lường sự giống nhau giữa hai chuỗi tín hiệu có thể khác nhau về thời gian, tốc độ Kĩ thuật này đặc biệt hữu ích khi phân tích các chuỗi tín hiêu không đồng bộ hoặc khi cần so sánh các mẫu có thể bị nén hoặc bị giãn theo thời gian, như trong xử lý dữ liệu âm thanh Kĩ thuật này được giới thiệu lần đầu tiên vào năm

1970, DTW thực hiện điều này thông qua một ma trận khoảng cách, trong đó mỗi phần tử biểu thị khoảng cách giữa hai điểm tương ứng từ hai chuỗi tín hiệu, sau đó tìm đường đi tối ưu qua ma trận này để tối thiểu hóa tổng khoảng cách

• Dự án DAPRA, dự án này ở Mỹ đóng vai trò quan trọng trong việc phát triển công nghệ nhận dạng giọng nói tự động HARPY là một trong những dự án nổi bật, hệ thống này được phát triển vào cuối năm 1970 ở đại học Carnegie Mellon bởi nhóm nghiên cứu do Raj Reddy dẫn dắt HARPY đã đánh dấu một bước tiến lớn trong lĩnh vực nhận dạng giọng nói khi có khả năng nhận dạng khoảng 1.000 từ, một thành tựu rất đáng kể vào thời điểm đó HARPY cho phép hệ thống này không chỉ nhận dạng từ mà còn phân tích cú pháp để hiểu cấu trúc ngữ pháp của câu nói Nhờ vào khả năng này, HARPY có thể không chỉ nhận diện âm thanh mà còn có thể hiểu và phản hồi các câu nói phức tạp Chương trình HARPY và các dự án liên quan của DARPA đã đóng vai trò nền tảng cho sự phát triển của các hệ thống nhận dạng giọng nói hiện đại Những nghiên cứu và tiến bộ từ các dự án này đã giúp định hình hướng đi cho nhiều công nghệ AI hiện nay, từ các trợ lý ảo như Siri và Alexa cho đến các hệ thống dịch thuật tự động DARPA đã tạo ra môi trường thúc đẩy đổi mới trong lĩnh vực AI, dẫn đến sự ra đời của các công nghệ có khả năng hiểu và tương tác với con người thông qua ngôn ngữ tự nhiên

• Gaussian Mixture Models, là một phương pháp thống kê dùng để mô hình hóa phân phối xác suất của các đặc trưng âm thanh trong giọng nói GMM sử dụng nhiều phân phối Gaussian để biểu diễn sự phân bố của dữ liệu trong không gian âm thanh, cho phép hệ thống nhận dạng các âm vị khác nhau Sự kết hợp giữa GMM và HMM (GMM-HMM) tạo ra một hệ thống mạnh mẽ cho nhận dạng giọng nói GMM xử lý việc mô hình hóa các đặc trưng âm thanh tại một thời điểm cụ thể, trong khi HMM xử lý sự thay đổi của các đặc trưng này theo thời gian Hệ thống GMM- HMM đã trở thành tiêu chuẩn trong nhiều năm và được sử dụng rộng rãi trong các hệ thống ASR

• Mô hình ngôn ngữ n-gram, được sử dụng để mô hình hóa xác suất của một chuỗi từ trong ngữ cảnh của những từ trước đó Ví dụ, trong một mô hình 3-gram (trigram), xác suất của một từ sẽ phụ thuộc vào hai từ liền trước Điều này giúp hệ thống ASR không chỉ nhận diện chính xác các âm thanh mà còn có thể hiểu và dự đoán từ tiếp theo dựa trên ngữ cảnh, cải thiện độ chính xác trong việc nhận dạng từ và câu

• EARS, (Effective – hiệu quả, Affordable – chi phí thấp, Reusable – có thể tái sử dụng, Speech-to-Speech Translation - chuyển giọng nói thành giọng nói khác) Dự án này nhằm phát triển các công nghệ nhận dạng giọng nói và dịch ngôn ngữ hiệu quả, chính xác và có thể tái sử dụng Cải thiện độ chính xác của các hệ thống nhận diện giọng nói trong các tình huống thực tế, bao gồm việc xử lý giọng nói trong môi trường có nhiều tiếng ồn và các biến thể của ngôn ngữ Dự án EARS đã đóng góp vào sự phát triển của các công nghệ nhận diện giọng nói và dịch ngôn ngữ tự động, giúp nâng cao khả năng giao tiếp trong các môi trường đa ngôn ngữ và đa văn hóa

• GALE, (Global Autonomous Language Exploitation – khai thác ngôn ngữ tự chủ toàn cầu) Dự án GALE tập trung vào việc phát triển các công nghệ xử lý ngôn ngữ tự nhiên để khai thác thông tin từ các nguồn ngôn ngữ toàn cầu Mục tiêu chính là cải thiện khả năng thu thập, phân tích và sử dụng thông tin từ các ngôn ngữ khác nhau Dự án GALE đã góp phần vào sự phát triển của các công nghệ xử lý ngôn ngữ tự nhiên, giúp cải thiện khả năng khai thác thông tin từ các nguồn ngôn ngữ khác nhau và hỗ trợ các hoạt động quân sự và tình báo

• Vào đầu những năm 2000, người ta đã sử dụng mô hình Long short-term memory(LSTM), để có thể xử lý được những tác vụ có yêu cầu về bộ nhớ cao LSTM được huấn luyện bởi Connectionist Temporal Classification (CTC) đã có một số ứng dụng vượt trôi trong thực tế Thập niên 2010s đến nay

• Sự bùng nổ của Deep Learning và mạng nơ-ron tích chập (CNN): Với sự gia tăng sức mạnh tính toán và dữ liệu lớn, các mô hình deep learning, đặc biệt là CNN và RNN (Recurrent Neural Networks), đã trở thành lựa chọn chính trong ASR Mô hình như HMM-GMM dần bị thay thế bởi các mô hình hoàn toàn dựa trên deep learning

• Xuất hiện các trợ lý ảo: Các trợ lý ảo như Siri (Apple), Google Assistant, Amazon Alexa sử dụng công nghệ ASR tiên tiến để tương tác với người dùng

• Transformer và các mô hình như BERT: Các mô hình này giúp cải thiện khả năng hiểu ngôn ngữ tự nhiên, đóng góp vào sự phát triển mạnh mẽ của ASR Như Wav2Vec là một mô hình được phát triển bởi Facebook

AI Research (FAIR) cho nhiệm vụ nhận diện giọng nói Wav2Vec 2.0 sử dụng một mạng nơ-ron tích chập (CNN) để trích xuất các đặc trưng âm thanh từ tín hiệu sóng âm, sau đó sử dụng một mạng Transformer để mã hóa các đặc trưng này thành biểu diễn ngữ nghĩa

Bằng cách áp dụng các mô hình học sâu vào trong hệ thống ASR, thì đã giảm được tỉ lệ lỗi hơn 50% so với các mô hình không có học sâu Với sự vượt trội như vậy, nhiều hệ thống ASR có sử dụng mô hình học sâu được ra đời Các mô hình này được gọi là mô hình End-to-End (E2E) tức là một cách tiếp cận trong học máy và trí tuệ nhân tạo, nơi mà một hệ thống học để thực hiện toàn bộ quy trình của một nhiệm vụ cụ thể, từ đầu vào đến đầu ra cuối cùng, mà không cần các bước xử lý trung gian khác

1.2.2 Các thuật toán và mô hình nhận dạng giọng nói hiện nay a) Hidden Markov Models

Phân tích bài toán nhận dạng giọng nói

Bài toán nhận dạng giọng nói tự động là một bài toán đầy thách thức và quang trọng trong lĩnh vực trí tuệ nhân tạo và xử lý ngôn ngữ tự nhiên Mục tiêu của ASR là cho phép máy tính hiểu và chuyển đổi lời nói của con người thành văn bản một cách tự động, mở ra nhiều ứng dụng tiềm năng trong đời sống và công việc hàng ngày Để giải quyết bài toán này, các phương pháp học sâu, đặc biệt là sử dụng mạng nơ-ron nhân tạo, đóng vai trò then chốt Mạng nơ-ron nhân tạo có khả năng học và nhận diện mối quan hệ phức tạp giữa các đặc trưng âm thanh và văn bản, từ đó chuyển đổi âm thanh đầu vào thành các ký tự, từ và câu tương ứng

Bài toán nhận dạng giọng nói không chỉ đòi hỏi khả năng nhận diện chính xác các âm vị và từ ngữ mà còn cần phải hiểu được ngữ cảnh, ngữ pháp và thâm chí là ngữ điệu của người nói để đảm bảo độ chính xác trong kết quả đầu ra Thêm vào đó, việc nhận dạng giọng nói tự động phải đối mặt với nhiều thách thức như tiếng ồn môi trường, giọng nói đa dạng từ các vùng miến khác nhau, tốc độ nói nhanh chậm khác nhau Những yếu tố này yêu cầu hệ thống cần phải được huấn luyện với lượng dữ liệu lớn và đa dạng Ưng dụng chính của hệ thống nhận dạng trong báo cáo này được hướng đến là nhập liệu văn bản bằng giọng nói, người dùng có thể chuyển đổi lời nói thành văn bản một cách nhanh chóng.

Lý do chọn đề tài

Lý do chọn đề tài “Xây dựng ứng dụng chuyển giọng nói thành văn bản xử dụng wav2vec” là do việc ứng dụng hệ thống nhận dạng giọng nói tại Việt Nam còn phải đối mặt với nhiều thách thức, vì sự phong phú và đa dạng trong ngôn ngữ Điều này tạo ra sự phức tạp trong việc nhận dạng và xử lý giọng nói chính xác Mặc dù công nghệ này có tiềm năng lớn, đặc biệt trong việc nhập liệu văn bản bằng giọng nói nhưng hiện tại vẫn chưa được áp dụng rộng rãi, nếu có thì phải trả phí rất cao Vì vậy, để giải quyết các vấn đề trên tôi đã chọn đề tài này.

CÁC KĨ THUẬT XỬ LÝ BÀI TOÁN

Thuật toán giảm nhiễu Noise reduction

Hình 2.1 Mô tả 2 thuật toán của giảm nhiễu; Giảm nhiễu tĩnh a), giảm nhiễu động b)

Noise Reduction [5] là một thuật toán giảm nhiễu trên tín hiệu miền thời gian như giọng nói, âm sinh học và tín hiệu sinh lý Nó dựa trên phương thức gọi là cổng quang phổ là một dạng của cổng nhiễu được trình bày ở mục 2.1.2

Nó hoạt động bằng cách tính toán một biểu đồ phổ của tín hiệu ( tùy chọn là tín hiệu nhiễu ) và ước tính ngưỡng nhiễu cho từng dải tần của tín hiệu nhiễu đó Ngưỡng đó được tính toán nhằm giúp loại bỏ nhiễu dưới ngưỡng thay đổi tần số Để có thể hoạt động được Noise Reduction dựa trên 2 thuật toán đó là Stationary Noise Reduction (giữ ngưỡng nhiễu ước tính ở cùng mức trên toàn bộ tín hiệu) và Non-stationary Noise Reduction (Liên tục cập nhật ngưỡng tiếng ồn ước tính theo thời gian thực)

Việc xác định những gì cấu thành tiếng ồn trong bản ghi âm không phải là chuyện đơn giản và sẽ ảnh hưởng đến thuật toán giảm tiếng ồn nào sẽ được sử dụng Trong Hình 2.1a, giảm tiếng ồn tĩnh tác động lên tiếng ồn có cường độ và hình dạng quang phổ tĩnh theo thời gian, chẳng hạn như tiếng ù liên tục của thiết bị điện tử Giảm tiếng ồn động nhắm đến tiếng ồn nền không cố định và có thể giao động theo thời gian, giống như sự hiện diện của chiếc máy bay đang bay trên bầu trời

Hình 2.2 Mô tả hoạt động của cổng nhiễu Nguồn [6]

Cổng nhiễu – Noise Gate là một thiết bị điện tử hoặc phần mềm được sử dụng trong xử lý âm thanh để kiểm soát âm thanh không mong muốn, thường là tiếng ồn Thiết bị này hoạt động như một công tắc tự động đóng và mở cho phép các âm thanh vượt qua nó khi đạt được một ngưỡng âm lượng nhất định Khi tín hiệu âm thanh đạt đến mức ngưỡng được thiết lập thì cổng nhiễu sẽ được mở và cho phép âm thanh đi qua Khi tín hiệu giảm xuống dưới ngưỡng cổng nhiễu sẽ đóng lại và chặn tín hiệu

Giảm nhiễu tĩnh là một thách thức quan trọng trong xử lý tín hiệu âm thanh, đặc biệt trong các môi trường có mức độ nhiễu cao Phương pháp phổ biến được sử dụng để giải quyết vấn đề này đó là Cổng quang phổ [7] - một dạng thuật toán trừ phổ Phương pháp này đã được chứng minh hiệu quả trong việc giảm thiểu các nhiễu nền như tiếng gió, tiếng ồn môi trường, hoặc tiếng ồn côn trùng trong các ứng dụng thực tế [7] [8]

Nguyên lý hoạt động của phương pháp cổng quang phổ dựa trên ý tưởng rằng, đối với mỗi thành phần tần số của tín hiệu, bất kì thành phần thời gian hay tần số nào có biên độ dưới một ngưỡng xác định sẽ được loại bỏ như là một nhiễu Quá trình này bắt đầu bằng việc tính toán giá trị trung bình và độ lệch chuẩn của mỗi kênh tần số trong phổ của tín hiệu, thông qua phép biến đổi Fourier ngắn hạn (Short-time Fourier Transform) Phổ này có thể được biểu diễn dưới dạng biểu đồ phổ cung cấp cái nhìn trực quan về năng lượng tín hiệu theo thời gian và tần số

Sau khi tính toán các thông số thống kê, một ngưỡng được thiết lập cho mỗi thành phần tần số, thông thường là một mức độ nào đó trên giá trị trung bình ví dụ 3 lần độ lệch chuẩn Ngưỡng này quyết định xem một thành phần thời gian hoặc tần số trong biểu đồ phổ là tín hiệu cần thiết hay là nhiễu Tất cả các thành phần dưới ngưỡng này đều được coi là nhiễu và sẽ bị loại bỏ

Trong khi giảm nhiễu tính có thể thực hiện với mọi tín hiệu âm thanh tĩnh Thì giảm nhiễu động là xác định xem đâu là nhiễu và đâu là tín hiệu Tiếng ồn không cố định – tiếng ồn động có thể khó bị loại bỏ Một cách tiếp cận để xác định ranh giới giữa tín hiệu và nhiễu không cố định là xác định khoảng thời gian mà tín hiệu hoạt động và coi mọi thứ nằm ngoài khoảng thời gian đó là nhiễu Bất kì sự kiện âm thanh nào nằm ngoài phạm vi thời gian đó đều có thể được coi là tiếng ồn Việc đo phổ có thể mở rộng để giảm nhiễu không cố định bằng cách tính toán một cổng biến đổi dựa trên ước tính hiện tại về nhiễu nền Ước tính nền này được tính toán bằng cách sử dụng biểu đồ phổ làm mịn thời gian (sử dụng bộ lọc IIR tiến và lùi) trên thang thời gian được tham số hoa theo độ dài tín hiệu dự kiến Ưu điểm của giảm tiếng ồn động không chỉ có tiếng ồn âm thanh Khi biết thang thời gian của tín hiệu, có thể sử dụng các nguyên tắc giảm nhiễu động để loại bỏ tiếng ồn xảy ra ở các thang thời gian khác nhau.

Kĩ thuật phát hiện giọng nói (Voice activity detection)

VAD là một kĩ thuật quan trọng được sử dụng trong xử lý giọng nói Nó giúp xác định chính xác sự có mặt của giọng nói con người trong các tín hiệu âm thanh VAD đóng vai trò quan trọng trong nhiều ứng dụng như phân đoạn người nói, mã hóa giọng nói, nhận dạng giọng nói Mục đích chính của VAD là tăng cường hiệu quả của các hệ thống nhận dạng giọng nói cho phép các hệ thống này chỉ xử lý trên các âm thanh có giọng nói, vô hiệu hóa quá trình khi âm thành không có giọng nói, … Kĩ thuật VAD gồm có các giai đoạn sau

• Tính toán giá trị đặc trưng của tín hiệu thông qua một số công thức toán học

Hàm mất mát (Loss Function)

Hàm mất mát là một hàm toán học được sử dụng để đo lường sự khác nhau giữa giá trị dự đoán của mô hình và giá trị thực tế Mục tiêu của hàm mất mát là tối thiểu hóa sự khác nhau này, từ đó cung cấp cho mô hình một kết quả về chất lượng và hướng dẫn cho mô hình cải thiện về hiệu suất dự đoán của mô hình Trong học sâu, có nhiều hàm mất mát khác nhau:

• Mean Square Error: (MSE) dung để đo lường sự khác biệt giữa dự đoán và gái trị thực tế trong các bài toán hồi quy như dự đoán giá nhà, nhiệt độ, các giá trị tuyến tính, MSE = 1

• Mean Absolute Error (MAE): tương tự như MSE nhưng có thêm giá trị tuyệt đối thay vì bình phương, giúp giảm thiểu ảnh hưởng các giá trị ngoại lệ, MAE = 1

• Binary Cross Entropy: dùng để đo lường sự khác nhau giữa phân phối xác suất giữa dự đoán và giá trị thực tế trong bài toán phân loại nhị phân như email spam,

2.3.2 Hàm mất mát phân loại theo khoảng thời gian CTC

Connectionist Temporal Classification Loss được thiết kế để huấn luyện các mô hình như nhận diện giọng nói và nhận dạng chữ viết Trong thực tế khi huấn luyện mô hình thì sự liên kết giữa đầu vào và đầu ra sẽ không được biết trước, việc tìm kiếm sự liên kết này rất là khó khăn Do đó kĩ thuật CTC này được thiết kế để giải quyết vấn đề này, ánh xạ đầu vào X và đầu ra Y

Giả sử đầu vào X là một vector 𝑋 = [𝑥 1 , 𝑥 2 , … , 𝑥 𝑛 ] và đầu ra Y là một vector 𝑌 = [𝑦 1 , 𝑦 2 , … , 𝑦 𝑚 ] Việc của CTC là tìm kiếm mối liên kết giữa X và

Y Tuy nhiên, sẽ có những khó khăn như độ dài 2 vector khác nhau, không có sự đúng vị trí chính xác giữa các giá trị với nhau Nhưng CTC đã giải quyết được các vấn đề này

Hình 2.3 Mô tả các hoạt động của CTC Nguồn [9] Để làm được điều này, hàm mất mát sẽ tính toán xác suất có điều kiện p(Y | X), nghĩa là xác suất của chuỗi đầu ra Y với điều kiện đầu vào là X, điều kiện này phải có tính năng đạo hàm, vì mô hình sử dụng gradient descent để tối ưu hóa các tham số Điều này có nghĩa là các xác suất phải có khả năng thay đổi theo các tham số của mô hình để mô hình học các dự đoán tốt hơn qua mỗi lần cập nhật

WER là một phương pháp đánh giá phổ biến trong xử lý ngôn ngữ tự nhiên cũng như hệ thống nhận diện giọng nói Nó đo lường tỉ lệ lỗi giữa chuỗi văn bản được nhận dạng và chuỗi văn bản đúng WER được tính bằng tổng số từ được chèn, xóa, thay đổi chia cho tổng số từ trong chuỗi đúng Mục tiêu là tìm cách giảm WER càng thấp càng tốt Ví dụ: “Thời tiết hôm nay như thế nào” và đầu ra của mô hình là “Thời tiết như thế này” thì ở đây tỉ lệ lỗi là 42% do có 2 từ được thay thế vào đó là “hôm”, “nay” Có 1 từ được thay thế là vào là “nào” thành “này” Thật vậy công thức tính tỉ lệ lỗi từ được thể hiện trong Hình 2.4

Hình 2.4 Công thức tính Word error rate - tỉ lệ lỗi từ

Phương pháp này tương tự như Word error rate nhưng thay vì đánh giá trên từ thì phương pháp này đánh giá trên các kí tự nhận dạng giữa các chuỗi Nó cũng được tính với tổng số lượng kí tự chèn, xóa, thay đổi rồi chia cho tổng kí tự trong chuỗi đúng

Hình 2.5 Công thức tính tỉ lệ lỗi kí tự - CER

Tùy thuộc từng trường hợp sử dụng và điều kiện liên quan, tỷ lệ lỗi kí tự được sử dụng để đánh giá mức độ hiệu quả hệ thống tương ứng Các tình huống và độ phức tạp khác nhau Tuy nhiên có thể tham khảo các số liệu sau đối với các kĩ thuật đánh giá:

• Độ chính xác tốt: CER 1 – 2% (tức là độ chính xác 98 – 99%)

• Độ chính xác trung bình: CER 2 - 10%

• Độ chính xác kém : CER > 10 % (tức là độ chính xác kém hơn 90%)

MÔ HÌNH CHUYỂN GIỌNG NÓI THÀNH VĂN BẢN

Giới thiệu mô hình

Mạng nơ ron nhân tạo được hưởng lợi từ một số lượng lớn của việc gán nhãn dữ liệu huấn luyện Tuy nhiên trong nhiều cài đặt hệ thống, dữ liệu được gán nhán còn quá ít so với dữ liệu chưa được gán nhãn Hệ thống nhận dạng giọng nói yêu cầu hàng ngàn giờ dữ liệu giọng nói để có thể đạt được hiệu suất chấp nhận được Điều này thì không có sẵn trong hơn 7000 ngôn ngữ đang được sử dụng trên toàn thế giới Để một hệ thống nhận dạng giọng nói học hoàn toàn từ dữ liệu được gán nhãn không giống với việc mà con người tiếp thu ngôn ngữ Trẻ em học ngôn ngữ bằng cách lắng nghe người lớn xung quanh chúng Một quá trình đòi hỏi phải học tốt được những biểu diễn của lời nói

Trong học máy, học tự giám sát đã nổi lên như một mô hình có thể học được biểu diễn từ các dữ liệu chưa được gán nhãn và tinh chính mô hình trên dữ liệu được gán nhãn Điều này đã có một số thành công trên xử lý ngôn ngữ tự nhiên và là một lĩnh vực nghiên cứu tích cực cho thị giác máy tính Đối với mô hình wav2vec này, cách tiếp cận đó là mã hóa âm thanh giọng nói đầu vào thông qua một mạng nơ ron tích chập nhiều lớp Sau đó thực hiện che dấu các khoảng thời gian biểu diễn lời nói tiềm ẩn trong kết quả giống như việc che dấu các kí tự để dự đoán của BERT Biểu diễn tiềm ẩm này được đưa vào một mạng transformers để xây dựng các biểu diễn theo ngữ cảnh Mô hình sẽ được huấn luyện thông qua một nhiệm vụ đó là “nhiệm vụ học tập đối lập” nơi mà các đại diện tiềm ẩn thực sự của giọng nói được phân biệt khỏi những đại diện tiềm ẩn gây nhiễu Cụ thể các đại diện tiềm ẩn được mô hình tạo ra từ đoạn âm thanh gốc sau khi đi qua mạng nơ ron tích chập nhiều lớp Các đại diện tiềm ẩn gây nhiễu đó là các đại diện được chọn ngẫu nhiên từ các đoạn âm thanh khác trong bộ dữ liệu

Hình 3.1 Mô tả 2 giai đoạn huấn luyện của mô hình; Hình a là giai đoạn biểu diễn tiềm ẩn của giọng nói, Hình b là dự đoán âm vị

Về phần huấn luyện, mô hình được huấn luyện theo hai giai đoạn như mô tả trong Hình 3.1 Giai đoạn đầu được huấn luyện trên bộ dữ liệu chưa được gán nhãn bằng chế độ học tự giám sát nhằm giúp mô hình có thể hiểu và biểu diễn được các đại diện tiềm ẩn của giọng nói Giai đoạn thứ hai đó là huấn luyện trên bộ dữ liệu được gán nhãn, giai đoạn này dùng để dự đoán các từ hoặc âm vị có trọng giọng nói

Các tác giả đã huấn luyện trên tập LV-60K và tinh chình mô hình chỉ trên

10 phút dữ liệu được gán nhãn và đạt được kết quả tỷ lệ lỗi (WER) là 5.2% trên tập clean và 8.6% trên tập test Mười phút dữ liệu được gán nhãn tương ứng với 48 bản ghi có độ dài trung bình là 12,5 giây Điều này chứng tỏ rằng có thể thực hiện nhận dạng giọng nói với nguồn tài nguyên cực kì thấp bằng cách học tự giám sát trên dữ liệu chưa được gán nhãn Và nhóm tác giả đã huấn luyện mô hình trên 2 tập dữ liệu là Librispeech và LibriVox đạt được kết quả trong Hình 3.2

Hình 3.2 Kết quả huấn luyện mô hình trên 2 tập dữ liệu

Kiến trúc mô hình

Kiến trúc mô hình wav2vec gồm ba phần chính:

• Mã hóa: Phần mã hóa gồm một số các khối chứa mạng tích chập phân đoạn theo sau đó là lớp chuẩn hóa và hàm kích hoạt GELU [4] Âm thanh đầu vào dạng sóng thô - X được chuẩn hóa về giá trị trung bình là

0 và độ lệch chuẩn là 1 (phương sai đơn vị) để có được biểu diễn tiềm ẩm Z

• Biểu diễn ngữ nghĩa thông qua transformers: Đầu ra của phần mã hóa sẽ được đưa vào một mạng biểu diễn ngữ nghĩa có cấu trúc được tuân theo kiến trúc của Transformers Nhưng thay vì sử dụng thông tin vị trí, thì sử dụng một lớp tích chập dùng để lưu lại vị trí tương đối

• Đầu ra: Phần đầu ra sẽ được tính toán thông qua một phép nhân lượng tử hóa

Hình 3.3 Kiến trúc mô hình wav2vec [10]

Học tập đối lập

Ý tưởng chính của huấn luyện mô hình wav2vec tương tự như BERT đó là che dấu 1 phần của Transformers và mục đích là dự đoán biểu diễn của tiềm ẩn bị che dấu 𝑍 𝑡 Tuy nhiên đối với mô hình này, nhóm tác giả đã cải thiện ý tưởng đơn giản đó bằng phương pháp học tập đối lập

Khái niệm này trong đó đầu vào được chuyển đổi theo hai cách khác nhau Sau đó mô hình được huấn luyện để có thể nhận biết được liệu hai phép biến đổi của đầu vào có cùng một đối tượng hay không Đối với wav2vec lớp biến đổi đầu tiên là Transformers Lớp thứ 2 thực hiện bởi Lượng tử hóa Đối với mỗi một biểu diễn tiềm ẩn 𝑍 𝑡 được che dấu, mục tiêu của mô hình là có được một biểu diễn ngữ nghĩa 𝐶 𝑡 để có thể dự đoán được biểu diễn lượng tử hóa 𝑄 𝑡 trong các biểu diễn khác.

Lượng tử hóa

Lượng tử hóa trong wav2vec là một bước quan trọng trong việc chuyển đổi các âm thanh đặc trưng liên tục thành các đoạn mã (code) rời rạc Quá trình này đóng vai trò trung gian giúp mô hình có thể học được các biểu diễn âm thanh một cách hiệu quả và phù hợp với các nhiệm vụ sau đó

Sau khi đầu vào sóng thô được mã hóa và trích xuất đặc trưng, kết quả này là một chuỗi các vector đặc trưng liên tục, thường được biểu diễn dưới dạng ma trận có kích thước là T x d trong đó T là số lượng khung thời gian và d là số chiều của vector đặc trưng Để lượng tử hóa các vector đặc trưng liên tục này, wav2vec sử dụng môt cơ chế đó là Vector Quantization (VQ) Cơ chế này sử dụng một tập hợp các mã lượng tử (codebook) để ánh xạ mỗi vector đặc trưng liên tục thành một mã rời rạc

Giả sử có một tập các mã lượng tử {𝑐 1 , 𝑐 2 , … , 𝑐 𝐾 }, mỗi mã lượng tử 𝑐 𝑖 là một vector trong không gian đặc trưng 𝑅 𝑑 Mục tiêu là chọn một mã 𝑐 𝑖 từ tập mã lượng tử sao cho khoảng cách giữa vector đặc trưng z và mã 𝑐 𝑖 là nhỏ nhất Thật vậy để có thể tính toán được như vậy, nhóm tác giả đã thực hiện như sau:

Giả sử có G nhóm mã lượng tử (codebooks), mỗi nhóm có V mã lượng tử e thuộc không gian 𝑅 𝑉∗ 𝑑 𝐺 Để tao ra một biểu diễn lượng tử 𝑞 ∈ 𝑅 𝑓 , chọn một mã từ mỗi nhóm mã lượng tử và nối các vector kết quả lại với nhau Sau đó áp dụng một phép biến đổi tuyến tính từ 𝑅 𝑑 đến 𝑅 𝑓 để có được vector q Để có thể minh họa, tôi có thực hiện một ví dụ sau:

• Vector đặc trưng đầu vào: 𝑧 = [𝑧 1 , 𝑧 2 , 𝑧 3 , 𝑧 4 , 𝑧 5 , 𝑧 6 ], 𝑑 = 6

• Số lượng mã lượng tử mỗi codebooks: 𝑉 = 4

• Kích thước mỗi mã lượng tử là: 𝑑

Thực hiện ánh xạ qua các codebooks, do G = 3, nên chia z thành 3 nhóm, mỗi nhóm có kích thước là 2

Mỗi codebook chứa 4 mã lượng tử, mỗi mã lượng tử là một vector có kích thước là 2, do đó ta có:

] Để chọn ra code word nào tốt nhất từ codebooks, nhóm tác giả đã sử dụng Gumbel softmax có công thức:

Hình 3.4 Công thức tính Gumbel softmax [10]

Trong đó các thành phần của công thức:

• 𝑙 𝑔,𝑣 – Logits: đây là phần đầu ra từ bộ mã hóa đặc trưng z, biểu diễn giá trị đặc trưng cho mỗi mã lượng tử v trong codebooks thứ g Các giá trị này có thể là mức độ phù hợp của một mã lượng tử cụ thể với đặc trưng đầu vào

• 𝑛 𝑣 – Nhiễu Gumbel: được tạo ra từ hàm phân phối Gumbel, giúp làm mịn quá trình lựa chọn các mã lượng tử và cho phép quá trình này trở nên khả vi Cụ thể 𝑛 𝑣 = − log(− log(𝑢 𝑣 )) 𝑢 𝑣 là một giá trị ngẫu nhiên được lấy từ phân phối đồng đều U(0, 1) Hàm phân phối Gumbel được sử dụng để mô phỏng các giá trị nhiễu mà sau đó được thêm vào logits

• τ - Nhiệt độ: τ là một tham số không âm kiểm soát độ sắc nét của phân phối xác suất Khi τ nhỏ, phân phối sẽ trở nên sắc nét hơn, nghĩa là xác suất cao hơn sẽ tập trung vào một mã cụ thể Khi τ lớn, phân phối sẽ trở nên mềm hơn, cho phép nhiều mã có xác suất gần nhau hơn

Nhóm tác giả sử dụng Gumbel softmax là vì, nó giải quyết được vấn đề biểu diễn rời rạc hóa mà vẫn có thể thực hiện được đạo hàm, điều này rất quan trọng trong việc huấn luyện mô hình Tiếp theo đó là giải quyết vấn đề chọn mẫu ngẫu nhiên, mô hình sẽ chọn các mã lượng tử khác nhau trong huấn luyện tránh việc lặp lại các mã.

Mặt nạ che dấu dữ liệu

Phần này dùng để che dấu một tỉ lệ đầu ra của bộ mã hóa đặc trưng, hoặc các bước thời gian trươc khi đưa vào mạng biểu diễn ngữ cảnh đã đào tạo được chia sẻ giữa tất cả các bước thời gian Để che dấu biểu diễn tiềm ẩn giọng nói đầu ra bởi bộ mã hóa, lấy ngẫu nhiên giá trị p không thay đổi nhất định cho toàn bộ bước thời gian để bắt đầu vào che dấu M chuỗi thời gian liên tiếp sau đó Giả sử chọn p = 0.065 và M là 5, công đoạn che dấu được thực hiện như sau:

• Thực hiện lấy toàn bộ bước thời gian từ không gian biểu diễn tiềm ẩn lời nói Z

• Lấy mẫu thay thế giá trị p từ bước trước

• Chọn bước thời gian là chỉ số bắt đầu

• Với mỗi vòng lặp i, M chuỗi liên tiếp được che dấu tính từ chỉ số hiện tại

Hình 3.5 Khởi tạo chỉ số bắt đầu cho phần che dấu Đầu tiên khởi tạo 2 giá trị là chỉ số bắt đầu từ mỗi vector được chọn, sau đó M

= 5 bước tiếp theo sẽ bị che đi Các khoảng thời gian này có thể chồng chéo lên nhau do đó sau khi che dấu thì tổng số bước thời gian liên tiếp bị che là 8

Hình 3.6 Kết quả sau khi che dấu với M = 5

Hàm mục tiêu

Về phần hàm mục tiêu của mô hình, sẽ có tổng 2 hàm mục tiêu được hướng đến đó là hàm mất mát đối lập (contrastive loss) và hàm mất mát đa dạng (disversity loss)

Hình 3.7 Tổng của hai hàm mục tiêu đối lập và đa dạng, a là siêu tham số

Trong đó hàm mất mát tương phản (contrastive loss) thực hiện huấn luyện mô hình để dự đoán biểu diễn lượng tử hóa 𝑞 𝑡 chính xác trong số 𝐾 + 1 biểu diễn ứng viên lượng tử hóa 𝑞 ` ∈ 𝑄 𝑡 Bộ 𝑄 𝑡 bao gồm mục tiêu 𝑞 𝑡 và K nhiễu được lấy mẫu thống nhất từ các bước trong thời gian che dấu khác

Hình 3.8 Công thức tính Lm

Giá trị k là giá trị không đổi trong suốt quá trình huấn luyện và là giá trị nhiệt độ Hàm Lm tương tự như hàm softmax [4] nhưng lấy điểm tương đồng cosine thay vì điểm số giữa biểu diễn ngữ cảnh 𝑐𝑡 và biểu diễn lượng tử hóa 𝑞 Để tối ưu hóa dễ dàng hơn, −𝑙𝑜𝑔 được đặt trên phân số đó

Hàm mất mát đa dạng là một loại kỹ thuật nhằm giúp cho hàm mất mát tránh bị overfitting, nhằm tăng việc sử dụng các mã lượng tử hóa Trong bài báo nhóm tác giả đã đặt G = 2 và V = 320 Nó cung cấp 102400 cách biểu diễn lượng tử hóa có thể Tuy nhiên mô mình có thể không sử dụng hết số cách biểu diễn lượng tử hóa đó

Hình 3.9 Hàm mất mát đa dạng

Công thức trong Hình 3.10 đã dựa vào một khái niệm đó là Entropy để đo lường mức độ không chắc chắn của sự đa dạng của một phân phối sác xuất Entropy càng cao thì phân phối càng đồng đều, nghĩa là các phần tử có xác suất gần bằng nhau Công thức tính của Entropy được biểu diễn trong

Hình 3.10 Công thức tính entropy

Việc tối đa hóa entropy của phân phối softmax trung bình có nghĩa là mô hình đang cố gắng làm việc chọn các mục trong mã hóa trở nên đa dạng hơn Nếu Entropy càng cao thì điều này cho thấy rằng các mục trong codebooks được chọn một cách cân bằng và không có mục nào bị lạm dụng quá nhiều hoặc không có mục nào không được sử dụng.

Tinh chỉnh mô hình

Trong giai đoạn này, mô hình đào tạo sau đó được tinh chỉnh để nhận dạng giọng nói bằng cách thêm phép chiếu tuyến tính được khởi tạo ngẫu nhiên trên đầu mạng ngữ nghĩa vào các lớp C đại diện cho từ vựng Mô hình được tối ưu hóa bằng cách giảm thiểu mất mát về CTC, che dấu các bước thời gian và kênh trong quá trình đào tạo, giúp trì hoãn hiện tượng overfitting và cải thiện đáng kể tỷ lệ lỗi cuối cùng, đặc biệt là trên các tập hợp con Libri-light có ít ví dụ được gắn nhãn.

Mô hình ngôn ngữ N-gram

Công việc dự đoán rất là khó khăn, đặc biệt là dự đoán tương lai Nhưng nếu như dự đoán một việc gì đó dễ dàng hơn, từ tiếp theo ai đó sẽ nói là gì Do đó mô hình ngôn ngữ N-gram [11] đã có thể giải quyết phần nào về vấn đề này

Bắt đầu với việc tính toán nhiệm vụ P(w | h), xác suất để từ w xuất hiện khi biết có những từ h đã xuất hiện Giả sử h là “Nước trong hồ” và muốn biết rằng xác suất để từ xuất hiện tiếp theo là “thật đẹp”:

P(“đẹp” | “Nước trong hồ thật”)

Có một cách để ước tính giá trị này là trực tiếp từ số lượng tần số tương đối: lấy từ bộ dữ liệu văn bản, đếm số lần xuất hiện của “Nước trong hồ thật” và đếm số lần đoạn này xuất hiện theo sau bởi “đẹp” Điều này sẽ trả lời câu hỏi: Trong số lần thấy “Nước trong hồ thật” thì có bao nhiêu lần xuất hiện theo sau bởi “đẹp”

𝑃( đẹp | 𝑁ướ𝑐 𝑡𝑟𝑜𝑛𝑔 ℎồ 𝑡ℎậ𝑡) = Đế𝑚 (Nước trong hồ thật đẹp) Đế𝑚 (𝑁ướ𝑐 𝑡𝑟𝑜𝑛𝑔 ℎồ 𝑡ℎậ𝑡)

Nếu có một dữ liệu văn bản đủ lớn, có thể tính toán hai số đếm này và ước lượng xác xuất từ phương trình trên Nhưng vấn đề xảy ra là ngay cả internet cũng không đủ lớn để đưa ra những ước lượng tốt cho số lần xuất hiện của toàn bộ câu Điều này là bởi vì ngôn ngữ là sáng tạo Những câu mới được phát minh liên tục, và không thể mong đợi có được những số đếm chính xác cho các đối tượng lớn như các câu trọn vẹn Vì lý do này, cần có những cách tốt hơn, thông minh hơn để ước lượng xác suất của một từ w khi biết các từ đã có h, hoặc xác suất của một chuỗi W

Có thể giả định rằng xác suất của một từ chỉ phụ thuộc vào từ trước đó là giả định Markov Giả định này là một mô hình xác suất giả định rằng có thể dự đoán các từ trong tương lại mà chỉ cần dựa vào các từ gần nhất trước đó mà không cần phải các từ xa hơn Giả định Markov có công thức tổng quát sau:

Hình 3.11 Giả định Markov Nguồn [11]

Từ công thức trên đối với mô hình bigram ước tính xác suất của một từ bằng cách chỉ sử dụng xác suất của từ trước đó như sau: P(đẹp | Nước trong hồ thật)

≈ P(đẹp | thật) Trong khi mô hình trigram ước tính xác suất của một từ bằng cách sử dụng xác suất có điều kiện của 2 tiền tố trước đó: P(đẹp | Nước trong hồ thật) ≈ P(đẹp | hồ thật) Hơn nữa có thể mở rộng lên được các mô hình 4- gram, 5-gram nhưng đòi hỏi cần phải có một không gian tính toán và phần cứng đủ tốt để có thể tính được xác suất đó Để ước tính được xác suất của mô hình bigram hoặc mô hình n-gram Có một cách trực quan đó là maximum likelihood estimation hoặc MLE MLE được tính bằng cách lấy số lượng các từ từ bộ dữ liệu văn bản, sau đó sử dụng chuẩn hóa dữ liệu sao cho chúng nằm trong khoảng 0 đến 1 Giả sử để tính xác suất của một từ 𝑤 𝑛 với 𝑛 – 1 từ cho trước 𝑤 𝑛−𝑁+1 , …, 𝑤 𝑛−1 Công thức tổng quát là:

Hình 3.12 Công thức tổng quát tính xác suất dựa vào MLE Nguồn [11]

Trên thực tế, các mô hình chủ yếu được sử dụng đó là mô hình 4-gram và 5-gram Các xác suất mô hình ngôn ngữ luôn được lưu trữ và tính toán trên dạng log bởi vì khi tính xác suất các giá trị nằm trong khoảng 0 đến 1, khi nhân các xác suất lại với nhau mà không có log thì sẽ khiến cho giá trị này càng ngày càng nhỏ đi Sử dụng log sẽ cải thiện được nhược điểm này

Hình 3.13 Cách tính xác suất khi sử dụng log Nguồn [11]

Tìm kiếm đầu ra của mô hình – Beam search

Beam search là một thuật toán được sử dụng nhiều trong xử lý ngôn ngữ tự nhiên và mô hình hệ thống nhận dạng giọng nói như một lớp đầu ra quyết định cuối cùng để chọn đầu ra tốt nhất cho các biến mục tiêu như xác suất tối đa hoặc đầu ra tiếp theo

3.9.1 Tìm kiếm tham lam – Ý tưởng ngây thơ

Hình 3.14 Thuật toán tìm kiếm tham lam Nguồn [12]

Tìm kiếm tham lam sẽ chỉ đơn giản là lấy từ có xác suất cao nhất ở mỗi vị trí trong chuỗi và dự đoán điều đó trong chuỗi đầu ra Chỉ chọn một ứng viên ở một bước có thể tối ưu lại vị trí hiện tại trong tình tự, nhưng khi chuyển qua phần còn lại của cây có thể dẫn đến kết quả tồi tệ Vì không thể lấy được vị trí dự đoán sau này Đối với đoạn văn dài thuật toán này ngày càng trở nên khó khăn

3.9.2 Beam search – sử dụng xác suất có điều kiện

Thuật toán này lựa chọn nhiều các đoạn mã cho vị trí trong chuỗi được cung cấp dựa trên xác suất có điều kiện Thuật toán có thể lấy con số bất kì trong N lựa chọn thay thế tốt nhất thông qua một siêu tham số được gọi là chiều rộng beam search Trong phần tìm kiếm tham lam, chỉ đơn giản là lấy giá trị tốt nhất cho từng vị trí trong chuỗi, ở đây tìm kiếm theo chiều rộng bao gồm các từ khác để có thể chọn được các từ phù hợp hơn Tìm kiếm tham lam xem xét từng vị trí trong chuỗi đầu ra một cách riêng biệt Một từ được quyết định dựa trên xác suất cao nhất và tiếp tục di chuyển xuống phần còn lại trong câu và không quay lại các từ trước đó Với beam search, thực hiện lấy N chuỗi đầu ra tốt nhất và xem xét các từ trước hiện tại và xác suất so với vị trí hiện tại mà đang giải mã trong chuỗi

Hình 3.15 Quá trình thực hiện Beam search Nguồn [13]

Tại thời điểm bước 1, chọn k đoạn mã (token) có xác suất dự đoán cao nhất, Mỗi đoạn mã cho biết rằng trong số chúng sẽ là mã (token) đầu tiên của k chuỗi đầu ra ứng viên tương ứng Tại mỗi bước thời gian tiếp theo, dựa trên k chuỗi đầu ra ứng viên tại bước thời gian trước đó, tiếp tục chọn k chuỗi đầu ra ứng viên có xác suất dự đoán cao nhất từ k các lựa chọn có thể

Trong Hình 3.15, giả sử từ vựng đầu ra có 5 phần tử 𝑌 = {𝐴, 𝐵, 𝐶, 𝐷, 𝐸} , độ rộng là 2 và độ dài tối đa các chuỗi đầu ra là 3 Tại thời điểm 1, giả sử các tokens có xác suất có điều kiện cao nhất 𝑃(𝑦 1 | 𝑐) là A và C Tại thời điểm thứ

2, với tất cả các 𝑦 2 ∈ 𝑌, tính được

Hình 3.16 Kết quả tính được tại thời điểm thứ 2 của beam search

Tiếp theo chọn hai giá trị lớn nhất trong số các giá trị, chẳng hạn như 𝑃(𝐴,

𝐵 ∣ 𝐜) và 𝑃(𝐶, 𝐸 ∣ 𝐜) Sau đó tại thời điểm bước 3, với mọi 𝑦 3 ∈ 𝒴, tính được các giá trị sau:

Hình 3.17 Các giá trị sau khi tính toán tại thời điểm bước 3 và chọn hai giá trị lớn nhất trong số mười giá trị này, chẳng hạn như 𝑃(𝐴, 𝐵,𝐷 ∣ 𝐜) và 𝑃(𝐶, 𝐸, 𝐷 ∣ 𝐜) Kết quả là sáu chuỗi đầu ra ứng cử viên: A; C; A, B;

C, E; A, B, D; và C, E, D Cuối cùng, tập hợp các chuỗi đầu ra ứng viên cuối cùng dựa trên sáu chuỗi này được thu thập (loại bỏ các phần bao gồm và sau

“”) Sau đó, chuỗi đầu ra được chọn tối đa hóa số điểm sau

Hình 3.18 Kết quả của chuỗi đầu ra

Trong đó 𝐿 là độ dài của chuỗi ứng cử viên cuối cùng và 𝛼 thường được đặt thành 0,75 Vì một chuỗi dài hơn có nhiều số hạng logarit hơn trong tổng của, nên số hạng 𝐿 𝛼 ở mẫu số sẽ phạt các chuỗi dài hơn Chi phí tính toán của việc beam search là 𝒪(𝑘|𝒴|𝑇 ′ ) Tìm kiếm tham lam có thể được coi là trường hợp đặc biệt của beam search khi độ rộng được đặt thành 1

Tại chương này, những lý thuyết cần thiết về các kiến thức liên quan đến mô hình wav2vec Ở chương tiếp theo sẽ tập trung vào phần chương trình thực nghiệm, áp dụng các kĩ thuật được nêu ở CHƯƠNG 2 và CHƯƠNG 3 để có thể đạt được kết quả thực nghiệm và đưa ra được chiến lược để có thể xây dựng được phần mềm chuyển giọng nói thành văn bản đạt được hiệu suất tốt nhất.

XÂY DỰNG ỨNG DỤNG PHẦN MỀM CHUYỂN GIỌNG NÓI THÀNH VĂN BẢN XỬ DỤNG WAV2VEC

Bộ dữ liệu sử dụng cho thực nghiệm

Bộ dữ liệu VLSP là một bộ dữ liệu gồm 250 giờ gồm nhiều bản ghi trong đó là toàn bộ giọng nói tiếng Việt cung cấp bởi Chi hội của Hội tin học sinh viên Việt Nam, tên tiếng Anh là Association for Vietnamese Language and Speech Processing Bộ dữ liệu này được công bố vào năm 2021 trong một cuộc thi về hệ thống nhận dạng giọng nói tiếng Việt và được nhiều người quan tâm

Bộ dữ liệu VIVOS là một bộ dữ liệu tiếng Việt gồm hơn 15 giờ ghi âm được dung cho các nhiệm vụ nhận dạng giọng nói tiếng Việt, bao gồm 46 người thực hiện (trong đó có 22 nam và 24 nữ) Dữ liệu ghi âm này được thực hiện trong môi trường yên tĩnh bằng các thiết bị chất lượng

Bộ dữ liệu Common Voice là một bộ dữ liệu gồm nhiều tệp định dạng mp3 và tệp txt chứa văn bản có trong mp3 tương ứng, được cung cấp bỏi cộng đồng Mozilla Common Voice Bộ dữ liệu này gồm nhiều phiên bản từ 5.0 đến 18.0

Bộ dữ liệu gồm gần 20000 giờ được xác thực bởi nhiều ngôn ngữ khác nhau.s

Mô hình sử dụng cho thực nghiệm và ứng dụngss

Trong báo cáo này, Mô hình base của tác giả Nguyễn Vũ Lê Bình [14] đã huấn luyện trên mô hình với 13 nghìn giờ dữ liệu và tinh chỉnh dựa trên wav2vec sử dụng ngôn ngữ Tiếng Việt với 250 nghìn giờ Mô hình này gồm 95 triệu tham số với mô hình base và 317 triệu tham số với mô hình large Về phần thực hiện nhận dạng mô hình gồm 2 phần chính đó là mô hình nhận dạng giọng nói và mô hình ngôn ngữ Ở đây phần đầu mô hình được tinh chỉnh như một mô hình âm thanh Và sau đó phần còn lại là một mô hình ngôn ngữ, mô hình ngôn ngữ 4-gram được đào tạo trên 2GB dữ liệu văn bản

Hình 4.1 Kết quả Benchmark của mô hình Nguồn [14]

Kết quả trong cho thấy việc sử dụng ngô hình ngôn ngữ để cải thiện tỉ lệ lỗi từ (WER) so với việc không sử dụng Do đó việc sử dụng mô hình nhận dạng kết hợp với mô hình ngôn ngữ là rất cần thiết đối với hệ thống nhận dạng giọng nói.

Quy trình thực hiện thực nghiệm

4.3.1 Tiền xử lý dữ liệu

Mô hình wav2vec được huấn luyện trên bộ dữ liệu được thu âm từ nhiều nguồn khác nhau nhưng chủ yếu được học bên tập dữ liệu đã được qua xử lý Nếu như đưa mô hình thực hiện trên âm thanh sóng thô thuần thì sẽ có những tạp âm, những âm thanh nhiễu lẫn vào Vì vậy, tôi đã áp dụng phần giảm nhiễu được nêu ở mục 2.1 và so sánh 2 kết quả một là không sử dụng giảm nhiễu, hai là sử dụng giảm nhiễu được kết quả như sau

Hình 4.2 Kết quả xử lý nhiễu, bên trái là không sử dụng giảm nhiễu, bên phải là sử dụng giảm nhiễu Âm thanh trên có giá trị lời nói là “Thời tiết hôm nay thế nào” Đối với mô hình không có sử dụng giảm nhiễu thì kết quả của mô hình ra là “Thời tiết hôm này” Và với mô hình có sử dụng giảm nhiễu thì kết quả ra là “Thời tiết hôm này thế nào” Để có thể đánh giá được hệ thống khi có sử dụng giảm nhiễu tôi đã thực hiện so sánh trên nhiều tập dữ liệu Tiếng Việt khác nhau với các mô hình khác và được kết quả ở trongss Các tập dữ liệu này tôi đã thêm vào nhiễu và sử dụng tỉ lệ lỗi từ để đánh giá Sau khi đánh giá xong, kết quả hệ thống của tôi đã đạt được kết quả vượt trội so với các mô hình có cùng kiến trúc mô hình wav2vec

Hình 4.3 Kết quả đánh giá hệ thống khi sử dụng giảm nhiễu

Môi trường và công nghệ sử dụng

Anaconda là một công cụ quản lý môi trường và gói phần mềm mã nguồn mở, được sử dụng rộng rãi trong việc phân tích dữ liệu và phát triển các ứng dụng khoa học dữ liệu Cung cấp một bộ công cụ linh hoạt và mạnh mẽ để làm việc với Python và các ngôn ngữ khác

Flutter python là một thư viện python mạnh mẽ giúp lập trình viên xây dựng giao diện người dùng một cách nhanh chóng và dễ dàng Được thiết kế để hoạt động trên nhiều nền tảng, cho phép tạo ra các ứng dụng web, desktop và di động Đặc biệt ở Flutter python không cần sử dụng đến HTML, CSS, JavaScript mà tất cả đều được thực hiện thông qua python, với cú pháp đơn giản

Một điểm mạnh khác của Flet là khả năng mở rộng Lập trình viên có thể dễ dàng thêm các tính năng hoặc module mới mà không làm ảnh hưởng đến cấu trúc ban đầu của ứng dụng Tài liệu của Flet cũng rất chi tiết, với nhiều ví dụ và hướng dẫn, giúp người dùng nhanh chóng làm quen và triển khai các dự án thực tế Với tính năng đa nền tảng, cú pháp đơn giản, và khả năng tùy chỉnh linh hoạt, Flet thực sự là một công cụ đáng cân nhắc cho những ai muốn phát triển ứng dụng giao diện người dùng bằng Python.

Xây dựng phần mềm

4.5.1 Tổng quan về hệ thống

Hình 4.4 Tổng quan về hệ thống nhận dạng giọng nói trong báo cáo

Hệ thống nhận dạng giọng nói được tham khảo từ nhiều nguồn [15] [16] khác nhau và được tóm gọn lại trong Cụ thể như sau:

• Thu âm: phần thu âm được thu trực tiếp từ Microphone của thiết bị của người dùng

• Tải tệp âm thanh: phần tải tệp sẽ cho phép người dùng tải tệp âm thanh có những định dạng như mp3, mp4, wav, mkv, …

• Tiền xử lý dữ liệu từ âm thanh trực tiếp và tiền xử lý dữ liệu từ tệp âm thanh: phần này hệ thống sẽ thực hiện lấy mẫu là 16kHz, cùng với đó là kĩ thuật giảm nhiễu được đề cập trong mục 2.1, chuẩn hóa, trích xuất đặc trưng, v.v…

• Phát hiện giọng nói: phần này hệ thống sử dụng kĩ thuật được đề cập trong mục 2.2 để có thể lấy được những đoạn âm thanh chứa chính xác các giọng nói của người

• Nhận dạng giọng nói: phần này hệ thống sẽ thực hiện chuyển các dữ liệu âm thanh dạng sóng thành các đặc trưng về giọng nói

• Lưu dữ liệu âm thanh: phần này hệ thống sẽ thực hiện lưu lại âm thanh sau khi người dùng thực hiện ghi âm hay tải tệp âm thanh để có thể dùng cho các nhiệm vụ sau

• Hậu xử lý: phần đầu ra của mô hình nhận dạng giọng nói có thể không chính xác, do đó cần thêm phần xử lý ngôn ngữ để có thể đưa ra được đầu ra mong muốn

4.5.2 Phân tích thiết kế phần mềm

Hình 4.5 Biểu đồ use case

Dưới đây là mô tả chi tiết cụ thể các use case

Bảng 4.1 Mô tả chi tiết use case cài đặt hệ thống

Tên use case Cài đặt mô hình

Mô tả Người dùng muốn kiểm tra xem thiết bị có hỗ trợ

Luồng sự kiện Khi người dùng chọn vào phần cài đặt, sẽ hiển thị phần kiểm tra GPU, hệ thống sẽ thực hiện tính toán, kiểm tra trước, và khi người dùng chọn bật GPU, hệ thống sẽ hiển thị thông báo rằng GPU có tồn tại trên thiết bị hay không

Bảng 4.2 Mô tả chỉ tiết use case bắt đầu thu âm

Tên use case Use case bắt đầu thu âm

Mô tả Người dùng muốn thực hiện trực tiếp từ

Luồng sự kiện Người dùng chọn thu âm thì mô hình nhận dạng giọng nói sẽ thực hiện

Bảng 4.3 Mô tả chỉ tiết use case dừng thu âm

Tên use case Use case kết thúc thu âm

Mô tả Người dùng muốn kết thúc thu âm từ Microphone

Luồng sự kiện Người dùng chọn dừng thu âm thì mô hình nhận dạng giọng nói sẽ ngừng thực hiện

Bảng 4.4 Mô tả chi tiết use case tải tệp âm thanh

Tên use case Use case tải tệp âm thanh

Mô tả Người dùng muốn thực hiện nhận dạng giọng nói trên tệp âm thanh

Luồng sự kiện Người dùng chọn phần tải tệp âm thanh, thì màn hình thư mục sẽ xuất hiện và cho phép người dùng chọn 1 tệp mà muốn nhận dạng (gồm các tệp âm thanh cho phép)

Bảng 4.5 Mô tả chi tiết use case xem danh sách âm thanh

Tên use case Use case xem danh sách âm thanh

Mô tả Người dùng muốn xem danh sách âm thanh đã được thực hiện trên hệ thống

Luồng sự kiện Người dùng chọn vào phần xem danh sách âm thanh, màn hình sẽ xuất hiện các danh sách âm thanh đã được thực hiện từ trước đó.s

4.5.3 Xây dựng giao diện người dùng

Hình 4.6 Màn hình chính của hệ thống nhận dạng giọng nói

Trong màn hình chính, cho phép người dùng có thể lựa chọn thu âm hoặc tải tệp để thực hiện nhận dạng giọng nói, và có thể chọn cài đặt để có thể chọn chạy mô hình trên GPU hoặc không GPU Nếu chạy trên GPU phần mềm nhận dạng có thể thực hiện nhanh hơn

Hình 4.7 Màn hình cài đặt của hệ thống nhận dạng

Về màn hình cài đặt, hệ thống cho người dùng biết được thiết bị của người dùng có GPU để thực hiện hay không, và phần tải mô hình có thể thông báo ra ngoài màn hình cho người dùng biết được quá trình tải mô hình thành công hay chưa Chức năng tải mô hình cần được bật lên nhằm phục vụ cho việc thu âm cũng như là thực hiện trên tệp âm thanh

Hình 4.8 Màn hình kết quả khi thực hiện thu âm hoặc tải âm thanh

Sau khi người dùng thu âm hoặc tải âm thanh, thì màn hình sẽ xuất hiện kết quả dữ liệu sau khi thực hiện nhận dạng giọng nói Người dùng có thể chọn dừng hoặc thực hiện lại khi muốn.

Ngày đăng: 09/11/2024, 20:00

w