Как мы можем использовать поток с Web Speech API в 2020 году?

Я хочу передать записанный звук в формате mp3 в Web Speech API (передать любой поток в SpeechRecognition).

Я придумываю несколько ответов в Интернете, которые говорят нам, что это невозможно, но я нашел комментарий к переполнению стека, в котором говорится, что это возможно, и предоставляется код, подтверждающий его утверждение.

Первый комментарий здесь: https://stackoverflow.com/a/46448941/13849624

Он сказал:

Вы можете передать любой поток в SpeechRecognition, поскольку звук записывается на микрофон компьютера.

Но предоставленная им скрипка не работает ...

Вот код:

    const recognition = new webkitSpeechRecognition();
    
    const src = "https://audio00.forvo.com/phrases/mp3/c/8/c81c2618ae7246e5148df5892df485a2_9261923_39.mp3";
    
    const transcript = document.getElementById("transcript");
    
    const audio = new Audio();
    
    recognition.continuous = true;
    recognition.interimResults = true;
    recognition.onresult = function(event) {
      if (event.results[0].isFinal) {
        console.log(event.results[0][0].transcript);
        transcript.textContent = event.results[0][0].transcript;
        recognition.stop();
      }
    }
    
    recognition.onaudiostart = e => {
      console.log("audio capture started");
    }
    
    recognition.onaudioend = e => {
      console.log("audio capture ended");
    }
    
    audio.oncanplay = () => {
      recognition.start();
      audio.play();
    }
    
    fetch(`https://query.yahooapis.com/v1/public/yql?q=select * from data.uri where url="${src}"&format=json&callback=`)
      .then(response => response.json())
      .then(({
          query: {
            results: {
              url
            }
          }
        }) =>
        audio.src = url
      )
      .catch(err => console.error(err));
<div id="transcript"></div>
I can't understand what he did...

Как мы можем использовать поток с Web Speech API?


person Pixier    schedule 02.11.2020    source источник


Ответы (1)


как вы также можете видеть в комментариях к вашей ссылке на https://stackoverflow.com/a/46383699/4278324:
это фактически не передает аудио в реализацию Web Speech API.

он загружает звук, а затем воспроизводит звук (через динамики), поэтому распознавание будет работать только в реальном времени, И если есть физический динамик, И если микрофон может записывать звук динамиков

person russa    schedule 04.12.2020