VietASI.comVietASI
Nhận dạng giọng nói tiếng Việt

Thanh điệu trong nhận dạng giọng nói tiếng Việt: máy phân biệt ma, má, mạ ra sao

Máy nhận ra sáu thanh tiếng Việt nhờ đường nét cao độ, độ dài và chất giọng, rồi dựa vào ngữ cảnh để chọn dấu. Vì sao hỏi, ngã, nặng hay sai và cách tự kiểm.

Close-up of a young Vietnamese woman from behind wearing headphones, speaking softly into a desk microphone in a quiet wooden room, warm side light, shallow depth of field

Máy nhận dạng giọng nói phân biệt “ma”, “má”, “mà”, “mả”, “mã”, “mạ” bằng ba loại tín hiệu trong sóng âm: đường nét cao độ (giọng đi ngang, đi lên, đi xuống hay gãy giữa chừng), độ dài của âm tiết và chất giọng (một số thanh có tiếng thanh quản bị “nén”, nghe khàn hoặc ngắt). Mô hình âm học đọc các tín hiệu đó thành một xác suất cho từng thanh, sau đó phần ngôn ngữ dùng ngữ cảnh cả câu để chọn chữ có dấu hợp lý nhất.

Vì vậy lỗi dấu trong bản chép lời tiếng Việt hiếm khi là lỗi “tai máy kém” thuần tuý. Phần lớn đến từ chỗ tín hiệu thanh điệu bị mờ đi khi nói nhanh, khi giọng trầm hoặc khi người nói thuộc vùng không phân biệt một số thanh, cộng với việc mô hình ngôn ngữ “đoán theo thói quen”. Bài này đi vào cơ chế đó ở mức người làm sản phẩm hiểu được, chỉ ra các cặp thanh hay nhầm và cách tự kiểm một công cụ với giọng của mình. Cơ chế chung của nhận dạng giọng nói cho người không chuyên đã có ở trang AI Hiểu; ở đây chỉ bàn phần riêng của tiếng Việt.

Thanh điệu nằm ở đâu trong sóng âm

Khi nói, dây thanh rung với một tần số nhất định gọi là tần số cơ bản, viết tắt F0. Tai người nghe F0 thành cao độ. Trong tiếng Việt, mỗi âm tiết mang một thanh, và thanh đó chủ yếu được thể hiện bằng cách F0 thay đổi trong suốt âm tiết: thanh ngang đi gần như phẳng ở mức tương đối cao, thanh huyền đi thấp và hơi xuôi xuống, thanh sắc đi lên, thanh hỏi đi xuống rồi vòng lên, thanh ngã đi lên nhưng có một chỗ gãy, thanh nặng ngắn và rơi xuống thấp.

Nhưng cao độ không phải là tất cả. Các nghiên cứu ngữ âm học về tiếng Việt giọng Bắc đã mô tả từ lâu rằng thanh ngã và thanh nặng đi kèm hiện tượng thanh quản hoá: dây thanh khép chặt, tiếng nghe khàn, có khi như bị ngắt quãng giữa âm tiết. Thanh nặng còn ngắn hơn các thanh khác. Nghĩa là để nhận ra thanh, máy cần nhìn cả độ dài và chất giọng, không chỉ một đường cao độ.

Thêm một chi tiết hay bị quên: âm tiết kết thúc bằng phụ âm tắc -p, -t, -c, -ch chỉ đi với hai thanh sắc và nặng (ví dụ “tốt”, “tột”, “học”, “hóc”). Đây là ràng buộc của chính hệ thống chữ và âm tiếng Việt, và một mô hình tốt sẽ học được nó: gặp âm tiết “hoc” thì chỉ còn phải chọn giữa “hóc” và “học”, không cần xét bốn thanh còn lại.

Vì sao thanh điệu khó với máy hơn phụ âm

Cao độ mỗi người một khác. Giọng nam trưởng thành thường có F0 thấp hơn hẳn giọng nữ và giọng trẻ em. Thanh “cao” của một ông cụ giọng trầm có thể còn thấp hơn thanh “thấp” của một bé gái. Máy không thể dựa vào mức cao độ tuyệt đối mà phải so tương đối trong giọng của từng người, điều mà mô hình chỉ học được khi dữ liệu huấn luyện có đủ nhiều giọng khác nhau.

