Thuật toán so sánh lời nói để đánh giá về sự tương đồng


8

Tôi đang cố gắng so sánh 2 mẫu bài phát biểu và đánh giá chúng về sự tương đồng. Hãy nghĩ về ai đó đang cố gắng lặp lại một cụm từ, và sau đó so sánh 2 tệp âm thanh đó.

Tôi đã bắt đầu bằng cách thực hiện thuật toán MFCC (http://en.wikipedia.org/wiki/Mel-frequency_805strum). Tôi tính toán các MFCC của cả hai mẫu âm thanh, cung cấp cho tôi khoảng 500 khung âm thanh (mỗi khung hình 10ms, giống như 30% so với trước đó) có hệ số MFCC khoảng 14 hoặc hơn. Vì vậy, một ma trận 500x14 cho mỗi tín hiệu âm thanh.

Sau đó, tôi làm cách tiếp cận ngây thơ chỉ đơn giản là phân biệt các ma trận. Điều này không cho kết quả rất hứa hẹn. Một nửa thời gian khi tôi so sánh các mẫu âm thanh hoàn toàn khác nhau (nơi nói các cụm từ khác nhau), tôi nhận được ít sự khác biệt hơn so với việc so sánh âm thanh nơi tôi cố gắng lặp lại cùng một cụm từ! Điều này rõ ràng là ngược và không thể cho tôi một thuật toán chấm điểm tốt.

Làm thế nào tôi có thể cải thiện về điều này? Tôi nghĩ MFCC là một phần thực sự quan trọng trong xử lý lời nói, mặc dù rõ ràng tôi cần phải làm nhiều hơn với nó.


Này, tôi đang xử lý một vấn đề tương tự, cách tiếp cận nếu tôi nên so sánh giọng nói của hai người nói khác nhau để có được điểm tương đồng là gì? Ngoài ra, có cách nào để tính toán trực tiếp nếu các clip âm thanh có nguồn gốc từ cùng một người hay không?
Amanda Cerny

Câu trả lời:


13

Đầu tiên, bạn sẽ phải sửa cho sự khác biệt về thời gian. Ví dụ: nếu một cách nói là "--heeelloooo ---" và "hellooooooo ----" khác (đại diện cho sự im lặng), thì việc so sánh trực tiếp các khung MFCC sẽ cho thấy sự khác biệt đơn giản chỉ vì hai mẫu không được căn chỉnh. Bạn có thể sử dụng Dynamic Time Warping để tìm sự liên kết tốt nhất giữa hai chuỗi vectơ đặc trưng - và tính khoảng cách tương ứng.

ΓΓ

AB

  • AABAB
  • ΓΓAB
  • ΓAB

Một điều cuối cùng xuất hiện trong đầu tôi là bạn phải loại bỏ hệ số MFCC đầu tiên (biểu thị gần như âm lượng tín hiệu) để cải thiện công suất của hệ thống của bạn để phù hợp với cách phát âm ở mức âm lượng / mức ghi khác nhau.


Cảm ơn bạn đã cung cấp thêm hướng dẫn cho tôi. Tôi đã xóa giá trị MFCC đầu tiên theo câu trả lời của bạn cho câu hỏi trước đó của tôi. Về việc sử dụng DTW để căn chỉnh các cách phát âm: điều này có được thực hiện trên cơ sở từng khung hình không? Tức là trong ma trận 500x14 của tôi, tôi có 500 khung hình âm thanh 10ms, ở cả A và B. Tôi có thể sử dụng DTW từng hàng để khớp từ A đến B không?
YoungMoney

Tôi không chắc là tôi hiểu câu hỏi của bạn ... Bạn sử dụng DTW để căn chỉnh 500 vectơ từ A đến 500 vectơ từ B.
pichenettes

Ý tôi là tôi nên ghép 500 vectơ cho mỗi A và B thành một vectơ "dài" (với các phần tử 500x14) và sau đó áp dụng DTW? Versus áp dụng DTW 500 lần trên 14 vectơ phần tử. Cái trước có ý nghĩa hơn với tôi dựa trên những gì tôi đã đọc cho đến nay.
YoungMoney

2
Các cựu thực sự. Bạn cần tìm sự liên kết tối ưu trong ma trận 500x500 (được điền với khoảng cách theo cặp giữa các vectơ 14 chiều)
pichenettes

Ah. Chà có vẻ như tôi lại tham gia cuộc đua một lần nữa
YoungMoney
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.