Xác định cách âm thanh tương tự như lời nói của con người


12

Trong khi tìm kiếm một câu trả lời cho vấn đề này, tôi đã tìm thấy bảng này nên đã quyết định đăng chéo câu hỏi này của tôi từ Stack Overflow.


Tôi đang tìm kiếm một phương pháp xác định sự giống nhau giữa một đoạn âm thanh và giọng nói của con người, được thể hiện bằng số.

Tôi đã tìm kiếm khá nhiều, nhưng những gì tôi tìm thấy cho đến nay (chi tiết bên dưới) không thực sự phù hợp với những gì tôi cần:

  • Một phương pháp là sử dụng phần mềm nhận dạng giọng nói để lấy từ từ một đoạn âm thanh. Tuy nhiên, phương pháp này không thể đưa ra âm thanh "tương tự" như thế nào đối với lời nói của con người; nó thường có thể cho biết có âm thanh trong âm thanh hay không, nhưng nếu không có từ xác định, nó không thể nói gần âm thanh là có những từ đó.
    Ví dụ: Nhân sư CMU , Chuồn chuồn , SHoUT

  • Phương pháp hứa hẹn hơn được gọi là Phát hiện hoạt động bằng giọng nói (VAD). Tuy nhiên, điều này có xu hướng có cùng các vấn đề: các thuật toán / chương trình sử dụng VAD có xu hướng chỉ trả về việc có đạt được ngưỡng hoạt động hay không và không có giá trị "tương tự" trước hoặc sau ngưỡng đó. Ngoài ra, nhiều người chỉ tìm âm lượng, không giống với lời nói của con người.
    Ví dụ: Speex , Listener , FreeSWITCH


Có ý kiến ​​gì không?


1
Từ câu hỏi của bạn, không rõ vấn đề của bạn là A / lấy bản ghi âm và cho biết liệu nó có chứa lời nói của con người hay không (ví dụ về ứng dụng: phát hiện và xóa bài nói của DJ khỏi bản ghi của chương trình radio); hoặc B / lấy đầu vào giọng nói và cho biết âm thanh của nó giống với phân đoạn âm thanh tham chiếu như thế nào. Trong trường hợp là B, bạn muốn đo lường sự giống nhau dựa trên tiêu chí nào. Về giai điệu đường viền? (ví dụ: kết hợp giọng hát với bài hát). Về nhịp điệu và các lớp cụm? (ví dụ: khớp beatboxing / onomatopoeia với một vòng lặp trống). Về âm sắc? (phù hợp với giọng nói với hiệu ứng âm thanh). Hãy cho chúng tôi biết ứng dụng của bạn.
pichenettes

Xin lỗi, vấn đề của tôi là những gì bạn nêu chi tiết trong A. Tôi muốn xác định xem một đoạn âm thanh có phải là lời nói của con người hay không.
Jeff Gortmaker

1
Tôi đã làm việc về một vấn đề liên quan - cố gắng xác định khi nào âm thanh của tiếng ngáy / hơi thở bị "ô nhiễm" bởi lời nói hoặc âm nhạc. Thật khó để thực hiện với bất kỳ độ tin cậy nào, và không dùng đến các thuật toán nhận dạng giọng nói "tiên tiến" (nếu thực tế, chúng thậm chí sẽ hoạt động). Một quan sát của tôi sẽ là lời nói có xu hướng có nhịp điệu không đều, trong khi âm nhạc là (thường) thường xuyên. Điều đó và có lẽ "độ phẳng phổ" đáng để kiểm tra (Tôi vẫn đang đánh giá giá trị của nó cho mục đích của tôi).
Daniel R Hicks

(Một chi tiết tóc hơn: Tôi thấy rằng độ lệch chuẩn chuẩn hóa của độ phẳng phổ được tính từ FFT của âm thanh dường như phản ánh một cái gì đó về chất lượng âm thanh.)
Daniel R Hicks

Câu trả lời:


6

