2011-02-08 30 views
6

Tôi đang phát triển một ứng dụng và tôi cần một số cách để so sánh 2 giọng nếu chúng phù hợp hoặc không, tôi biết rằng Trình nhận dạng giọng nói là một cách để thực hiện điều đó kể từ khi (tôi nghĩ) nó cần phải dịch giọng nói thành chuỗi đầu tiên, nó sẽ không được như vậy thích hợp cho ngôn ngữ khác ngoài lang được hỗ trợ bởi các nhận dạng giọng nói .... bất kỳ ý tưởng? Cũng giống như điện thoại cũ được sử dụng để thực hiện, thẻ thoại mà nó chỉ so sánh đầu vào bằng giọng nói với giọng nói được ghi lại trước đó trong khi thiết lậpSo sánh giọng nói wav trong khẩu lệnh android hoặc thoại (lệnh thoại) API

+0

Bạn đang cố gắng nhận ra rằng cả hai bản ghi âm đều là cùng một loa (xác thực bằng giọng nói hoặc nhận dạng loa) hoặc bạn đang cố gắng xác định rằng cùng một từ đã được nói? Bạn đang kết hợp cái gì? danh tính của người nói hoặc những lời anh ta nói? –

+0

Xin chào. làm thế nào bạn giải quyết điều này? –

Trả lời

5

A tương đối cách đơn giản để thực hiện việc này là sử dụng FFT (Fast Fourier Transform)) để chuyển đổi dữ liệu miền thời gian của tệp WAV gốc thành dữ liệu miền tần số (trong đó mỗi giá trị trong mảng được biến đổi của bạn đại diện cho cường độ/cường độ tương đối của một dải tần số cụ thể).

Nếu cùng một người nói cùng một từ hai lần, dữ liệu miền thời gian kết quả sẽ vẫn rất khác nhau về số lượng trong hai tệp WAV. Chuyển đổi cả hai tệp WAV thành miền tần số (sử dụng cùng kích thước cửa sổ FFT cho cả hai, ngay cả khi hai tệp có độ dài hơi khác nhau) sẽ tạo ra các mảng tần số giống với các tệp WAV gốc hơn.

Thật không may, tôi không thể tìm thấy bất kỳ thư viện FFT nào dành riêng cho Android. Dưới đây là một câu hỏi mà tài liệu tham khảo một số thư viện Java dựa trên:

Signal processing library in Java?

+0

Cảm ơn bạn, nhưng tôi thực sự ngạc nhiên, tại sao điện thoại moto cũ của tôi có thể làm điều đó và android ngu ngốc mới này không thể, omg tôi chỉ muốn ghi lại giọng nói của tôi rồi nói lại và nó sẽ biết nếu nó gần bản gốc! Tôi không muốn làm điều phức tạp này, tôi có nghĩa là nếu họ sẽ được chính xác cùng một vấn đề, nhưng có rất nhiều thuật toán để quyết định nếu nó gần bản gốc hay không, tôi không muốn phát minh lại bánh xe! – rami

+0

Vâng, có vẻ như công cụ nhận dạng giọng nói được nướng vào Android không hoạt động như những gì bạn muốn. Tôi nghĩ rằng các nhà sản xuất đã thực sự di chuyển ra khỏi cách moto của bạn đã nhận dạng giọng nói, vì cách đó cũ hơn phụ thuộc vào việc "đào tạo" điện thoại của bạn để nhận ra giọng nói cụ thể của bạn. Đây là những gì bạn muốn, dĩ nhiên, nhưng nó được coi là một điểm yếu nghiêm trọng và có lẽ là lý do tại sao không ai làm như vậy nữa. – MusiGenesis

+0

MusiGenesis là đúng. Cách cũ để thực hiện nhận dạng giọng nói là điện thoại có tất cả các thư viện và phần mềm xử lý trên thiết bị. Android mở một luồng tới Google và bạn thực sự 'đang nói' với các máy chủ của Google chứ không phải điện thoại của bạn. Các máy chủ sau đó gửi giải thích lại cho điện thoại. Nó chính xác hơn, hỗ trợ nhiều tính năng hơn và tiết kiệm dung lượng trên điện thoại theo cách này. Nhưng, nó gây bất lợi cho những gì bạn đang cố gắng làm, điều đó thật không may. :( – Brandon

1

Một ý tưởng được so sánh sự giống nhau của tiếng nói trong spectograms của họ. Các tính năng trong spectrogram là mạnh mẽ và chống lại tiếng ồn đó là một tài liệu tham khảo tốt để phân tích hai giọng nói. Nếu bạn sử dụng phương pháp này, bạn nên tìm hiểu các tính năng của giọng nói đầu tiên và hơn là bạn cần biết cách so sánh các tính năng trong hai phổ, nó đề cập đến nhận dạng mẫu.

Điều này api http://code.google.com/p/musicg-sound-api/ được viết bằng java và có thể được sử dụng trong Android. Nó bắt sóng phổ.

Các vấn đề liên quan