マイク録音テストを数値化するアプリの作り方 — ノイズフロア測定の落とし穴と、どのオーディオインターフェースでも使える手順

アプリの作り方

マイク録音テストを数値化するアプリの作り方 — ノイズフロア測定の落とし穴と、どのオーディオインターフェースでも使える手順

配信アーカイブを聞き返すと、声の後ろでサーッというヒスノイズが鳴っていた。ゲインを下げ、ノイズ抑制を入れ、録り直して聞き比べる。今度は良くなった気がする。筆者の環境では、この「気がする」が二度も間違っていた。耳と勘の録音テストをやめて、台本・録音・解析を一体化したデスクトップアプリ「Mic Test Recorder」を作った話を書く。測定の考え方はどのオーディオインターフェースでも同じに使えるので、機材選びのおすすめまで含めて一本にまとめた。

【PR】本記事は広告を含みます。後半の機材紹介の商品リンクは Amazon アソシエイトのアフィリエイトリンクです。

目次
  1. このアプリで何が分かるか
  2. 耳と勘のテストで、筆者は二度「存在しない改善」を信じかけた
    1. 失敗1:mp3 の圧縮ノイズを「実際のノイズ」として測った
    2. 失敗2:ノイズゲートの「デジタル無音」を床として測った
  3. 測定の設計 — 下限に張り付いた数値を「無効」と宣告する
    1. 1. 録音は原則 48kHz / 32bit float(非対応機器では自動フォールバック)
    2. 2. ノイズフロアは台本の無音セクションから直接測る
    3. 3. 測定系の下限チェックを毎回自動で走らせる
    4. テイク間の比較は「発話 RMS を −20 dBFS に正規化」して行う
  4. 使い方 — 台本が自動で進むので、録るだけ
  5. GoXLR 以外のオーディオインターフェースでも、手順は変わらない
  6. 録音テストに使えるオーディオインターフェースのおすすめ5機種
  7. 宅録・配信マイクのおすすめ5本
  8. まとめ — 機材を買い替える前に、測る仕組みを作る

このアプリで何が分かるか

Mic Test Recorder は、録音テストの台本を自動進行で表示しながら録音し、終わった直後にノイズフロア(無音時に残っている暗騒音の音量)・SNR(声とノイズの音量差)・クリップの有無を数値で出すデスクトップアプリだ(Python + PySide6 製)。音量の単位はすべて dBFS で、デジタルのフルスケールを 0 として、0 に近いほど大きい。過去のテイクと表で並ぶので、「マイク距離を 15cm から 20cm にしたらノイズフロアが何 dB 動いたか」を録るたびに確認できる。

Mic Test Recorder の準備画面
準備画面。入力デバイス・マイク距離・ラベルを決めて録音を開始する。右は入力レベルメーター、下には直近テイクのノイズフロア・SNR・判定が並ぶ。

作った動機は個人的で、GoXLR(配信向けのミキサー型オーディオインターフェース)と RODE NT2-A の組み合わせで出ていたヒスノイズを、設定を変えながら追い込みたかった。マイク距離・PC との位置関係・コンプやゲートの設定を1つ動かすたびに録音して聞き比べる作業は、3回目で破綻する。どの録音がどの条件だったか分からなくなり、耳の記憶は10分前のテイクすら保持してくれない。

耳と勘のテストで、筆者は二度「存在しない改善」を信じかけた

数値化に踏み切った直接の理由は、ノイズ調査の途中で犯した2つの測定ミスにある。どちらも「改善した」という嬉しい数字が出て、あとから嘘だと分かった。

失敗1:mp3 の圧縮ノイズを「実際のノイズ」として測った

