SpeechRecognition: start() メソッド
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
start() はウェブ音声 API のメソッドで、音声認識サービスを起動して(マイクまたは音声トラックからの)入力音声を待機し、その認識結果を返します。
構文
start()
start(audioTrack)
引数
audioTrack省略可 Experimental-
音声認識を実行する対象の
MediaStreamTrackインスタンス。指定がない場合、サービスは代わりにユーザーのマイクからの音声認識を試みます。
返値
なし (undefined)。
例外
InvalidStateErrorDOMException-
audioTrackが指定されており、かつ以下のうちの一つまたは両方が真の場合。- このトラックの
kindプロパティがaudioではない。 - このトラックの
readyStateプロパティがliveではない。
- このトラックの
例
>マイクからの音声認識
音声カラーチェンジャーの例では、 SpeechRecognition() コンストラクターを使用して新しい SpeechRecognition オブジェクトインスタンスを作成します。その後、<button> に click イベントハンドラーを設定し、ボタンがクリックされた際に音声認識サービスを開始し、ユーザーのマイクからの音声入力を待機します。
const recognition = new SpeechRecognition();
const diagnostic = document.querySelector(".output");
const bg = document.querySelector("html");
const startBtn = document.querySelector("button");
startBtn.onclick = () => {
recognition.start();
console.log("色のコマンドを受け付ける準備ができました。");
};
結果が正常に認識されると、 result イベントが発生します。返された results リスト内の最初の SpeechRecognitionResult の最初の SpeechRecognitionAlternative の transcript を取得することで、イベントオブジェクトから音声で読み上げられた色を抽出します。その後、 <html> 要素の背景色をその色に設定します。
recognition.onresult = (event) => {
const color = event.results[0][0].transcript;
diagnostic.textContent = `受信した結果: ${color}`;
bg.style.backgroundColor = color;
};
音声トラックからの音声認識
このコード(音声トラック認識デモからの抜粋)は、音声トラックから音声を認識する方法を示しています。まず、新しい SpeechRecognition インスタンスを作成し、その lang を en-US に設定します。次に、結果と診断情報を出力するための <button> 要素と <p> 要素への参照を取得します。
const recognition = new SpeechRecognition();
recognition.lang = "en-US";
const startBtn = document.querySelector("button");
const diagnostic = document.querySelector(".output");
次に、click イベントハンドラ-を <button> に追加します。クリックされると、Audio() コンストラクタ-を使用して新しい <audio> 要素を作成し、MP3 ファイルを読み込みます。MP3 の再生準備が整うと(canplay イベントで判定)、 captureStream() メソッドで MediaStream としてキャプチャし、 getAudioTracks() で音声の MediaStreamTrack を抽出します。
次に音声を再生し(認識を行うために必要)、MediaStreamTrack を start() メソッドに渡して認識を開始します。
startBtn.addEventListener("click", () => {
diagnostic.textContent = "";
console.log("Loading audio track");
const audioElement = new Audio("cheese-on-toast.mp3");
audioElement.addEventListener("canplay", () => {
const stream = audioElement.captureStream();
const audioTrack = stream.getAudioTracks()[0];
audioElement.play();
recognition.start(audioTrack);
console.log("Recognition started");
});
});
認識された音声を出力するため、 result イベントを監視します。イベント発生時に、返された results リスト内の最初の SpeechRecognitionResult に含まれる最初の SpeechRecognitionAlternative の transcript を取得します。転写テキスト自体を出力先の <p> に表示し、信頼度評価をコンソールに記録します。
recognition.addEventListener("result", (event) => {
const speech = event.results[0][0].transcript;
diagnostic.textContent = `音声認識結果: ${speech}.`;
console.log(`信頼度: ${event.results[0][0].confidence}`);
});
仕様書
| Specification |
|---|
| Web Speech API> # dom-speechrecognition-start> |