7CF Style Tokyo

1999, つまり世紀末マインドで気ままにWEB技術で遊ぼうというコンセプトです

ブラウザの音声入力インターフェース(VUI)を試す

公開日: 2026/03/25 / 更新日: 2026/03/28

WEB
データ処理

ブラウザ標準の Web Speech API を使って、VUIを実装する。

単一HTMLで ↓

<!DOCTYPE html>
<html lang="ja">
<body>
    <button id="start">開始</button>
    <button id="stop">停止</button>
    <div id="result"></div>

    <script>
        const startBtn = document.getElementById('start');
        const stopBtn = document.getElementById('stop');
        const resultDiv = document.getElementById('result');

        const recognition = new (window.SpeechRecognition)();
        recognition.lang = 'ja-JP';
        recognition.continuous = true;
        recognition.interimResults = true;

        startBtn.onclick = () => recognition.start();
        stopBtn.onclick = () => recognition.stop();

        recognition.onresult = (event) => {
            let text = '';
            for (let i = 0; i < event.results.length; i++) {
                text += event.results[i][0].transcript;
            }
            resultDiv.innerText = text;
        };

        recognition.onerror = (event) => {
            resultDiv.innerText = event.error + 'のエラー';
        };
    </script>
</body>
</html>

GUIは、開始ボタンと停止ボタンと聞き取った内容を表示するエリアだけ。recognitionにインスタンスを定義。プロパティは3つで、1. 日本語入力モード、2. 無言でも聞き続けるオン、3. 予測変換オン。.onclickで開始と停止のイベントを設定して、.onresult 、つまり認識結果が来た分だけtextに言葉を追加していく。最低限のエラーハンドリングも追加した。

実際に使ってみた結果がこちら ↓

まず、API経由の割にレスポンスがいい、さらに、あんまり使わなそうな文章を結構早口で喋ったのに正確に聞き取れている。想像以上の結果が出て嬉しい。

ここで気になるのがレートリミットだが、公式には”ベンダーの実装に依存する”となっていて実質発表がない。recognition.continuousについては掲示板で、”元々60秒の制限があったが今は緩和された”との記載あり。つまり、制限は緩いが突然の仕様変更の可能性ありということで、遊びや小規模サービスでの実験的導入に便利なのかもしれない。

ライター

HARLYA

無能アリ

趣味でフルスタック開発をしている。巨人の肩に乗りまくりで四捨五入すればエンドユーザー。

関連記事

Webページをダークモードに切り替えるChrome拡張機能を自作

更新日: 2026/04/08

WEB

PythonでPDFにmp3をバインドする

更新日: 2026/03/28

データ処理

入力したテキストを四国めたんが読み上げるフローを完全ローカルで構築

更新日: 2026/03/28

WEB