SpeechRecognition api をオーディオファイル(mp3、waveなど)で使用したいのですが、可能ですか?
短い答えはいいえです。
Web Speech Api Specification はこれを禁止しません(ブラウザーはエンドユーザーが入力として使用するファイルを選択できるようにする可能性があります)が、オーディオ入力ストリームは呼び出し側のJavaScriptコードに提供されません(現在のドラフトバージョン)。音声認識サービスに入力された音声を読んだり変更したりする方法はありません。
この仕様は、JavaScriptコードが音声認識サービスからの結果テキストにのみアクセスできるように設計されています。
基本的に、OSレベルで選択されているdefault
audioinputデバイスでのみ使用できます...
したがって、default
オーディオ入力にファイルを再生するだけです
可能な2つのオプション:
default
audiooutputおよびaudioinputとして使用するようにシステム設定を更新します今日これをテストしました、そしてそれは完全に機能します:-)
THIS IS NOT TESTED BY ME、したがって私はこれが機能していることを確認できませんが、オーディオファイルをchrome 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を置き換えるかどうかはわかりません
[〜#〜] mdn [〜#〜] によると、それはできません。ストリームを認識サービスにフィードすることはできません
それは大きな問題です... SpeechRecognitionで使用されるマイクを選択することもできません
それは目的によって行われ、GoogleはCLOUD SPEECH APIを販売したいと考えています
CLOUD SPEECH API のようなサービスを使用する必要があります
はい、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";