Ngữ điệu câu chồng lên thanh. Câu hỏi thường được nâng giọng ở cuối, câu cảm thán dồn nhấn vào vài chữ, người mệt thì giọng chùng xuống cả câu. Những đường cong lớn đó đè lên đường cong nhỏ của từng thanh, làm thanh ngang cuối câu hỏi nghe gần giống thanh sắc.

Nói nhanh làm thanh co lại. Trong lời nói tự nhiên, nhất là các hư từ như “thì”, “là”, “mà”, “cũng”, âm tiết bị rút ngắn còn vài phần trăm giây. Không đủ thời gian để đường cao độ đi trọn hình dạng, thanh hỏi và thanh ngã gần như mất phần đặc trưng.

Thanh ảnh hưởng lẫn nhau. Cao độ cuối âm tiết trước kéo theo đầu âm tiết sau. Một thanh sắc đứng sau thanh nặng sẽ bắt đầu từ chỗ thấp hơn bình thường. Người nghe bù lại vô thức, còn máy chỉ bù được nếu đã học đủ ví dụ.

Thiết bị và đường truyền làm mất tín hiệu. Điện thoại di động nén giọng, cuộc gọi qua mạng rớt gói, micro rẻ tiền cắt bớt dải tần. F0 thường vẫn còn, nhưng các dấu hiệu tinh hơn như độ khàn của thanh ngã có thể bị nhoè, khiến cặp ngã và sắc dễ lẫn hơn khi nghe qua điện thoại.

Hệ thống cũ và mô hình mới xử lý thanh điệu thế nào

Các hệ thống nhận dạng thế hệ trước thường tách bài toán thành ba khối: mô hình âm học đoán âm vị từ đặc trưng âm thanh, từ điển phát âm nối âm vị thành âm tiết, và mô hình ngôn ngữ chọn chuỗi chữ hợp lý. Đặc trưng âm thanh phổ biến khi đó là MFCC, vốn được thiết kế để mô tả hình dạng khoang miệng và làm mờ đi thông tin cao độ. Với ngôn ngữ có thanh điệu như tiếng Việt hay tiếng Trung, các nhóm làm nhận dạng phải bổ sung đặc trưng cao độ riêng, và thường coi nguyên âm mang thanh là một đơn vị riêng (nguyên âm “a” với thanh sắc khác nguyên âm “a” với thanh huyền).

Mô hình đầu cuối (end-to-end) ngày nay học thẳng từ sóng âm hoặc phổ âm ra chuỗi ký tự. Nó không được ai dạy “đây là F0”, nhưng vì đầu ra bắt buộc phải có dấu đúng, mạng tự học cách khai thác những gì trong tín hiệu giúp đoán dấu. Có hai cách chọn đơn vị đầu ra: ký tự đã mang dấu (á, ả, ạ là ba ký tự khác nhau), hoặc tách chữ gốc và dấu thanh thành hai ký hiệu riêng. Cách thứ hai làm bảng ký hiệu nhỏ hơn và cho phép mô hình học “thanh” như một thứ chung cho mọi nguyên âm; cách thứ nhất đơn giản hơn. Các mô hình đa ngôn ngữ cỡ lớn thường dùng bộ tách mảnh (token) chung cho mọi thứ tiếng, nên một âm tiết tiếng Việt có dấu có thể bị chia thành vài mảnh, việc này ảnh hưởng tới tốc độ và đôi khi tới độ chính xác của dấu.

Điểm chung của cả hai thế hệ: phần âm học chỉ đưa ra khả năng, còn quyết định cuối cùng luôn có bàn tay của ngữ cảnh.

Ngữ cảnh cứu dấu, và cũng làm sai dấu

Giả sử phần âm học nghe một âm tiết và phân vân giữa “cá” và “cà”. Nếu câu là “đi chợ mua con … về kho”, ngữ cảnh gần như quyết định thay cho tai. Đây là lý do một công cụ có thể chép đúng dấu cả câu dù người nói đọc lướt: phần ngôn ngữ biết chuỗi nào thường gặp trong tiếng Việt.

Mặt trái của cơ chế này là máy sửa theo thói quen. Tên riêng, từ chuyên ngành, cách nói địa phương hoặc một câu cố ý khác thường sẽ bị kéo về dạng phổ biến hơn. Ví dụ giả định: một người tên “Mỹ” nói “chị Mỹ gửi rồi”, máy có thể chép thành “chị mỹ gửi rồi” hoặc “chị mí gửi rồi” tuỳ dữ liệu nó từng gặp. Một bác sĩ đọc tên thuốc, một kỹ sư đọc mã linh kiện, một người miền Tây nói “mần”, đều dễ gặp cảnh dấu và cả chữ bị “sửa giùm”.