最初の比較は録音を 128kbps の mp3 で残していた。測ったノイズフロアは −86.85 dBFS。以前の録音より 8.2dB も低く、「設定変更が効いた」と判断しかけた。実際は mp3 の符号化ノイズが作る床(筆者の 128kbps 音源の実測でおおよそ −85〜−90 dBFS)に張り付いただけで、マイクから入った実ノイズはそれより上に居た。圧縮音源でノイズフロアは測れない。無圧縮の WAV で録り直すと差は消えた。

失敗2:ノイズゲートの「デジタル無音」を床として測った

次はノイズゲートを全閉設定にした録音で「17.1dB 改善」という数字が出た。サンプル値を見ると、フレーム内の最大振幅が 1〜2 カウント、サンプルの 25〜29% が値 0 ちょうど。ゲートが信号を完全に切り落とした無音を「静かになった」と読んでいた。ゲートを外して全テイクを測り直すと、SNR は 4本とも 29〜32dB でほぼ同じ。改善は無かった。

2つの失敗の構造は同じで、測定値が「測定系の下限」に張り付いているのに、それを実力と読んだ。人間はうれしい方向の数字を疑わない。だからこのチェックはソフトウェアに監視させると決めた。

測定の設計 — 下限に張り付いた数値を「無効」と宣告する

アプリの解析は3つの原則で組んだ。どれも上の失敗の再発防止から逆算している。

1. 録音は原則 48kHz / 32bit float(非対応機器では自動フォールバック)

16bit で録ると量子化ノイズが −96〜−101 dBFS あたり(算出の定義で幅がある)に床を作り、それより静かなノイズフロアと区別が付かなくなる。32bit float はこの床を実用上意識しなくてよい水準まで下げる。mp3 の失敗で懲りたので、保存も無圧縮 WAV 一択にした。

2. ノイズフロアは台本の無音セクションから直接測る

台本の先頭と末尾に「何も喋らない10秒」を置き、そこからノイズフロアを取る。発話の合間から無音を推定するやり方だと、推定ロジック自体が誤差源になる。台本側で無音の場所を確定させれば、解析は切り出して RMS を測るだけで済む。

3. 測定系の下限チェックを毎回自動で走らせる

デジタル無音(ゲートやノイズ抑制ソフトの完全ミュート)と量子化床への接近を毎テイク検査し、引っかかった数値は赤字で「無効」と表示する。判定のしきい値は実際のコードでこう定義している。

DIGITAL_SILENCE_RUN_MS = 10.0
"""この長さ以上連続するゼロ列を「ミュート」とみなす。"""

DIGITAL_SILENCE_RATIO = 0.05
"""長いゼロ列に含まれるサンプルがこの割合を超えたらデジタル無音と判定する。"""

QUANT_FLOOR_MARGIN_DB = 10.0
"""測定値が量子化床にこの dB 差まで近づいたら無効と判定する。"""

10ms 以上続くゼロ列が全体の 5% を超えたら、それは「静かなマイク」の波形として不自然なので無効。測定値が量子化床の 10dB 以内に迫ったら、床を測っているだけかもしれないので無効。保存が 32bit float でも安心はできない。ドライバや OS の共有モードが上流で 16bit 処理をしていれば、波形はその粗い格子に乗ったまま届く。だからアプリは保存形式を信用せず、波形そのものから実効ビット深度を推定して床を割り出す。うれしい数字ほど疑う、を機械にやらせている。

Mic Test Recorder の解析結果画面
解析結果画面(筆者の実測)。上部に「この測定は信用できます」の判定、ノイズフロア −59.52 dBFS・SNR 30.53dB。下の比較表では NVIDIA Broadcast 経由のテイクが −104.54 dBFS と出て、赤字の「ノイズフロア(無効)」判定になっている。ノイズ抑制ソフトが作った無音を実力と誤読しない。

スクリーンショットの比較表に実例が写っている。NVIDIA Broadcast(AI ノイズ抑制)を通した録音はノイズフロア −104.54 dBFS と、一見圧勝の数字が出る。アプリはこれを無効と宣告する。抑制ソフトが無音を書き込んだ結果であって、マイクと部屋が静かになったわけではないからだ。この赤字が無かったら、筆者は三度目の「存在しない改善」を信じていたと思う。

