Подтвердить что ты не робот

Есть ли способ использовать Javascript SpeechRecognition API со звуковым файлом?

Я хочу использовать SpeechRecognition api со звуковым файлом (mp3, wave и т.д.). Возможно ли это?

4b9b3361

Ответ 1

Короткий ответ Нет.

Спецификация Web Speech Api не запрещает это (браузер может позволить конечному пользователю выбрать файл для использования в качестве входного файла), но поток входного аудиосигнала никогда не передается вызывающему javascript-коду (в текущей черновиковой версии), поэтому у вас нет способа прочитать или изменить звук, который вводится в службу распознавания речи.

Эта спецификация была разработана таким образом, что код javascript будет иметь доступ только к тексту результатов, поступающему из службы распознавания речи.

Ответ 2

В основном вы можете использовать его только с устройством default audioinput, которое выбирается на уровне ОС...

Поэтому вам просто нужно воспроизвести файл в default audioinput

Возможны 2 варианта:

1

  • Установить https://www.vb-audio.com/Cable/
  • Обновить системные настройки для использования устройства VCable в качестве default аудиовыхода и аудиоввода
  • Воспроизведите файл с помощью любого аудиоплеера, который у вас есть
  • Признать это... например. используя даже стандартный демонстрационный интерфейс https://www.google.com/intl/fr/chrome/demos/speech.html

Протестировано сегодня, и он отлично работает: -)

2

ЭТО НЕ ИСПЫТАЕТСЯ МЕНЯ, поэтому я не могу подтвердить, что это работает, но вы можете подавать аудиофайл на хром, используя Selenium... точно так же, как

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
ChromeOptions options = new ChromeOptions();
options.addArguments("--allow-file-access-from-files",
                     "--use-fake-ui-for-media-stream",
                     "--allow-file-access",
                     "--use-file-for-fake-audio-capture=D:\\PATH\\TO\\WAV\\xxx.wav",
                     "--use-fake-device-for-media-stream");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

Но я не уверен, заменит ли этот поток default audioinput

Ответ 3

Да, вы можете получить текстовую расшифровку воспроизведения аудиофайла с помощью webkitSpeechRecognition. Качество транскрипта зависит от качества воспроизведения звука.

const recognition = new webkitSpeechRecognition();

const audio = new Audio();

recognition.continuous = true;
recognition.interimResults = true;
recognition.onresult = function(event) {
  if (event.results[0].isFinal) {
    // do stuff with `event.results[0][0].transcript`
    console.log(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();
}

audio.src = "/path/to/audio";

jsfiddle https://jsfiddle.net/guest271314/guvn1yq6/

Ответ 4

Согласно MDN, вы НЕ МОЖЕТЕ сделать это. Вы не можете подавать поток в службу распознавания

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

Это сделано специально, Google хочет продать свой CLOUD SPEECH API

Вам нужно использовать такие сервисы, как API CLOUD SPEECH