Hệ quả thực tế: khi đánh giá một công cụ, đừng chỉ thử bằng câu báo chí trơn tru. Câu càng giống văn mẫu thì phần ngữ cảnh càng che lấp được yếu kém của phần nghe. Muốn biết công cụ nghe thanh tốt đến đâu, phải thử cả những câu mà ngữ cảnh không giúp được gì, như danh sách tên người, dãy âm tiết rời hay cặp từ chỉ khác nhau một dấu.

Các cặp thanh hay bị chép nhầm

Bảng dưới tổng hợp những kiểu nhầm thường gặp khi đọc lại bản chép lời tiếng Việt. Đây là quan sát định tính từ cơ chế ngữ âm, không phải số liệu đo của một công cụ cụ thể.

Cặp nhầmVì sao dễ nhầmVí dụ
Hỏi và ngãCả hai có đường cao độ gãy; nhiều vùng không phân biệt khi nói; nói nhanh làm mất chỗ gãy“nghĩ” chép thành “nghỉ”, “sẽ” thành “sẻ”
Sắc và nặng ở âm tiết tắcÂm tiết -p, -t, -c, -ch rất ngắn, đường cao độ chưa kịp rõ“tốt” thành “tột”, “học” thành “hóc”
Ngang và huyềnGiọng trầm hoặc cuối câu chùng xuống làm thanh ngang hạ thấp“ba” thành “bà”
Ngã và sắcQua điện thoại mất bớt độ khàn của thanh ngã, còn lại nét đi lên“mã” thành “má”
Nặng bị mấtHư từ đọc lướt, thanh nặng ngắn và thấp dễ bị nuốt“cạnh” thành “canh”

Nhìn bảng sẽ thấy phần lớn lỗi thanh không ngẫu nhiên mà rơi vào vài cặp cố định. Đây là tin tốt cho người làm hậu kỳ: có thể soát riêng các cặp này thay vì đọc lại từng chữ, và có thể đưa danh sách từ dễ nhầm vào bước sửa lỗi sau nhận dạng.

Thanh điệu và giọng vùng miền

Hệ sáu thanh thường được mô tả theo giọng Bắc, và chữ quốc ngữ ghi đủ sáu dấu. Nhưng nhiều người nói giọng Nam và một phần giọng Trung không phân biệt thanh hỏi với thanh ngã khi nói; với họ, “nghỉ” và “nghĩ” phát âm như nhau. Khi đó máy không thể nghe ra dấu đúng, vì trong tín hiệu không có gì để nghe; nó buộc phải dựa hoàn toàn vào ngữ cảnh hoặc vào quy ước chính tả mà mô hình ngôn ngữ đã học.

Giọng Bắc Trung Bộ và giọng Huế lại có đường nét thanh khác hẳn giọng Hà Nội, đôi khi một thanh ở vùng này nghe gần giống một thanh khác ở vùng kia. Một mô hình học chủ yếu từ giọng Bắc và giọng Sài Gòn sẽ gặp khó với những giọng đó, không phải vì giọng “khó nghe”, mà vì nó ít được thấy trong dữ liệu. Chuyện phương ngữ nói chung, cả phụ âm đầu và vần cuối, được bàn kỹ trong một bài riêng của danh mục này.

Với người làm sản phẩm, điểm cần nhớ là: tỷ lệ lỗi dấu của cùng một công cụ có thể chênh nhau đáng kể giữa các nhóm người dùng. Một con số trung bình duy nhất che mất chuyện đó.

Tự kiểm khả năng nghe thanh của một công cụ

