30/09/2018, 19:15
Hỏi về đề tài nhận dạng giọng nói
em đang tìm hiểu về đề tại nhận giạng giọng nói,hiện tại em cũng đã tìm hiểu sơ qua về phương pháp nhận dạng đang bắt đầu code nhưng vẫn chưa hiểu về việc làm sao để lấy cái âm thanh mình nói rồi lưu vào máy để so sánh với giọng nói của mình.anh nào tưng làm về đề tài này có thể chỉ cho em được không ạ?
Bài liên quan
ý tưởng to tát qúa ta
sao bạn không dùng một trình ghi âm ra file rồi dùng nhỉ
theo em nghĩ thì đầu tiên có một file ghi âm rồi lưu vào chương trình để sau này thực hiện so sánh.nhưng mà truy xuất cái file ghi âm đó sao thì em chưa biết nên hỏi ạ.
Mỗi ngôn ngữ/ nền tảng đều có api để bạn truy xuất đến ngõ vào âm thanh, ví dụ ở java https://docs.oracle.com/javase/tutorial/sound/capturing.html. File lưu lại thường là file wav. Sau đó bạn có thể đọc nó lên bằng đọc file nhị phân hoặc sử dụng thư viện, tùy vào ngôn ngữ mà bạn sử dụng.
Không rõ là bạn muốn nhận dạng người nói hay nhận dạng tiếng, nhưng về cơ bản đều trải qua các bước sau: rút trích đặc trưng -> mô hình hóa -> nhận dạng thông qua phân lớp.
ý đinh của em là làm chương trình nhận giạng người nói,ví dụ như người A nói qua micro để lưu lại,sau đó người đó nói lại thì chương trình sẽ hiển thị tên người A
Hồi đó mình cũng làm, mà chỉ làm ở phần thuật toán . Nếu bạn muốn có thể xem qua ở đây: https://drive.google.com/file/d/0BwFOqsjqEVKYU2ZzeTFzVDdWTlU/view?usp=sharing
Nếu bạn quan tâm tới cài đặt thì nó có hai bước:
Bước xây dựng mô hình (học): Xây dựng một “mô hình” cho người nói. Mỗi người nói xây dựng một mô hình. Với mỗi người nói, bạn thu âm thanh -> tiền xử lý (khử nhiễu…) -> rút đặc trưng MFCC -> xây dựng mô hình người nói bằng GMM. Qua bước này, với mỗi người nói bạn thu được một mô hình xác suất GMM.
Bước xác thực: Khi có một người mới bạn muốn kiểm tra xem có phải người cần tìm đó không, bạn cũng thu âm thanh -> tiền xử lý (khử nhiễu…) -> rút đặc trưng MFCC -> Đưa vào mô hình GMM đã xây dựng, bạn sẽ thu được xác suất. Dựa vào xác suất này và ngưỡng xác suất bạn chọn để quyết đinh xem người đó có phải là người cần tìm hay không.
Thư viện thu âm thanh, xử lý nhiễu, rút MFCC, GMM bạn có thể tìm trên mạng tùy theo ngôn ngữ bạn biết. Hồi đó mình tìm chỉ có java và python. Chi tiết ý nghĩa các khái niệm thì mình có ghi trong cái báo cáo ở trên.
cảm ơn anh rất nhiều!
anh Itachi_Citus cho em hỏi cái đề tài nhận dạng người nói với nhận dạng tiếng nói cái nào khó hơn.cách xử lí âm thanh của 2 cái đó đều giống nhau phải không a?
Nhận dạng tiếng khó hơn bạn. Cái nhận dạng tiếng mình chưa tìm hiểu sâu lắm nên cũng ko rõ .
cái nhận dạng người có phải là em lưu tiếng nói của em vào khi mà nói lại thì nó nhận ra giọng của em.còn nhận dạng tiếng là phải lấy mẫu của nhiều người rồi lấy trung bình,nếu tín hiệu vào nằm trong khoảng trung bình thì xuất dữ liệu.giải thuật vậy đúng k a?
Uhm bạn làm vậy cũng dc. Nếu làm vậy thì ở bước cuối bạn không nên dùng GMM mà có thể sử dụng một thuật toán phân lớp như SVM, phân lớp 1 vs all.
Còn nếu xài GMM thì một là bạn lấy tất cả các mẫu của người khác thành một người, hai là bạn đặt ngưỡng xác suất. Cái của mình hồi trước là làm bài toán cho tập đóng (Nhận diện người nói với điều kiện người đó đã tồn tại trong tập mẫu ban đầu) nên nó không phù hợp với bạn nữa đâu
Cái này cần kiến thức của xử lý tín hiệu số và học máy, nếu có thể thì bạn học sơ sơ, nắm ý tưởng hai cái đó trước rồi mói làm cái nhận diện tiếng nói/ người nói sẽ dễ chịu hơn .
Tài liêu gốc hồi trước mình tham khảo, nó để cập tổng quát hơn các phương pháp mà bạn có thể dùng để tiếp cận: https://drive.google.com/folderview?id=0BwFOqsjqEVKYfjBMTGZTai1DRDJjUDh0SHdYSmdsLTZfSkhxTUVZR1diQ09CQ2xVQUJPODQ&usp=sharing
cảm ơn anh rất nhiều!
anh ơi, lúc anh hoàn thiện project đó thì có sản phẩm demo không ạ ? Có public sản phẩm ko e muốn xem thử ạ! Cũng đang tìm hiểu một chút “nhỏ xíu” hehe
Cảm ơn vì đã quan tâm đến cmt này.
Have a good day.
Hôm nọ em vừa tìm được 1 cái API cực cool của Javascript , anh tra thử webspeech recognition API là ra ngay , ngầu cực anh ạ =))