我想将SpeechRecognition api与音频文件(mp3,wave等)一起使用 这可能吗?
答案 0 :(得分:8)
简短的回答是否。
Web Speech Api Specification并未禁止此操作(浏览器可以允许最终用户选择要用作输入的文件),但音频输入流永远不会提供给调用的javascript代码(在当前草稿中)版本),因此您无法阅读或更改输入语音识别服务的音频。
此规范的设计使javascript代码只能访问来自语音识别服务的结果文本。
答案 1 :(得分:2)
基本上,您只能在操作系统级别选择的default
audioinput设备上使用它...
因此,您只需要将文件播放到default
音频输入
可能有两种选择:
default
audiooutput和audioinput 今天进行了测试,它完美无缺: - )
这不是我测试的,所以我无法确认这是否有效,但你可以使用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";
答案 3 :(得分:0)
根据MDN你不能这样做。您无法将任何流提供给识别服务
这是一个大问题......你甚至无法选择SpeechRecognition使用的麦克风
这是出于目的,Google希望出售他们的CLOUD SPEECH API
您需要使用CLOUD SPEECH API
等服务答案 4 :(得分:0)
Andri 删除了这篇文章,但我会重新发布它,因为我相信它是最准确的答案,除了上面的骇人听闻的答案:
根据MDN,您不能这样做。您不能将任何流输入识别服务
这是个大问题...您甚至无法选择 SpeechRecognition 使用的麦克风
这是有意为之,Google 希望出售他们的 CLOUD SPEECH API
您需要使用 CLOUD SPEECH API 之类的服务