我想将录制的mp3音频提供给Web Speech API(将任何流提供给SpeechRecognition)。
我在网上提出了一些答案,告诉我们这是不可能的,但是我发现了关于Stack Overflow的评论,他说这是可能的,并提供了代码来证明他的主张。
此处的第一条评论: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>
我们如何在Web Speech API中使用流?
答案 0 :(得分:0)
,您也可以在指向https://stackoverflow.com/a/46383699/4278324的链接的注释中看到:
这实际上并没有将音频流传输到Web Speech API实现
它会加载音频,然后(通过扬声器)播放音频-因此,识别只能实时进行,并且必须有物理扬声器,并且麦克风能够录制扬声器的声音