2012-04-16 31 views
19

Khi tôi gọi phương thức startListening của đối tượng SpeechRecognizer, trình nhận dạng giọng nói bắt đầu lắng nghe lời nói. Tôi muốn tạo một dịch vụ đang chờ phát biểu của một từ khóa cụ thể: khi người dùng nói từ khóa này và trình nhận dạng giọng nói phát hiện từ khóa này, khi đó dịch vụ sẽ sẵn sàng nhận lệnh thoại của người dùng.Tôi có thể giữ cho trình nhận dạng giọng nói nghe không giới hạn không?

Để kết thúc này, sau khi một SpeechRecognizer khởi tạo mới, tôi nên gọi phương thức startListening: tôi có thể giữ trình nhận dạng giọng nói nghe không giới hạn không?

+2

có vẻ như bạn đang tạo ra một bản thu nhỏ của Android - Tôi thích !! – Kristian

+1

Mục tiêu là để có thể điều khiển một hoặc nhiều ứng dụng bằng giọng nói. – enzom83

+3

Nhìn vào ứng dụng gọi là Vlingo. Họ thực hiện điều này bằng cách giữ cho ứng dụng chạy trong nền chờ mật khẩu "Hey Vlingo ..." Điều này nghe giống như những gì bạn đang tìm kiếm. Tôi sẽ cố gắng và sàng lọc thông qua nhiều câu hỏi xung quanh đây về việc giữ một dịch vụ chạy trong nền. Điều này nghe giống như một nơi tốt để bắt đầu cho bạn. – gobernador

Trả lời

13

Android Speech recognizer có thể được tùy chỉnh thông qua dữ liệu bổ sung dự định. Xem the android documentation.

public static String thức EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS

Lượng thời gian mà nó cần thực hiện sau khi chúng tôi ngừng nói nghe để xem xét đầu vào đầy đủ. [...]

public static String thức EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS Từ: API Cấp 8

Chiều dài tối thiểu của một lời nói. Chúng tôi sẽ không dừng ghi trước khoảng thời gian này. [...]

public static String thức EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

Lượng thời gian mà nó cần thực hiện sau khi chúng tôi dừng bài phát biểu nghe để xem xét đầu vào có thể hoàn tất. [...]

Đặt tìm kiếm chỉ để chụp các từ có liên quan.

+0

_Ngoài việc triển khai trình nhận dạng, các giá trị này có thể không có effect_, vì vậy chúng tôi có thể giả định rằng các giá trị này không thể thay đổi. Trong trường hợp này, khi trình nhận dạng giọng nói tự động dừng vì nó không phát hiện bất kỳ giọng nói nào của người dùng, tôi nên khởi động lại bằng cách gọi phương thức 'startListening': tuy nhiên, điều này sẽ tạo ra khoảng thời gian mà trình nhận dạng giọng nói không nghe , bởi vì việc khởi động lại nghe có thể không tức thời. Làm thế nào để vượt qua trở ngại này? – enzom83

+0

Bạn có thể triển khai dịch vụ của riêng mình thay vì sử dụng dịch vụ của Google. Nhưng bạn có thực sự thử nghiệm để parametrize Intent? Tôi nghĩ nó đáng để thử. Tôi đã không tự mình làm nhưng tôi đoán (một cách mù quáng) rằng dịch vụ nhận dạng giọng nói ban đầu do Google cung cấp có triển khai sử dụng các tham số này, nếu không, chúng sẽ không được bổ sung sớm (API 8). Sự cố với dịch vụ tùy chỉnh có thể là xung đột giữa bạn và phiên bản gốc. – rockeye

+2

Tôi nhận thấy rằng giá trị mặc định của 'EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS' là khoảng 10 giây, bởi vì nếu tôi không nói, trình nhận dạng giọng nói sẽ tự động ngừng nghe sau khoảng 10 giây. Vì vậy, tôi đặt 'EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS' thành 100000 mili giây: theo cách này, trình nhận dạng giọng nói sẽ không dừng ghi trước khoảng thời gian này (100 giây), nhưng nó luôn dừng sau khoảng 10 giây. – enzom83

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