17

Google Chrome uzantıları, Chrome'un Web Konuşma konuşma tanıma API'sını destekliyor mu? Konuşma tanıma nesnesi oluşturmak için bazı javascript ekledim, ancak uzantımı başlattığımda mikrofon erişimi istenmiyor.Chrome uzantıları WebSpeech API'yi destekliyor mu?

Bu, kodumla ilgili bir sorun değil. Google'da arama yaptım, ancak Chrome uzantılarının Web Speech API'sını destekleyip desteklemediği konusunda hiçbir bilgi bulamıyorum. Sadece evet/hayır cevabı istiyorum.

Not: WebSpeech API'sinin yerel dosyalar için çalışmayacağını düşünüyorum.

cevap

11

Güncelleme:RobW's answer dayanarak, bu yanıt artık güncel değil ve Web Konuşma API'si artık uzantıların içinde kullanılabilir. (OP onu un-kabul edene Ne yazık ki, bu cevabı silemezsiniz.)


cevap henüz değil olduğunu. chrome-extension: URL'lerinden erişilen sayfalar, speechRecognition ve getUserMedia gibi ortam giriş API'lerine erişemez. API'leri kullanma girişimleri hemen bir hata geri çağrısı tetikleyecektir.

Başlangıçta speechRecognition geolocation API gibi işe yarayabilir düşündüm: uzatma pop-up coğrafi konum izin isteyebilir, ancak chrome-extension: sayfalar tam tarayıcı sayfaları olarak yüklenen can sadece normal bir sayfa gibi izin istemi. Ancak, medya API'leri bu şekilde davranmaz; sayfanın pop-up veya tam sayfa olup olmadığına bakılmaksızın başarısız olurlar.

bug report to fix this vardır ve geliştiricilerin bildirimde medya erişim izinlerini belirtmelerine izin verilir. Bu hata düzeltildiğinde, uzantılar otomatik mikrofona/video erişimine izin veren açık-bildirim iznine sahip olabilir, bu nedenle izin isteme yetkisi bir sorun olmayacaktır (bu nedenle uygun izin izinlerine sahip uzantılar serbestçe kullanabilecektir. Konuşma API'sı).

+0

Teşekkürler ama Chrome'un yerli Web Speech API hakkında bilgi için özel arıyorum: Mesela.Başka cevap alamazsam, o zaman seninkini kabul edeceğim! –

+0

@MichaelZhao Yanıtın, Chrome'un konuşma API'sı hakkında daha spesifik olarak hangi yollarla açıklanabileceğini açıklayabilir misiniz? Bu tam olarak benim cevabım hakkında konuşuyor (yani, ['webkitSpeechRecognition' API] (http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech- API), şartname [burada] (https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html)). Benim ele almamı istediğiniz API'nın başka bir yönü var mı? Veya tam olarak hangi API'yi kastettiğimi anladım mı? – apsillers

+0

Hata raporunun başka bir JS konuşma API'sine başvurduğu izlenimine sahibim. Son derece yararlı olsa da. –

15

Web Speech APIzaten hatta arka plan sayfası ve uzatma düğmesi pop-up içinde, Chrome uzantılarından kullanılabilir. Çalıştığı gerçeği, zorunlu olarak tasarlanmış bir özellik değildir ve daha önce nasıl çalıştığını ve neden this answer ile How to use webrtc insde google chrome extension? arasında çalıştığını açıklamıştım. önceki açıklama WebRTC'de hakkında, ancak Web Speech için de geçerlidir ve aşağıdaki gibi kullanılabilir:

  1. bir webkitSpeechRecognition örneğini örneğini ve kaydetmeye başlayın.
  2. Bir izin hatası algılanırsa (onerrorevent.error === 'not-allowed' ile tetikleniyor), bir uzantı sayfası açın (chrome-extension://[ID]/yourpage.html). Bu uzantı sayfası yeni bir pencerede, sekmede veya iframe'de açılabilir.
  3. Bu sayfadan mikrofona erişim isteğinde bulunun. getUserMedia ve SpeechRecognition, (kalıcı) ses iznini paylaşır, böylece ses kaydına izin verilip verilmediğini algılamak için, konuşma tanıma işlemini etkinleştirmeden izin istemek için getUserMedia kullanabilirsiniz. cevap için

    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). 
    });