VoiceLoupe マイクとブラウザの設定を測る

マイクと、いま使っているブラウザの設定が、通話や録音に合っているかを測ります。 録音した音声はこのブラウザの中だけで処理が完結し、外部に出ることはありません。

[1] いまの状態を測る

マイクの音を測るために使います。音はこのブラウザの中だけで処理が完結し、外部に出ることはありません。測るあいだだけ端末のメモリに置き、ページを閉じるか再読み込みすれば消えます。録音ファイルは作りません。

RMS —
PEAK —
HOLD —
マイクを許可すると、声の大きさがこの帯に出ます
-60 -40 -20 -6 0

単位 dBFS

まずマイクの許可が要ります。許可のあと、ボタンを押すと 5 秒間の測定が始まります。

まだ測っていません

○声 あと 5 秒ほど話すと、声の拾われ方も出ます。

○機 マイクを選んで測ると、ここに出ます。

くわしく — 音の扱いかたを見る

このページは音を 2 系統で受け取ります。表示のための AnalyserNode(リアルタイム)と、 録れ方を測るための AudioWorkletNode(5 秒ぶんの音をメモリ上に取り込む)です。 MediaRecorder は使いません。 外部への通信(CDN・フォント・アナリティクス・fetch)も持ちません。

取り込んだ 5 秒の音は、端末のメモリの上にだけ置き、その場で数値に変換したあと破棄します。 ディスクにファイルとして書き出すことも、サーバーを含むどこかへ送ることもありません。 ページを閉じるか再読み込みすれば、メモリの上のデータも残りません。 解析して得た数値は [5] の「判定の根拠になった測定値」の「くわしく」に出ます。

測った値のうち、セッション最大 RMS などの数値は [3] の「くわしく」に出ます。

取り扱いの方針は プライバシーポリシー に記載しています。

[2] 対処

ここに出る内容は測定値から自動生成しています。人による診断ではありません。 いま用意している対処のルールは 8 件で、一度に出すのは最大 2 件です。原因の上流(物理 → 接続・OS → ブラウザ)から順に出しますが、 その場で適用できる対処が出ている場合は、2 枠のうち 1 枠を必ずそれに割り当てます。

機材の買い替えは書きません。3 つとも効き目が出ないときは、OS 側の入力音量 → 別のマイク → 別のブラウザ、の順に切り分けてください。

[3] 入力レベル

測定を開始すると、声がどれくらいの大きさで届いているかがここに 1 行で出ます。

レベル未計測

くわしく — 数値と入力デバイスを見る
SESSION MAX (RMS) — 測定開始からの最大値 —
入力デバイスの種別 —
製品名(当サイトのリストと照合した結果) —
deviceId —

表示に切り替えても、報告テキスト・コピー・保存・下の生 JSON に機種名は入りません。 切り替えは保存していないため、ページを読み込み直すと必ず非表示に戻ります。

単位は dBFS(0 dBFS = デジタル上限)。目盛は -60 / -40 / -20 / -6 / 0。 RMS は一定時間の平均的な大きさ、PEAK は瞬間の最大値、HOLD は直近のピークを保持する線です。

機種名(MediaDeviceInfo.label)は、マイクを許可すると ブラウザから届くことがあります。届くかどうかはブラウザによって違い、 空の文字列しか返さないブラウザもあります。 そのときは、当サイトの側で読み取りに失敗したのではなく、名前そのものが返ってきていません。 上の「製品名」欄には、どちらの状態なのかをそのまま書いています。

名前が届いた場合も、iOS / macOS では既定で「〇〇のAirPods」のように 持ち主の氏名が入ることがあるため、当サイトは既定でそのままの名前を画面に出しません。 当サイトのリストと照合して一致したときだけ、リスト側の表記で製品名を出し、 一致しなかったときは種別(外部マイク / 内蔵マイク / Bluetooth 機器 / 不明)だけを出します。 届いている名前をその場で見たいときは、上の「機種名を表示する」で切り替えてください。

製品名が出ていないのは、その機種が当サイトのリストに無いか、ブラウザが名前を返していないかのどちらかです。 どちらの場合も測定結果には影響しません(判定は音の測定値だけから出しています)。

[4] このブラウザの音声処理

以下は、このブラウザが申告している設定です。 申告どおりに処理が掛かっているかどうかは、「くわしく」の測定で確かめられます。

くわしく — この画面から切り替えて試す(未指定 / ON / OFF)

