2012-09-16 39 views
10

Tôi cần nhận dạng bảng chữ cái được người dùng nói vào micrô của thiết bị. Thiết bị có thể là điện thoại di động được điều khiển bởi Android.Nhận dạng các chữ cái được nói bởi một người sử dụng java

Ví dụ, khi người dùng nói 'R' nó sẽ cho tôi 'R' và không 'Are' ..

Làm thế nào để đạt được sự công nhận lá thư nói này trong java? Tôi đang tìm kiếm những ý tưởng có thể dễ dàng thể hiện bằng mã. Xin đề nghị.

Edit: Dựa trên một gợi ý bởi @ David Hilditch, tôi đã đưa ra bản đồ này sau của nhân vật và lời nói nghe có vẻ họ.

A - ye,a,yay 
B - be, bee, 
C - see, sea, 
D - thee, dee, de 
E - eh, ee, 
F - eff, F 
G - jee, 
H - edge, hedge, hatch, itch 
I - Aye, eye, I 
J - je, jay, joy 
K - kay, ke, 
L - el, yell, hell 
M - am, yam, em 
N - yen, en, 
O - oh, vow, waw 
P - pee, pay, pie 
Q - queue, 
R - are, err, year 
S - yes, ass, S 
T - tee, tea, 
U - you, U 
V - we, wee, 
W - double you, 
X - axe 
Y - why 
Z - zed, zee, jed 
+6

Bạn đã làm gì? – tolgap

+2

mọi nỗ lực cho chủ đề liên quan? bạn đã thử cái gì – ericosg

+0

@tolgap .. Không có gì. Tôi chỉ cần một số gợi ý và cách thức trong thời gian tới .. – Ronnie

Trả lời

3

Tôi nghĩ rằng một lựa chọn tốt là làm theo các hướng dẫn @rmunoz được đăng. Nhưng nếu bạn không muốn sử dụng một hoạt động bên ngoài, sau đó tôi sợ, bạn phải mã nhận dạng văn bản của chính mình. Tôi cũng không chắc chắn, làm thế nào tốt là nhận dạng giọng nói cho các chữ cái trong Android. Tôi cho rằng các cơ chế phía sau được đào tạo cho các từ.

Tôi nghĩ điều này sẽ được thực hiện tốt nhất với Neural Networks. Thứ nhất, bạn sẽ phải thu thập rất nhiều mẫu của những người khác nhau nói chữ cái (cho mỗi lá thư bạn nhận được cho phép nói 2 ví dụ từ một người). Bạn cũng sẽ biểu thị lá thư mà người đó nói. Giả sử theo cách như vậy, bạn nhận được 52 ví dụ từ một người và bạn có 10 người tham gia. Bây giờ bạn đã có 520 ví dụ về các chữ cái nói. Sau đó bạn phải xây dựng mạng Neural của bạn từ các ví dụ được cung cấp. Một hướng dẫn rất hay ở đây là: https://www.coursera.org/course/ml. Sau đó, bạn chỉ cần nhớ mạng thần kinh này (các thông số trong mạng thần kinh), và sử dụng nó để phân loại. Người đó nói điều gì đó trong micrô của họ và mạng nơron phân loại ví dụ mới có được bằng một chữ cái.

Chỉ có một vấn đề. Làm thế nào để đại diện cho âm thanh đầu vào của người dùng, để mạng thần kinh có thể được đào tạo và sau đó phân loại âm thanh này. Bạn phải tính toán một số tính năng quang phổ của âm thanh đầu vào. Bạn có thể đọc điều gì đó về điều đó trong http://www.cslu.ogi.edu/tutordemos/nnet_recog/recog.html. Nhưng tôi khuyên bạn nên xem liên kết đầu tiên trước khi đi sâu vào tiếp theo (nếu bạn chưa biết gì về mạng thần kinh).

Câu trả lời khác có giả thiết, bạn có thể nhận ra các từ như "Có". Nhưng từ sự hiểu biết của tôi về câu hỏi, đây không phải là trường hợp. Vì vậy, bản đồ được đăng trong câu hỏi sẽ không giúp bạn.

6

