有没有办法将Javascript SpeechRecognition API与音频文件一起使用?

时间:2017-09-17 19:02:41

标签: javascript html5 speech-recognition

我想将SpeechRecognition api与音频文件(mp3,wave等)一起使用 这可能吗?

5 个答案:

答案 0 :(得分:8)

简短的回答是

Web Speech Api Specification并未禁止此操作(浏览器可以允许最终用户选择要用作输入的文件),但音频输入流永远不会提供给调用的javascript代码(在当前草稿中)版本),因此您无法阅读或更改输入语音识别服务的音频。

此规范的设计使javascript代码只能访问来自语音识别服务的结果文本。

答案 1 :(得分:2)

基本上,您只能在操作系统级别选择的default audioinput设备上使用它...

因此,您只需要将文件播放到default音频输入

可能有两种选择:

1

今天进行了测试,它完美无缺: - )

2

这不是我测试的,所以我无法确认这是否有效,但你可以使用Selenium将音频文件输入到chrome中......就像

一样
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

答案 2 :(得分:0)

是的,可以使用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/

答案 3 :(得分:0)

根据MDN你不能这样做。您无法将任何流提供给识别服务

这是一个大问题......你甚至无法选择SpeechRecognition使用的麦克风

这是出于目的,Google希望出售他们的CLOUD SPEECH API

您需要使用CLOUD SPEECH API

等服务

答案 4 :(得分:0)

Andri 删除了这篇文章,但我会重新发布它,因为我相信它是最准确的答案,除了上面的骇人听闻的答案:

根据MDN,您不能这样做。您不能将任何流输入识别服务

这是个大问题...您甚至无法选择 SpeechRecognition 使用的麦克风

这是有意为之,Google 希望出售他们的 CLOUD SPEECH API

您需要使用 CLOUD SPEECH API 之类的服务