2010-06-30 70 views
16

Tôi đang xem xét nhận dạng giọng nói trong Android. Chương trình cần phải có nhận dạng giọng nói liên tục. Thư viện chỉ cần khoảng 10 từ. Tôi đã xem xét sử dụng api của Google, nhưng tôi không nghĩ rằng nó sẽ hoạt động. (Tôi không thể có gì che phủ màn hình). Tôi đã nhìn vào những cách khác nhưng không có gì có vẻ như nó sẽ hoạt động. Có thể sử dụng thư viện nhận dạng giọng nói của java hay không có cách nào khác để thực hiện việc này?Nhận dạng giọng nói liên tục Android

Nói tóm lại
1. Cần đầu vào bài phát biểu liên tục
2. 10 từ lúc tối đa
3. có thể đào tạo nếu cần thiết
4. Tổng quan về chương trình - màn hình hiển thị, chờ đợi tiếng nói đầu vào hoặc chạm đầu vào, cập nhật màn hình lặp lại
5. không thể bao gồm những gì đang được hiển thị trên màn hình

Bất kỳ trợ giúp nào sẽ được đánh giá cao.
Cảm ơn trước

+0

4a. Điều gì sẽ xảy ra khi lệnh thoại không được nhận dạng? –

+0

Nếu lệnh không được nhận dạng, chương trình sẽ tiếp tục chờ một bài phát biểu dễ hiểu hoặc chạm vào – Joe

+3

Xin chào Joe, tôi có nhu cầu tương tự. Bạn có thể có được những gì bạn muốn? – wullxz

Trả lời

1

Đây là giải thích của Oracle về Java Speech API Frequently Asked Questions.

+0

Cảm ơn, tôi đã xem xét điều đó . Vấn đề của tôi là điều này có thể được đóng gói cho Android không? Tôi đoán cách tốt nhất là đi và cố gắng thực hiện lời chào. – Joe

+6

Tác phẩm này có hoạt động trên Android không? – longhairedsi

+0

Liên kết bị hỏng. – Zammbi

6

Tôi nghĩ bạn sẽ phải ghi lại âm thanh trực tiếp từ micrô của điện thoại và truyền phát trực tiếp tới dịch vụ nhận dạng của riêng bạn. API nhận dạng của Google được xây dựng dưới dạng Mục đích khởi chạy hộp thoại Nhận dạng của riêng chúng và cung cấp cho bạn kết quả ngược lại. Nếu bạn muốn nhận dạng liên tục mà không cần giao diện người dùng, bạn sẽ phải tự mình xây dựng chức năng đó.

+4

Nếu bạn muốn loại bỏ Giao diện người dùng nhận dạng giọng nói mặc định, bạn cần triển khai RecognitionListner, gọi trực tiếp dịch vụ SpeechRecognition. Bạn có thể tìm thấy mẫu tại đây http://code.google.com/p/my-work-and-play-android/source/browse/trunk/android/speech/SpeechRecognizer/SpeechRecognizer/src/com/SpeechRecognizer/SpeechRecognizerActivity. java – JeeZ

5

CMUSphinx gần đây đã thực hiện nghe liên tục trên nền tảng Android. Bạn có thể tìm thấy bản demo trên wiki page

Bạn có thể định cấu hình một hoặc nhiều từ khóa để nghe, từ khóa mặc định là "máy tính tuyệt vời". Bạn cũng có thể cấu hình ngưỡng phát hiện. Ngôn ngữ hiện được hỗ trợ là tiếng Anh Mỹ và một vài ngôn ngữ khác (tiếng Pháp, tiếng Tây Ban Nha, tiếng Nga, v.v.). Bạn có thể đào tạo mô hình của riêng bạn cho ngôn ngữ của bạn.

Nghe rất đơn giản, bạn tạo một trình nhận dạng và chỉ cần thêm tìm kiếm đốm keyword:

recognizer = defaultSetup() 
      .setAcousticModel(new File(modelsDir, "hmm/en-us-semi")) 
      .setDictionary(new File(modelsDir, "lm/cmu07a.dic")) 
      .setKeywordThreshold(1e-5f) 
      .getRecognizer(); 

    recognizer.addListener(this); 
    recognizer.addKeywordSearch(KWS_SEARCH_NAME, KEYPHRASE); 
    switchSearch(KWS_SEARCH_NAME); 

và xác định một người biết lắng nghe:

@Override 
public void onPartialResult(Hypothesis hypothesis) { 
    String text = hypothesis.getHypstr(); 
    if (text.equals(KEYPHRASE)) 
     // do something 
} 

Thay vì cụm từ chìa khóa duy nhất bạn có thể chỉ định một đường dẫn tập tin lệnh trên hệ thống tệp:

recognizer.addKeywordSearch(KWS_SEARCH, new File(assetsDir, 
      "commands.lst").toString()); 

Tệp lệnh nào commands.lst lệnh chứa một trên mỗi dòng:

oh might computer 
    ok google 
    hello dude 

Để đưa file này trên hệ thống tập tin, bạn có thể đặt nó trong tài sản và chạy syncAssets trên đầu ứng dụng.

+0

Tôi đã tải xuống thành công và chạy bản trình diễn android cho nhân vật bỏ túi, nhưng làm cách nào tôi có thể sử dụng nó trong ứng dụng hiện có của mình? –

1

Sử dụng CMUSphinx library:

  1. Nó sẽ làm việc trong chế độ offline
  2. Bạn có thể đặt tên cho nó lên
  3. Nó sẽ bắt đầu Listening khi bạn gọi tên anh
0

tôi đã có yêu cầu tương tự một vài tháng trước và quyết định viết library của riêng tôi.

Tôi tin rằng nó cũng phù hợp với yêu cầu của bạn;)

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