テイク間の比較は「発話 RMS を −20 dBFS に正規化」して行う

ゲインを上げれば声もノイズも一緒に持ち上がる。生のノイズフロア同士を比べると、単にゲインが低いテイクが勝ってしまう。だから比較列には「発話 RMS を −20 dBFS に揃えたときのノイズフロア」を使う。音量差を取り除いた、経路そのものの静かさの比較になる。

使い方 — 台本が自動で進むので、録るだけ

録音テストで面倒なのは「毎回同じ内容を喋る」ことだ。内容が変わると比較にならない。アプリは11セクション・約147秒の台本(JSON で編集可能)を大きな文字で表示し、目安時間のカウントダウン付きで自動進行させる。読み終えたらスペースキーで次へ。

録音中のプロンプター画面
録音中のプロンプター画面。台本がプロンプター形式で表示され、残り秒数と「次へ」の操作だけに集中できる。

台本は無音2区間に加えて、通常の声・小声・大声・サ行(歯擦音)・パ行とバ行(破裂音)・長音・語尾が自然に小さくなる文・数字カウント・間を空けた発声、の9種で構成した。小声は「ゲートが声を切っていないか」、サ行は「高域が刺さらないか」、大声は「クリップしないか」をそれぞれ担当する。録音が終わると数秒で解析画面に切り替わり、テイクは recordings/日時_ラベル/ に WAV・メタ情報・解析結果の3点セットで保存される。

{"id": 2, "kind": "speech", "seconds": 14, "gap_after": 2, "label": "小さい声",
 "text": "セクション2。小さい声です。聞こえていますか。小さな声でも切れずに録れているでしょうか。",
 "instruction": "ささやきに近い小声で"}

GoXLR 以外のオーディオインターフェースでも、手順は変わらない

筆者の環境は GoXLR だが、アプリの録音部は「OS に見えている入力デバイスを選んで録る」だけの作りで、インターフェースの機種を選ばない。Focusrite Scarlett でも YAMAHA AG03MK2 でも、Windows に入力デバイスとして見えていれば同じテストがそのまま走る。

手順は4つ。①マイクをインターフェースに接続し、コンデンサーマイクならファンタム電源(+48V)を入れる。②アプリの入力デバイス欄でそのインターフェースを選ぶ。③「レベル確認」で通常の声のピークがメーターの適正帯(−12〜−6 dBFS。アプリの適正判定と同じ範囲)に収まるよう入力ゲインを合わせる。④録音を開始し、台本に従って読む。これだけだ。

1つだけ注意がある。インターフェースやドライバ側のノイズゲート・ノイズ抑制は、測定の間だけ OFF にする。ゲートが作る無音で測定を壊した失敗2の再演になるからだ。GoXLR 固有なのはおまけ機能だけで、接続時はゲイン・コンプ・ゲートの設定値をテイクのメタ情報へ自動記録する。他機種では設定をラベルやメモ欄に書いておけば、あとから条件を辿れる。

なお、このアプリは筆者の調査用ツールとして作ったもので、現時点で配布はしていない。本記事は設計の考え方と手順の共有が目的だ。同じテストは汎用ツールでも組める。Audacity のような 32bit float 録音対応の録音ソフトで無圧縮 WAV に録り、台本(先頭と末尾に無音10秒)を紙に書いて読み上げれば、この記事の測定原則はそのまま再現できる。

録音テストに使えるオーディオインターフェースのおすすめ5機種

これから機材を揃える人向けに、定番どころを5機種挙げる。選定の軸は「マイクプリのノイズが十分低いこと」「入力ゲインを自分で決められること」の2点で、この記事のテストはどれでも実行できる。筆者が実測で使い込んでいるのは GoXLR だけなので、以下は各製品の公開スペックと定番としての立ち位置に基づく紹介であり、個別の実測比較はしていない。

