Web Speech APIを使用した音声認識を停止する方法について、具体的な実装方法とコード例を交えて解説します。

音声認識を途中で停止するには、SpeechRecognitionオブジェクトの`stop()`メソッドを使用します。これにより、実行中の音声認識処理を即座に終了することができます。

基本的な実装方法

const recognition = new webkitSpeechRecognition();

// 音声認識の停止
function stopRecognition() {
    recognition.stop();
}

具体的な実装例

以下は、ボタンクリックで音声認識の開始と停止を制御する完全なコード例です:

const recognition = new webkitSpeechRecognition();
let isRecording = false;

// 音声認識の設定
recognition.continuous = true;
recognition.interimResults = true;
recognition.lang = 'ja-JP';

// 開始ボタンのクリックイベント
document.getElementById('startButton').addEventListener('click', () => {
    if (!isRecording) {
        recognition.start();
        isRecording = true;
    }
});

// 停止ボタンのクリックイベント
document.getElementById('stopButton').addEventListener('click', () => {
    if (isRecording) {
        recognition.stop();
        isRecording = false;
    }
});

// 音声認識結果の処理
recognition.onresult = (event) => {
    const result = event.results[event.results.length - 1][0].transcript;
    document.getElementById('result').textContent = result;
};
<button id="startButton">開始</button>
<button id="stopButton">停止</button>
<div id="result"></div>

エラー処理

音声認識の停止時に発生する可能性のあるエラーに対処するために、以下のようなエラーハンドリングを実装することをお勧めします:

recognition.onerror = (event) => {
    console.error('音声認識エラー:', event.error);
    isRecording = false;
};

recognition.onend = () => {
    isRecording = false;
    console.log('音声認識が終了しました');
};

注意点

  • `stop()`メソッドは実行中の音声認識に対してのみ有効です
  • 音声認識が既に停止している状態で`stop()`を呼び出すとエラーが発生する可能性があります
  • ブラウザの互換性に注意が必要です(特にSafariでは対応が異なる場合があります)

まとめ

音声認識の停止は`stop()`メソッドを使用することで簡単に実現できます。適切なエラー処理と状態管理を実装することで、より安定した音声認識機能を実現することができます。

なお、Web Speech APIはブラウザによってサポート状況が異なるため、実装時には必ずブラウザの互換性をチェックすることをお勧めします。