17

Tiện ích mở rộng của Google Chrome có hỗ trợ API nhận dạng giọng nói Web Speech của Chrome không? Tôi đã bao gồm một số javascript để tạo ra một đối tượng nhận dạng giọng nói, nhưng khi tôi khởi động phần mở rộng của mình, tôi không được nhắc truy cập micrô.Tiện ích mở rộng của Chrome có hỗ trợ API WebSpeech không?

Đây không phải là vấn đề với mã của tôi. Tôi đã tìm kiếm trên google, nhưng tôi không thể tìm thấy bất kỳ thông tin nào về việc liệu các tiện ích của Chrome có hỗ trợ API Web Speech hay không. Tôi chỉ muốn có một câu trả lời có/không.

Lưu ý: Tôi tin rằng API WebSpeech sẽ không hoạt động đối với các tệp cục bộ.

Trả lời

11

Cập nhật: Dựa trên RobW's answer, câu trả lời này hiện đã lỗi thời và API Web Speech hiện có thể sử dụng được bên trong các tiện ích mở rộng. (Thật không may, tôi không thể xóa câu trả lời này trừ khi OP un-chấp nhận nó.)


Câu trả lời là chưa. Các trang được truy cập thông qua các URL chrome-extension: không thể truy cập bất kỳ API phương tiện nhập liệu nào, bao gồm speechRecognitiongetUserMedia. Bất kỳ nỗ lực nào đối với API sử dụng sẽ ngay lập tức kích hoạt một cuộc gọi lại lỗi.

Tôi ban đầu nghĩ speechRecognition có thể làm việc như geolocation API: popup mở rộng không thể nhắc cho phép định vị, nhưng chrome-extension: trang nạp như các trang đầy đủ trình duyệt thể nhắc cho phép giống như một trang bình thường. Tuy nhiên, API phương tiện không hoạt động theo cách này; chúng không thành công bất kể trang đó là cửa sổ bật lên hay toàn bộ trang.

Có một bug report to fix this và cho phép nhà phát triển chỉ định quyền truy cập phương tiện trong tệp kê khai. Khi lỗi này được khắc phục, các tiện ích có thể có quyền được hiển thị cho phép quyền truy cập micrô/video tự động, do đó không có khả năng nhắc cho phép sẽ trở thành không có vấn đề (và do đó tiện ích có quyền hiển thị thích hợp sẽ có thể sử dụng tự do API giọng nói).

+0

Cảm ơn câu trả lời, nhưng tôi đặc biệt tìm kiếm thông tin trên Web API Speech mẹ đẻ của Chrome.Nếu tôi không nhận được bất kỳ phản ứng nào khác, thì tôi sẽ chấp nhận của bạn! –

+0

@MichaelZhao Bạn có thể làm rõ câu trả lời của tôi có thể cụ thể hơn về API bài phát biểu của Chrome không? Đó là chính xác những gì câu trả lời của tôi nói về (ví dụ, ['webkitSpeechRecognition' API] (http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech- API); đặc tả [ở đây] (https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html)). Có một số khía cạnh khác của API bạn muốn tôi giải quyết không? Hay tôi đã hiểu lầm chính xác API nào bạn muốn nói? – apsillers

+0

Tôi đang trong ấn tượng rằng báo cáo lỗi đề cập đến một API bài phát biểu JS khác. Vô cùng hữu ích. –

15

Các Web Speech APIcó thể đã được tiện ích của Chrome sử dụng, ngay cả trong trang nền và cửa sổ bật lên nút tiện ích mở rộng. Thực tế là nó hoạt động không nhất thiết phải là một tính năng dự định, và trước đây tôi đã giải thích nó hoạt động như thế nào và tại sao nó hoạt động trong this answer đến How to use webrtc insde google chrome extension?. Lời giải thích trước đây là về WebRTC, nhưng nó được áp dụng như nhau đối với Web Speech, và có thể được sử dụng như sau:

  1. Tạo một trường hợp webkitSpeechRecognition và bắt đầu ghi.
  2. Nếu phát hiện lỗi quyền (onerror được kích hoạt với event.error === 'not-allowed'), hãy mở trang tiện ích mở rộng (chrome-extension://[ID]/yourpage.html). Trang mở rộng này có thể được mở trong cửa sổ, tab hoặc iframe mới.
  3. Từ trang này, yêu cầu quyền truy cập vào micrô. getUserMedia và SpeechRecognition đều chia sẻ quyền âm thanh (liên tục), vì vậy để phát hiện xem có cho phép ghi âm hay không, bạn có thể sử dụng getUserMedia để yêu cầu quyền mà không kích hoạt nhận dạng giọng nói. Ví dụ:

    navigator.webkitGetUserMedia({ 
        audio: true, 
    }, function(stream) { 
        stream.stop(); 
        // Now you know that you have audio permission. Do whatever you want... 
    }, function() { 
        // Aw. No permission (or no microphone available). 
    });