切り替えるたびにマイクを開き直します(数秒)。「未指定」は、ブラウザに何も要求せず判断を任せる状態です。 ON・OFF とは別の 3 つ目の状態で、ブラウザ既定の挙動を確かめるときに使います。

くわしく — 切り替えたときの音量の変化を測る

[1] の測定で取った「声の大きさ」を基準として保持しています。 切り替えるたびに同じ 5 秒の測定をして、その差を EFFECT 列に出します。

baseline: —

EFFECT は、同じ環境で 1 回ずつ順に測った結果の差です。2 つを同時に鳴らして聴き比べたものではありません。 AGC・NS は入力があって初めて効くため、計測中は話し続けてください。無音では差が出ません。

くわしく — 16 項目の要求と実際を 1 項目ずつ確かめる

16 個の項目を 1 つずつ「この値にしてほしい」と要求し、受け入れられたか・黙って無視されたか・ そもそも要求できないかを分けて記録します。1 分ほどかかり、その間マイクが 16 回開き直します。 メーターはその間止まります。項目ごとの挙動を細かく確かめたいとき向けの機能です。

この操作は、ブラウザへの要求と実際の値を突き合わせるだけで、声を録りません。 [5] の録れ方の判定と、[6] の解析の段(S5)は、直前の測定のままで変わりません。

まだ照合していません。上のボタンを押すと 16 項目を 1 つずつ確かめます。声は録りません。

「対応」列は getSupportedConstraints() の申告です。false positive が多いため、 判定の信頼側には getSettings() / getCapabilities() を使っています。 「未指定」はブラウザへ制約オブジェクトのキー自体を入れていない状態({} を送る)です。

くわしく — 5 つの API の生 JSON を見る

deviceId / groupId は当サイトの判断でマスクしています(値の存在と型は確認できます)。 label は一切含めていません。

[5] 録れ方の判定

まだ測っていません。[1] の「測定を開始する」を押すと、その 5 秒間の音声からここに判定が出ます。

ここに出る判定のしきい値は、まだ較正していない仮の値です。 測定データから決めた値ではないため、境界のあたりでは、同じような録音でも表示が入れ替わることがあります。 置いている値そのものは、下の「くわしく」で確認できます。

この判定の読み方

  • これは 1 回の録音のスナップショットであり、人を分類するラベルではありません。
  • マイク・距離・部屋・話し方が変われば結果は変わります。
  • 他人との比較ではなく、設定やブラウザを変えたご自身の録音同士の比較にお使いください。
  • 本人確認・話者識別は行いません。声の特徴を保存しません。
  • 医学的な評価ではありません。
  • 呼び名は分かりやすさのための要約です。判断の根拠は、すぐ下の「判定の根拠になった測定値」のほうにあります。
くわしく — 判定に使ったしきい値と、いまは出せない項目を見る

判定は 4 つの段でできています。音を測る段と、その結果を言いかえる「帯」「別枠」「図」の 3 段です。 測った 7 指標を、そのまま帯・別枠・図の上の位置に置き換えているだけで、 ここで新しい測定は起きていません。 しきい値はどれも、まだ較正していない仮の値です。

軸ごとの実測値と、いま置いている境界

いまは出さない呼び名

2 つの軸は X = 通りやすさ(Pickup / 機械に信号として残るか)、 Y = 聞き取りやすさ(Intelligibility / 人に子音が届くか)です。 X には SNR・DR・LVL を入れていません。 これらは「帯」と「別枠」で扱う量で、同じ画面の座標まで一緒に決めてしまうと、3 つの段の役割が混ざるためです。

しきい値の分位点(上位 20 % / 下位 20 %)は内部の条件としてのみ使い、画面には出しません。 順位・平均・偏差値の類はこのページのどこにも表示しません。

[1] の測定中は、サ行を含む 1 文を課題文として画面に出しています。 ただし、その文が実際にそのとおり読まれたかどうかは確かめていません。 このページは音声認識をしておらず、何を話したかは判定していないためです。 サ行の判定(SIB)は、測った 5 秒にサ行が含まれていることを前提にしているので、 課題文と違う内容を読んだときは、この 1 行だけ当てになりません。 発話と判定できた長さが 3.0 秒に満たないときは、[5] の先頭に参考値である旨を出しています。

判定の根拠になった測定値

[1] の 5 秒の測定で取り込んだ音を、そのままこのブラウザの中で解析した値です。 ここに出るのは数値だけで、良い・悪いの判定はしていません。

まだ測っていません。[1] の「測定を開始する」を押すと、その 5 秒間の音声からここに数値が出ます。

くわしく — 算出した 7 指標の数値を見る