Bạn có thể sử dụng văn bản từ giọng nói bằng API của Google (xem nhanh http://developer.android.com/reference/android/speech/RecognizerIntent.html).

Sau đó, nếu bạn muốn để suy ra các ngôn ngữ (và sau đó, bảng chữ cái), bạn có thể sử dụng một dự án mở được gọi là "Ngôn ngữ máy dò" dựa trên n-gram:

http://code.google.com/p/language-detection/

Bạn có thể kết hợp nó sử dụng "trùng hợp từ điển" và các tính năng khác mà bạn có thể nhận được từ văn bản.

+0

Tôi đã thấy liên kết đầu tiên trước .. Tôi không muốn khởi chạy một hoạt động khác để nhập liệu bằng giọng nói. Tôi sẽ kiểm tra liên kết thứ hai .. – Ronnie

+0

Liên kết thứ hai là cách sử dụng văn bản (khi bạn có) để suy ra ngôn ngữ -> bảng chữ cái, như bạn đã đề cập trong câu hỏi của mình lần đầu tiên tôi đọc nó. – arutaku

+0

Tôi e rằng bạn phải khởi chạy một hoạt động khác trừ khi bạn mã hóa toàn bộ bộ nhận dạng giọng nói. Tôi luôn luôn sử dụng của google và nó hoạt động thực sự tốt. – arutaku

2

Tôi đến từ nền Speech Rec trên IVR, nhưng bạn có thể sử dụng ngữ pháp ngôn ngữ tùy chỉnh để xác định những lời nói hợp lệ là gì.

Tôi tin rằng bạn có thể sử dụng một cái gì đó như http://cmusphinx.sourceforge.net/wiki/ hoặc http://jvoicexml.sourceforge.net/ để thực hiện nhận dạng thực sự.

và ngữ pháp bạn sẽ nạp có thể trông giống như:

#JSGF V1.0; 

grammar alphabet; 

public <alphabet> = a | b| c |d | e; //etc..... 

của nó một chút thư nhận dư thừa trong một ngữ pháp đã là một phần của ngôn ngữ - nhưng một cách dễ dàng của nó để hạn chế việc nhận dạng trở duy nhất của lời nói bạn muốn giải quyết.

+0

Tôi chỉ hy vọng điều này là có thể .. Sẽ kiểm tra và trở lại .. – Ronnie

+0

Bạn đã đi như thế nào? – NathanS

+0

Thật không may điều này là giữ .. Sẽ đăng một cái gì đó một khi tôi nửa chừng hoặc thực hiện với nó .. – Ronnie

3

Nếu bạn đã có chương trình Java nhận dạng thành công từ 'Are' khi ai đó nói 'R' thì tại sao không chỉ liệt kê 26 từ và dịch chúng?

ví dụ:

Ay, Aye, Ai -> A 
Bee, Be -> B 
Sea, See -> C 
Dee, Deer, Dear -> D 

Điều đó quá đơn giản? Có vẻ như nó sẽ làm việc với tôi và bạn có thể sử dụng bất kỳ phần mềm nhận dạng giọng nói nào bạn thích.

Bạn có lợi thế là có một phạm vi bối cảnh rất hạn chế ở đây (các chữ cái trong bảng chữ cái) vì vậy sẽ mất ít hơn một giờ để định cấu hình điều này.

Bạn có thể lưu bản ghi bất kỳ từ nào không dịch thành công và nghe theo cách thủ công để cải thiện điều tra của bạn. Có nói rằng, tôi chắc chắn phần mềm nhận dạng giọng nói phong nha nhất sẽ có một tùy chọn để hạn chế hệ thống nhận dạng chữ cái và số thay vì từ, nhưng nếu không, hãy thử giải pháp của tôi - nó sẽ hoạt động.

Để xây dựng điều tra của bạn, chỉ cần nói chuyện với hệ thống của bạn và làm cho nó dịch khi bạn đọc bảng chữ cái.

+0

Đây là một điều khác tôi đã có trong tâm trí .. – Ronnie

2

David nói đúng. Vì tập hợp đầu ra của bạn bị giới hạn, bạn có tùy chọn các quy tắc mã hóa tay như Are-> R.

Vấn đề là với các chữ cái tương tự. Ví dụ, người đó có thể đã nói N, nhưng hệ thống của bạn nhận ra nó là M. Bạn có thể xem mô hình ngôn ngữ để dự đoán các chuỗi ký tự có khả năng. Ví dụ: nếu người dùng của bạn đã nói 'Tôi' trước đó và 'G' sau, mô hình ngôn ngữ hai chiều sẽ cho xác suất cao hơn 'N' hơn 'M'.

Và các phương pháp dựa trên từ điển cũng hoạt động tốt. Nếu diễn giải thư dẫn đến một từ trong từ điển so với chữ cái không có trong từ điển Ví dụ: "NOSE" so với "MOSE", hãy chọn chữ cái hợp lệ.

2

Bất kỳ nền tảng Speech-to-text nào đều hoạt động khi cần. This post thảo luận một số tùy chọn có sẵn, bao gồm built-in speech-to-text, một tùy chọn nguồn mở được gọi là CMUSphinx và một nguồn đóng miễn phí option từ Microsoft.

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