VoiceHook

使い方

用意するのは.envファイル1つだけです。インストーラーも、アプリ側の設定画面もありません。

セットアップ

  1. zipをダウンロードして解凍する

    ReleasesからVoiceHook-vX.Y.Z-windows-x64.zipを取得して、好きな場所に展開します。中身はexeと.env.example、使い方のテキストです。

  2. .envを作る

    .env.exampleをコピーして.envにリネームし、exeと同じフォルダに置きます。書き換えるのは送信先のURLだけで動きます。

    # 録音した音声の送信先 Webhook URL
    WEBHOOK_URL=https://example.com/webhook/xxxxx
    
    # Basic 認証。要らなければ空のままでよい
    BASIC_AUTH_USER=
    BASIC_AUTH_PASS=
    
    # 録音に使う入力デバイス名(部分一致)。空なら OS の既定を使う
    TARGET_DEVICE_NAME=
    
    # Ogg Opus の目標ビットレート(kbps)。既定 64
    AUDIO_BITRATE_KBPS=64

    .envには送信先のURLや認証情報が入ります。リポジトリにコミットしないでください。

  3. 起動して、話して、Enter

    exeを開くとその場で録音が始まります。EnterSpace(または「送信」ボタン)で送信、Esc(または「破棄」)で捨てられます。送信に成功するとウィンドウは自動で閉じます。

.envの設定項目

exeと同じフォルダに置いた.envが最優先で読まれます。同じものが.env.exampleにも入っています。

キー要否内容
WEBHOOK_URL必須録音した音声の送信先。?source=pcのようなクエリパラメータが必要なら、このURLに直接含めます。
BASIC_AUTH_USER任意Basic認証のユーザー名。認証が要らない受け口なら、空のままで構いません。
BASIC_AUTH_PASS任意Basic認証のパスワード。ユーザー名と両方が入っているときだけAuthorizationヘッダーが付きます。
TARGET_DEVICE_NAME任意録音に使う入力デバイス名を部分一致で指定します。空ならOSの既定の入力デバイスを使います。スペースを含む値は二重引用符で囲みます。
AUDIO_BITRATE_KBPS任意送信するOgg Opusの目標ビットレート。既定は64、指定できる範囲は6〜510です。

Webhookが受け取るリクエスト

送られてくるのはOgg Opusファイルの生バイナリです。受け取る側ではJSONとしてではなく、ファイルとして扱ってください。本文の大きさは64kbpsでおよそ8KB/秒、1分の録音で0.5MB程度です。

メソッドPOST
URLWEBHOOK_URLをそのまま使う
Content-Typeaudio/ogg
本文Ogg Opusファイルの生バイナリ(JSONではありません)
AuthorizationBasic認証を設定したときだけ付与
成功の判定HTTPステータスが2xxなら成功
POST /webhook/XXXXXXXX HTTP/1.1
content-type: audio/ogg
authorization: Basic XXXXXXXXXXXXXXXX
content-length: 8396
host: example.com

OggS........OpusHead....

n8nのWebhookノード、Make、自前のサーバなど、バイナリ本文を受け取れる受け口ならどれでも使えます。文字起こしや要約に流したいときも、この本文をそのまま音声ファイルとして渡せます。

ホットキーで起動する

毎回exeを探しに行くのが面倒なら、Windows標準のショートカット機能でキーを割り当てられます。アプリ側の設定は要りません。

  1. VoiceHook.exeのショートカット(.lnk)を作る。

  2. ショートカットのプロパティを開き、「ショートカットキー」に好きなキー(例: Ctrl+Alt+R)を設定する。

  3. ショートカットをスタートメニューかタスクバーに置く。

これで、どのアプリを使っていてもキー一発で録音を始められます。

うまくいかないとき

「デバイスが見つかりません」と表示される
TARGET_DEVICE_NAMEに書いた名前のデバイスが見つかっていません。名前は部分一致で探すので、一部だけでも構いません。指定を空にすると、OSの既定の入力デバイスで録音します。内蔵マイクで録り違えるのを防ぐため、見つからないときは録音を始めずに止まります。
送信に失敗する
ウィンドウにエラーの内容が出ます。URLの綴り、Basic認証、受け口がaudio/oggの生バイナリを受け取れるかを確かめてください。録音は手元に残っているので、「再送信」で録り直さずに試せます。
起動しても何も起きない
.envがexeと同じフォルダにあるか確認してください。WEBHOOK_URLが無いと動きません。cargo runで動かしているときは、プロジェクトのルートに置いたものが読まれます。
音質を上げたい
AUDIO_BITRATE_KBPSを96〜256あたりに上げます。そのぶん送信するファイルは大きくなります。音声メモの用途なら、既定の64で足ります。

自分でビルドする

WindowsとRust(MSVCツールチェーン)、それにcmakeが必要です。cmakeはaudiopusがlibopusを同梱ビルドするために使われます。

# 開発時の起動確認
cargo run

# リリースビルド(target/release/VoiceHook.exe)
cargo build --release

コードはリポジトリにあります。