Miobiki

  1. HOME
  2. vscode
  3. 音声でスニペット挿入するVSCode Extensionの開発ログ

音声でスニペット挿入するVSCode Extensionの開発ログ

目次

自分が想像していた通りに作れないことが判明。
忘れないようにメモ。

作ろうとしているもの

音声入力でスニペットを挿入するエクステンション。

自宅作業をした日は極端に発声回数が低く、精神的問題が起きないか心配になりはじめたのが始まり。
あとはプログラミングで声を使えば効率化できるかなとも思った。

たとえば、「arrow function」と言えば

() => {
  
}

が挿入されることが目標

保留までの経緯

Web Speech APIを使って音声認識しようと思っていた。
VSCodeはElectronだから使えるだろうと思っていたが、利用できないことが判明。

軽く調べた時に音声を利用するエクステンションがあったため、てっきりWeb Speech APIを使っているかと思いきやそうではなかった。

たとえば音声入力でコマンド実行するVSCode-VoiceCommands-Extensionの場合、CMUSphinxとjavaで音声認識対応してた。

text to speechを実行するVSCode Speechは、sayパッケージを利用していた。
macだとfnキー2度押しで音声入力が可能だけど、hearコマンドとかないのだろうか。

Web Speech APIが使えない理由としてはエクステンションはElectronで実行しているのではなく、nodeプロセスで実行されているから。1

コメントの続きを見てたら新しいprocessでElectronを起動すればいいんじゃないか2ってあった。面白い。
けど、Electron(Chromium)でWeb Speech APIは利用制限がある3と…

puppeteerでexecutablePathをChromeを向ければ制限回避ができそうだった。
ただ、ヘッドレスモードでWeb Speech APIは利用できない4ためUXを犠牲にしなければならない…

VSCodeのドキュメント見ているとWebview APIを発見。
Webview APIで開いた画面からならWeb Speech APIを使えると考えた。
試してみたところ実行できそうだったが recognition.start()で必ずVSCodeがクラッシュ💣
原因不明。

本命はCMUSphinxな気がしてきた。
けどサラッと見た限りcとかjavaとか使い方がよく分からなかったので一旦保留。

保留しているうちに誰か作ってくれたら悔しいが嬉しい。