Loại vấn đề này thường được giải quyết bằng cách sử dụng các kỹ thuật máy học.

Chia tín hiệu thành một chuỗi gồm 20ms hoặc 50ms khung hình. Trích xuất các tính năng trên mỗi khung hình. MFCC thường tốt cho loại ứng dụng này, mặc dù có tính năng cụ thể hơn để phát hiện giọng nói (năng lượng điều chế 4 Hz - gần bằng tốc độ mà mọi người nói; tốc độ vượt qua không).

Sau đó, bằng cách sử dụng một tập hợp âm thanh mà bạn đã gắn nhãn thủ công là lời nói / không phải lời nói, hãy huấn luyện một trình phân loại (mô hình hỗn hợp Gaussian, SVM ...) trên các tính năng của khung.

Điều này sẽ cho phép bạn phân loại các khung không ghi nhãn thành các lớp nói / không nói. Bước cuối cùng bao gồm làm mịn các quyết định (một khung được phân loại là không nói được bao quanh bởi hàng trăm khung giọng nói có khả năng là lỗi phân loại), ví dụ như sử dụng HMM hoặc chỉ là bộ lọc trung bình.

Một vài tài liệu tham khảo:

Phân loại lời nói / âm nhạc mạnh mẽ trong tài liệu âm thanh (Pinquier & al) Phân biệt lời nói / âm nhạc cho các ứng dụng đa phương tiện (El-Maleh & al) So sánh các tính năng cho phân biệt đối xử lời nói / âm nhạc (Carey & al)

Lưu ý rằng các tính năng và kỹ thuật phân loại mà họ mô tả cũng có liên quan đến vấn đề 1 lớp phát hiện lời nói (thay vì phân biệt lời nói với điều gì khác). Trong trường hợp này, bạn có thể sử dụng các kỹ thuật mô hình hóa 1 lớp như SVM 1 lớp hoặc chỉ lấy điểm khả năng ra khỏi GMM được đào tạo trên dữ liệu giọng nói như một biện pháp "nói".

Mặt khác, nếu vấn đề của bạn thực sự phân biệt lời nói với một thứ khác (nói âm nhạc), bạn cũng có thể sử dụng rất tốt các phương pháp không giám sát , tập trung vào việc phát hiện ranh giới giữa nội dung âm thanh tương tự - thay vì tự xác định nội dung này.


Cảm ơn, điều này giúp một tấn! Lợi ích của việc phá vỡ tín hiệu thành các cửa sổ nhỏ là gì? Bởi vì đầu ra mà tôi đang tìm kiếm là một giá trị số mô tả toàn bộ phân đoạn âm thanh, sẽ tốt hơn nếu trích xuất các tính năng cho toàn bộ tín hiệu chứ không chỉ các cửa sổ cụ thể?
Jeff Gortmaker

Việc tính toán các tính năng (đặc biệt là các tính năng phổ hoặc cepstral) trên các cửa sổ rất dài sẽ làm trung bình hoặc hủy bỏ một số thuộc tính làm cho lời nói nổi bật. Bạn có thể tự xác minh điều này bằng cách trộn lẫn nhiều đoạn nói ngắn - sẽ khó nhận ra kết quả là lời nói. Do đó, tốt hơn là thực hiện phân loại trên các phân khúc nhỏ; và, trong trường hợp của bạn, tổng hợp điểm số (ví dụ: tính trung bình của điểm số khả năng được đưa ra bởi một GMM; hoặc tính% của các khung được phân loại là lời nói theo phân loại nhị phân).
pichenettes

Nói chính xác hơn, hãy nhớ rằng kích thước thời gian bị "sụp đổ" khi bạn nhìn vào một quang phổ. Ví dụ, phổ công suất của âm 500 Hz theo thời gian với âm 1kHz tương tự như phổ công suất của hai âm đó được phát đồng thời; do đó, phổ công suất, qua một cửa sổ dài, của tín hiệu thay đổi nhiều có thể trông không đại diện cho nội dung của tín hiệu.
pichenettes
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.