7 指標はすべて、同じ 1 本の解析から出しています。 発話区間だけを取り出して長時間平均スペクトル(LTAS)を作り、 TILT / PRES / SIB / ROLL はその帯域比、SNR / DR はフレームごとの RMS から算出します。 BREATH だけは 1 つの帯域比ではなく、 有声の続きかた・スペクトルの平坦さ・高い帯の比の 3 つを合わせた無次元の量で、単位は付きません。 TILT と PRES は大きいほど低域寄り・中高域寄り、という向きです。

参考値と解析の条件

解析の入力は AudioWorkletNode が受け取った無加工の Float32 データです。 MediaRecorder は使いません(圧縮が高域とノイズフロアを偽装するため)。 取り込んだ音は端末のメモリの中だけに置き、解析が終わった時点で破棄します。 ディスクへのファイル保存も、サーバーへの送信もしません。ページを閉じるか再読み込みすれば消えます。

しきい値は未較正の仮値です。 測定は 5 秒あるため、判定が前提とする発話 3.0 秒以上は通常満たせますが、無音や間が長いと届かないことがあります。 この 7 指標を上の [5] で呼び名に置き換えています。 BREATH を使う呼び名(P-4)は、 3 成分を較正前の基準値で無次元化した合成量にもとづくため、必ず「参考」と付けて出します。 この 1 件だけは単独では対処を出しません。

[6] 処理チェーン

声が、マイクからこの画面の数値になるまでに通った道すじです。音が流れる順に上から並べています。 ここに出るのは、このブラウザから実際に読み取れた値だけです。 読み取る手段が無い段は、推測で埋めずに「ブラウザからは検知できません」と出します。

まだマイクを許可していません。いま出ているのは、許可の前でも分かる段だけです。

    段の順序には意味があります。上の段で失われた音は、下の段では戻せません。 たとえばノイズ抑制で削られた音は、この画面の解析からは「元から無かった音」と見分けが付きません。

    この経路のうち、当サイトが手を入れているのは最後の 2 段(S5・S6)だけです。 S1〜S4 で起きたことを当サイトが変えることはできません。読み取って書き出しているだけです。

    くわしく — 検知できない段がある理由を見る

    読めないものを「たぶん OFF です」と書けば表は埋まりますが、それは測定ではありません。 このページは、埋まらない欄を埋めないことを選んでいます。 OK は実測、? は読み取りに失敗、 — は読み取る手段が無い、= はこのページの仕様、です。

    [7] このブラウザでできること / できないこと

    くわしく — このブラウザが扱える項目の一覧を見る

    いま使っているブラウザが、マイクの設定をどこまで扱えるかの一覧です。 扱えない項目があっても、壊れているわけではありません。 そのブラウザに元から無い、という測定結果です。

    いま使っているブラウザが扱える音声設定の一覧
    ブラウザ エコーキャンセル ノイズ抑制 自動ゲイン 音声分離 サンプルレート チャンネル数

    扱えない項目があったときは

    1. 別のブラウザ(Chrome / Firefox / Safari)で同じページを開き、同じ項目がどう出るかを見る
    2. ブラウザ側で扱えない項目は、OS のサウンド設定側にある場合がある
    3. Bluetooth 接続をやめて有線につなぐと、扱える項目が増えることがある

    この結果を開発者へ報告する(テストにご協力いただける方へ)

    上の表は、いまのところ「このブラウザ 1 行」だけです。 この表も、[5] の判定境界も、協力してくださった方の測定結果で埋まっていきます。 いま置いている境界は、測定データから決めたものではありません。 報告が集まるほど、境界を実測に合わせて置き直せるようになります。

    音声はこのブラウザの外に出ません。 作られるのは数値と選択肢だけの文章で、波形も録音ファイルも含みません。 ボタンを押した時点では、まだ何も外へ出ません。 押すまで文章は作られず、作ったあとも、あなたが送る操作をするまで何も出ていきません。 このページに自動で送信する仕組みはありません。

    押しても送信は起きません。作られた文章をその場で読めるようにするだけです。

    「コピーする」と「テキストで保存する」は、端末の中だけで完結します(通信は起きません)。 このページから自動で送られることはありません。送る操作をするのはあなたです。 メールでの受付は行っていません。コピーした全文を お問い合わせフォームに貼り付けてお送りください。

    いただいた内容は、[7] の表を埋めることと、判定のしきい値を合わせることにのみ使います。 個人を特定する情報は含まれておらず、当サイトも集めていません。扱いは プライバシーポリシーに書いてあります。