機種 マイク入力 特徴 向いている人
Focusrite Scarlett Solo (第4世代) おすすめ 1 オートゲインとクリップセーフ搭載。ゲイン設定の失敗を機材側が防ぐ 1人録音・はじめての1台
Focusrite Scarlett 2i2 (第4世代) 2 Solo の2入力版。マイク2本や楽器との同時録音に対応 対談・弾き語り録音まで見据える人
YAMAHA AG03MK2 1 フェーダーとループバック搭載のミキサー型。配信の音作りが1台で完結 ライブ配信が主目的の人
Steinberg UR22C 2 32bit 整数/192kHz 対応、D-PRE マイクプリ、MIDI 端子つき DTM と兼用したい人
MOTU M2 2 ESS Sabre32 DAC、フルカラー液晶のレベルメーター メーター視認性と音質を優先する人

迷ったら Scarlett Solo でいい。この記事のテストの文脈で言うと、第4世代のオートゲインは「レベル確認」の工程を機材が肩代わりしてくれる機能で、録音レベルの決め方が分からない段階の事故を減らせる。配信ミキサーとして使い倒したいなら AG03MK2、という分かれ方だ。

宅録・配信マイクのおすすめ5本

マイク側も挙げておく。ノイズフロアを測る用途では、マイク自体のセルフノイズが低いほど「部屋と経路の実力」が見えやすい。筆者が使っているのは RODE NT2-A で、本記事の測定値(ノイズフロア −59.52 dBFS / SNR 30.53dB)はすべてこのマイクで録った。セルフノイズ 7dBA と静かな部類なので、ヒスノイズの原因切り分けで「マイクは犯人ではない」と早々に確定できた。指向性3種・ローカット・パッドを本体スイッチで切り替えられるのも、条件を変えて測り比べるこの記事の用途と相性がいい。他の4本は公開スペックと定番評価に基づく紹介で、筆者の実測はしていない。

  • audio-technica AT2020 — 入門の定番。迷ったらこれで録音テストを始めて、不満が出た箇所で買い替える。
  • HyperX QuadCast 2 S — USB 接続の配信向けコンデンサー。32bit/192kHz 級の録音、単一・無・双・ステレオの4指向性切替、タップミュート。インターフェースを買わずに1本で完結させたい人向け。
  • RODE NT2-A — 筆者使用。セルフノイズ 7dBA の大口径で、指向性3種・80Hz/40Hz ローカット・パッドを本体で切替できる。
  • SHURE MV7i — ダイナミックマイクにオーディオインターフェースを内蔵した変わり種。USB-C 1本で完結し、コンボジャックに XLR マイクや楽器をもう1ch 追加できる。
  • marantz professional MPM-1000 — 低価格帯ながらウィンドスクリーン・ショックマウント・スタンドまで付属。まず録音テストという行為を試したい人の1本目。

まとめ — 機材を買い替える前に、測る仕組みを作る

筆者の判断はこうだ。マイクの音に不満が出たら、機材や設定を変える前に、録音テストを毎回同じ手順・同じ数値で取れる状態を先に作る。数値で比べられない改善は思い込みで終わる。筆者は mp3 の圧縮床とノイズゲートの無音、二度も「改善した」を信じかけて、測定系の下限チェックをコードに固定した。

専用アプリまで作らなくても、原則は今日から真似できる。無圧縮 WAV で録る。台本の先頭に無音10秒を置く。ノイズ抑制とゲートは測定中だけ切る。比較は声の音量を揃えてから。この4つを守るだけで、録音テストは「気がする」から実測になる。

録った音声を文字起こしまで持っていく話はWhisper 文字起こしアプリの作り方で、録音品質が日本語音声認識の精度にどう効くかの実測はWhisper vs Parakeet 日本語対決で書いている。マイクを整えた次の一歩にどうぞ。