Không cần phần mềm chuyên dụng, một buổi chiều là đủ để biết công cụ mình định dùng nghe thanh tốt đến đâu với chính giọng của mình hoặc của khách hàng.

  1. Soạn khoảng 20 cặp tối thiểu chỉ khác nhau một dấu, đặt trong câu ngắn trung tính để ngữ cảnh không gợi ý, ví dụ “Chữ thứ ba là ca” và “Chữ thứ ba là cà”.
  2. Soạn thêm một đoạn văn tự nhiên khoảng 150 âm tiết có nhiều từ hỏi, ngã và âm tiết tắc, cùng năm tên riêng có dấu.
  3. Ghi âm bằng thiết bị thật sẽ dùng (điện thoại, micro họp), đọc ở tốc độ bình thường, ghi thêm một lần đọc nhanh.
  4. Cho công cụ chép lời, rồi so với bản gốc theo hai cách: so nguyên chữ có dấu, và so sau khi bỏ hết dấu.
  5. Hiệu giữa hai tỷ lệ lỗi đó cho biết phần lỗi đến từ dấu thanh. Ghi lại cặp nào sai nhiều nhất để đưa vào danh sách soát.
  6. Nếu có người dùng ở vùng khác, nhờ họ đọc cùng bộ câu. Chỉ dùng bản ghi khi họ đồng ý, và xoá sau khi kiểm xong.

Cách so “có dấu” và “bỏ dấu” là mẹo đơn giản nhưng hữu ích: một công cụ có tỷ lệ lỗi bỏ dấu thấp mà lỗi có dấu cao là công cụ nghe đúng âm nhưng yếu thanh, có thể cải thiện bằng bước sửa dấu sau nhận dạng; còn nếu cả hai đều cao thì vấn đề nằm ở chất lượng ghi âm hoặc ở chính mô hình.

Câu hỏi thường gặp

Tiếng Việt có sáu thanh hay năm thanh khi tính cho máy nhận dạng?

Chữ viết luôn có sáu dấu nên đầu ra của máy phải chọn trong sáu thanh. Còn trong lời nói, nhiều người giọng Nam và một phần giọng Trung chỉ phân biệt năm thanh vì hỏi và ngã nhập làm một. Máy vẫn phải ghi đúng chính tả sáu dấu, nên với những giọng này nó dựa vào ngữ cảnh nhiều hơn.

Vì sao bản chép lời qua điện thoại sai dấu nhiều hơn ghi âm trực tiếp?

Cuộc gọi thường bị nén và chỉ giữ một dải tần hẹp, có khi còn rớt gói tin. Đường cao độ chính vẫn còn nhưng các dấu hiệu tinh như độ khàn của thanh ngã, thanh nặng bị nhoè. Mô hình nào không được huấn luyện thêm với âm thanh điện thoại sẽ nhầm ngã với sắc, nặng với huyền nhiều hơn.

Có nên tắt dấu rồi tự thêm dấu sau cho chính xác hơn không?

Thường là không. Mô hình nhận dạng có cả thông tin âm thanh lẫn ngữ cảnh khi chọn dấu, còn công cụ thêm dấu cho văn bản không dấu chỉ có ngữ cảnh. Bỏ dấu rồi thêm lại là vứt bớt thông tin. Bước sửa dấu nên làm trên bản có dấu, tập trung vào các cặp hay nhầm.

Giọng trầm của nam giới có làm máy nhận dạng kém hơn không?

Bản thân giọng trầm không phải vấn đề, vì máy so cao độ tương đối trong giọng từng người. Khó khăn xuất hiện khi giọng vừa trầm vừa nói nhỏ, nói lướt hoặc ghi âm xa micro, khi đó phần cuối của thanh ngang và thanh huyền dễ lẫn. Thử chính giọng đó bằng bộ cặp tối thiểu là cách biết chắc nhất.

Mô hình đa ngôn ngữ có học được thanh điệu tiếng Việt tốt như mô hình chỉ dành cho tiếng Việt không?

Còn tuỳ lượng và độ đa dạng của dữ liệu tiếng Việt mà mỗi mô hình được thấy, cách chia đơn vị đầu ra và việc có tinh chỉnh thêm hay không. Không có câu trả lời chung đúng cho mọi mô hình, nên so bằng bộ thử của chính mình là cách đáng tin hơn đọc quảng cáo.

Có thể dạy công cụ nhận dạng đúng tên riêng có dấu của công ty mình không?

Nhiều dịch vụ cho phép khai danh sách từ ưu tiên hoặc từ điển riêng, có nơi gọi là gợi ý từ vựng. Khi khai tên riêng kèm dấu đúng, phần ngôn ngữ sẽ ưu tiên chúng thay vì kéo về từ phổ biến. Kiểm phiên bản hiện hành của công cụ để biết nó có chức năng này hay không và giới hạn bao nhiêu từ.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138