Я хочу использовать SpeechRecognition api со звуковым файлом (mp3, wave и т.д.). Возможно ли это?
Есть ли способ использовать Javascript SpeechRecognition API со звуковым файлом?
Ответ 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";
Ответ 4
Согласно MDN, вы НЕ МОЖЕТЕ сделать это. Вы не можете подавать поток в службу распознавания
Это большая проблема... Вы даже не можете выбрать микрофон, используемый SpeechRecognition
Это сделано специально, Google хочет продать свой CLOUD SPEECH API
Вам нужно использовать такие сервисы, как API CLOUD SPEECH