Claude Code のスクリーンリーダーモード — 機械処理に流用しようとして間違えたClaude Code のスクリーンリーダーモード — 機械処理に流用しようとして間違えた前のページ

Gemini Notebook のコード実行、公式は仕様を出していない — 出回っている数字は別物の API のもの次のページGemini Notebook のコード実行、公式は仕様を出していない — 出回っている数字は別物の API のもの

ピックアップ記事

  1. New Eden Intelligence Hub の作り方 — EVE Onl…

  2. 競艇予想AIの作り方 — LightGBMで「当たる順位」を学習させる実装ガイド…

  3. Claude Mission Control の作り方 — Tauri+Pyth…

  4. 高精度OCRデスクトップアプリの作り方 — PaddleOCR-VLとPyIns…

関連記事

  1. 都市開発シミュを作る③|需要・成長・経済の決定論シミュレーション(MVP完成)【Aurum City制作】

    アプリの作り方

    都市開発シミュを作る③|需要・成長・経済の決定論シミュレーション(MVP完成)【Aurum City…

    需要・成長・経済で街を動かす決定論シミュレーションの作り方。種から回す…

  2. 都市開発シミュを作る②|AIでドット絵タイルを生成+道路オートタイリング【Aurum City制作】
  3. ブラウザで動く都市開発シミュを作る①|React+TypeScript+Canvasの土台と3レイヤ設計【Aurum City制作】
  4. ブラウザゲームを自動テスト&デプロイ⑥|puppeteerヘッドレス検証と静的配信【Archipelago Saga制作・完結】

    アプリの作り方

    ブラウザゲームを自動テスト&デプロイ⑥|puppeteerヘッドレス検証と静的配信【Archipel…

    1万行のゲームを手で全クリアせず「動いている」を機械に証明させる。pu…

  5. AIでゲーム素材を量産する⑤|生成→透過切り出し(BiRefNet)→配置のパイプライン【Archipelago Saga制作】

    アプリの作り方

    AIでゲーム素材を量産する⑤|生成→透過切り出し(BiRefNet)→配置のパイプライン【Archi…

    絵が描けなくても、AIで世界観の揃った立ち絵・背景・アイコンを揃える。…

  6. Grokで回すXメディア生成パイプラインの作り方 — 検索から画像・音声・動画まで自動化する

注目

AIで、ここまで作れる

AIで作った2D RPGを、ブラウザでそのまま遊べます。その「作り方=最後まで完成させる進め方」も実例つきで公開中。

▶ ゲームを遊ぶやり方を読む

PR

お名前.com 独自ドメイン取得(PR)

独自ドメイン:お名前.com(本サイトで使用・PR)

  1. Dependabot が既定3日のクールダウンを導入 — 「切る前に読む」設定と自動マージの組み合わせ方

    AI・テック動向

    Dependabot が既定3日のクールダウンを導入 — 「切る前に読む」設定と…
  2. アプリの作り方

    MiniMax H3のライセンスを条文まで読んだ — 地域制限と、H3の規約には…
  3. New Eden Intelligence Hub の作り方 — EVE Online の SSO×ESI API で市場・資産・戦闘を一画面に集約する自分専用ダッシュボード

    アプリの作り方

    New Eden Intelligence Hub の作り方 — EVE Onl…
  4. Claude Code の /doctor が診断して直す — 肥大化した設定の健診

    AI・テック動向

    Claude Code の /doctor が診断して直す — 肥大化した設定の…
  5. 日本語の文字起こし、Whisperより良いモデルはあるのか。測り方を3回間違えながら比べた記録

    アプリの作り方

    日本語の文字起こし、Whisperより良いモデルはあるのか。測り方を3回間違えな…
PAGE TOP

TAG CLOUD

ドラッグで回転・クリックでそのタグの記事一覧へ