音声AIは、エラーを出さずに会議の言葉を捨てる
![]()
📌 先に3行でまとめ
- 🕳️ 設定を2つ変えただけで、7つの文のうち2つが丸ごと消えました。 しかもエラーは一切出ません
- 👻 逆に、誰も喋っていない静かな時間に「ご視聴ありがとうございました」という文字が生まれます(78分の会議で54件)
- 🧭 どちらも画面上は自然に見えます。だから気づけません
以下、実際に測った数字で説明します。難しい言葉には全部かっこで説明をつけました 🙌
🎙️ 会議を録音して文字にするツールを、自分で作っています
ここ数ヶ月、Cypher Yeti という Mac 用のツールを作っています。会議を録音して、喋った内容を自動で文字にするものです。
普通この手のサービスは、録音した音をインターネットの向こうのサーバーに送って処理します。私が作っているのはその逆で、その Mac の中だけで全部やります。 音も文字も外に出ません。
文字にする部分には whisper.cpp を使っています。
🤖 Whisper(ウィスパー) とは、ChatGPT を作った OpenAI が公開している、音声を文字に変える AI のことです。無料で誰でも使えて、自分のパソコンの中だけで動かせます。 その「自分のパソコンで動かす版」が whisper.cpp です。
作りながら、何度も同じ壁にぶつかりました。それは「精度が悪い」という話ではありません。
⚠️ 文字起こしAIで一番怖いのは「間違える」ことではなく、「黙って消える」ことでした。
今日はその話を、実際に測った数字と一緒に書きます。
🕳️ 設定を2つ変えただけで、7つの文のうち2つが消えた
最初に踏んだ落とし穴がこれです。
私はこのツールの音声を録る部分を、anarlog という無料で公開されているプログラム(=誰でも中身を見て使える形で公開されているソフト。オープンソースと呼びます)から持ってきました。その時に、AI に渡す設定値もそのまま引き継ぎました。
⚙️ 設定値(パラメータ) とは、AI に「こういう条件で処理してね」と指示する数字やスイッチのことです。「速度優先」「精度優先」みたいなつまみが何十個もあると思ってください。
42.7秒・7つの文が入った日本語の音声で、つまみを変えながら試した結果です。
| 設定 | 結果 |
|---|---|
🔴 no_timestamps と single_segment を両方オン(引き継いだ設定) |
2つの文が丸ごと消える |
🟡 no_timestamps だけオフ |
1つの文が消える |
| 🟢 両方オフ | 7つの文すべてが正しく出た ✅ |
7つ渡して、5つしか返ってこない。
図は横にスクロールできます →
さらに厄介なのは、返ってきた5つは、それぞれ完璧に正確だったことです。
日本語として自然につながっていて、誤字もない。画面を見ても、どこも壊れて見えません。足りないことに気づく手がかりが、1つもないんです。
🧭 なぜ消えるのか — AIは「時計」を見ながら進んでいる
理由を追いかけると、この AI の作りそのものにたどり着きました。
Whisper は、長い音声を30秒ずつに区切って順番に処理します。
[0〜30秒] → 処理 → 次へ
[30〜60秒] → 処理 → 次へ
[60〜90秒] → 処理 → …
ここが肝心なところです。「次にどこから読み始めるか」を、AI自身が出力した時刻から決めています。
つまり AI は、文字を出しながら「この文は12秒から15秒でした」という時刻の情報も一緒に吐いていて、その時刻を見て次に進む位置を決めているわけです。
図は横にスクロールできます →
その前提で、さっきの2つのつまみを見てみます。
🕐 つまみ その1 — 時刻を出さなくする設定
no_timestamps は、「時刻を出力しなくていいよ」という設定です。時刻が要らない用途なら、出さない方が速くなります。合理的に見えます。
ところが上に書いた通り、次に進む位置を時刻から決めているので、時刻を出させないと進む位置がずれます。 結果、区切りの途中の音声を読み飛ばします。
📦 つまみ その2 — まとめて1つにする設定
single_segment は、「30秒ぶんの結果を1つにまとめてね」という設定です。
こちらは、30秒の区切りをまたいで喋った言葉が落ちます。 29秒から32秒まで喋った文は、前半と後半に分断されたあと、まとめる過程で消えます。
どちらも「軽くするための設定」の顔をしています。実際に速くなります。
代償が会議の中身だとは、設定の名前のどこにも書いていません。 🫠
🤔 「短い音声なら大丈夫」も間違いでした
私は途中まで、こう考えていました。
このツールは音声を30秒ずつ区切って渡している。1回の入力が最初から30秒以内なら、まとめる設定でも問題ないはずだ
これも違いました。30秒ぶんを1つにまとめてしまうと、「誰がいつ喋ったか」が分からなくなります。
会議の記録には「14分20秒に相手がこう言った」という時刻が要ります。 まとめた時点でそれが取れません。
結論はシンプルでした。場合分けは不要。常に両方オフ。 今は自分のメモに「二度とオンに戻さない」と警告として書いてあります。半年後の自分が、また速くしようとして同じ穴に落ちるからです 😇
😱 本当に怖いのは「エラーが出ない」こと
この件で一番の学びは、失敗の種類でした。
- 🚫 エラーメッセージは出ません
- 🚫 記録(ログ)にも警告は残りません
- 🚫 プログラムは「正常に終わりました」と報告します
- 🚫 動作チェック(テスト)も合格します。返ってきた5つの文は、本当に正しいので
壊れているのに、壊れた形跡がどこにもない。
これが AI を仕事に組み込む時の、一番厄介なところだと思っています。
昔ながらのソフトウェアの失敗は、たいてい派手に転びます。画面が固まる、赤い文字が出る、動かなくなる。だから気づけます。
ところが AI は、「7割だけ処理して、それをもっともらしく返す」ということが平気でできます。 出てきたものが自然である限り、欠けている部分は誰にも見えません。
私がこれに気づけたのは、たまたま答えを知っている音声(=何と喋っているか元の原稿がある音声)で試していたからです。本番の会議で使い始めてから気づいていたら、どの会議の何が消えたのかは、永久に分からないままでした。
👻 逆に、静かなところから文字が生えてくる
「消える」の反対もあります。誰も喋っていない時間に、言ってもいない言葉が作られます。
🌀 これを ハルシネーション(=幻覚) と呼びます。AI が、事実でないことを自信満々に作り出してしまう現象です。文章生成AIが嘘の情報を書くのと、同じ仕組みで起きます。
実際の会議78分ぶんを、全部数えました。「音声を細かく調べて、人の声が一切入っていない時間帯」に出力された文字だけを抜き出した結果です。
| 音源 | 声が無い時間に出た行 | 中身 |
|---|---|---|
| 🔊 相手の声(スピーカー側) | 48件 | 「はい」22 /「ご視聴ありがとうございました」15 /「うん」7 / 他4 |
| 🎤 自分の声(マイク側) | 6件 | 「ご視聴ありがとうございました」2 / 他4 |
この54件を全部、自分の目で確認しました。本物の発言は1件も混ざっていませんでした。
📺 なぜ「ご視聴ありがとうございました」なのか
Whisper を触ったことがある人は、この文字列を必ず見たことがあるはずです。
理由は学習元にあります。この AI は YouTube の動画を大量に読んで賢くなっています。 だから「そろそろ終わりそうな静けさ」を感じ取ると、動画の締めの挨拶を書いてしまうわけです 📺
面白かったのは、これが録音の最後だけの現象ではなかったことです。私も最初はそう思っていました。
数えてみると、54件のうち録音の最後に出たものは0件。全部が会議の途中の沈黙でした。
11秒間ずっと「はい」と言い続けている行もありました。誰も喋っていない11秒に、です 😳
📉 「静かなところを消せばいい」は、失敗します
では、この幻覚をどう消すか。
最初に思いつくのは音量です。静かな時間に出た文字は捨てる。 シンプルで良さそうに見えます。
測ってみたら、逆になっていました。
| その時間帯の音の大きさ | |
|---|---|
| 🗑️ 捨てたい側(人の声が無い時間)の最大値 | 0.00384 |
| 💎 残したい側(人の声がある時間)の最小値 | 0.00089 |
捨てたい側の方が、大きい。
図は横にスクロールできます →
つまり音量のどこに線を引いても、本物の発言を巻き込んで消すか、幻覚を通してしまうかの、どちらかにしかなりません。
理由は考えてみれば当然でした。幻覚が出るのは「完全な無音」ではなく、「エアコンの音」「紙をめくる音」「椅子がきしむ音」だけがある時間だからです 🌬️ そういう時間は、遠くで小さく喋っている本物の声より、音としては大きいんです。
🪤 データが少ないと、嘘の分かれ目が見えます
さらに、これは他でも効く教訓でした。
62秒のテスト音声1本で測った時は、本物の声の最小値が 0.0155 で、桁が3つ離れて見えました。 「これは綺麗に分けられる」と思いました。
78分で測り直したら、逆転しました。
📊 少ないデータで測ると、分かれているように見えます。
AI の調整をする時、これは本当に危ないと思います。手元の数本で「効いた」と判断したものが、実際のデータで全部ひっくり返ります。
🧮 結局、何で見分けたか
候補を1つずつ潰していきました。
| 見分ける材料 | 結果 |
|---|---|
| 🤖 AI 自身が出す「ここは無音である確率」 | 全部 0.0000 だった。 この AI では、そもそも値が入ってこない ❌ |
| 🔊 音の大きさで線を引く | 使えない。上に書いた通り逆転している ❌ |
| ⏱️ その時間に、人の声が入った瞬間が1回でもあるか | 使えた。ゼロなら幻覚(78分で間違いゼロ) ✅ |
一番良さそうに見えたのは1つ目でした。AI 自身が「ここは無音っぽいです」と教えてくれるなら、それを信じればいい。
実際に測ったら、全部ゼロでした。 説明書に載っている値でも、使っている AI の種類によっては、中身が入ってきません。
最終的に採ったのは「音がどれくらい大きいか」ではなく「人の声が1瞬でもあるか」でした。
音量は、その時間全体を平均してしまいます。だから20秒の沈黙の中で「うん」と1回だけ言った時間と、完全な無音の20秒が、ほぼ同じ数字になります。
測るべきは大きさではなく、有る/無しだったわけです。 📏
🙅 「怪しい文字列を消す」はやりませんでした
「ご視聴ありがとうございました」という文字列そのものを、リストに載せて消す方法もあります。実際そうしているツールもあります。
これは採用しませんでした。理由は1つです。
🚨 本当に「ありがとうございました」と言った会議で、その行が消える方が、幻覚が残るより悪いから。
会議の記録は、「残っているものは信用できる」という状態を守らないと、使い物になりません。
余計なものが混ざっているのは、読む人が目で飛ばせます。でも消えたものは、二度と取り戻せません。 🕳️
💡 持ち帰ってほしい5つのこと
音声AIに限らず、AI を仕事に使う人全員に効く話だと思っています。
- 🔍 「間違い」より先に「欠落」を疑う。 間違いは目立ちますが、欠落は自然な顔をして紛れ込みます
- 📏 答えを知っている材料で必ず試す。 元の原稿がある音声、中身を暗記している書類。それが無いと、「7割しか処理していない」に永久に気づけません
- 📊 数本で出た傾向を信じない。 桁が3つ離れて見えた指標が、データを増やしたら逆転しました
- ⚙️ 「速くなる設定」は、何を削って速くしているのかを確かめる。 設定の名前は、代償を教えてくれません
- 🗑️ 消す判断を入れる時は、間違って消した時の損害を先に見積もる。 残す害と、消す害は釣り合いません
要約でも、書類の読み取りでも、AI に何かを渡して受け取る仕組みを業務に入れる時は、「返ってこなかったものが何か」を数える仕組みを一緒に作るべきだと、今回強く思いました 🧾
🏔️ 作っているツールについて
![]()
この記事の数字は全部、Cypher Yeti という自作の会議録音ツールを作る過程で測ったものです。
- 🔒 音も文字も、その Mac から出ません(インターネットに送りません)
- 🗣️ 自分の声と相手の声を、別々に録って別々に文字にします
- 🇯🇵 日本語の会議に合わせて調整しています(この記事の判断基準は全部、日本語の実際の会議から決めました)
- 📝 議事録の要約も、その Mac の中の AI でできます
クラウドの議事録サービスに出せない会議 🤐(=秘密保持契約のあるプロジェクト、人事、医療、法務など)を抱えている方には、たぶん刺さります。
👉 買う前に、動く条件と画面を確認する(画面写真11枚)| Cypher Yeti の詳細を見る(¥12,800 買い切り・アカウント不要)
値段や「無制限」の但し書きを他社と並べた記事も書きました 👉 文字起こしツール4種の料金比較
📮 AI導入のご相談
この記事に書いたような「AI を仕事に入れると、どこで壊れるか」の見極めは、実際に手を動かして測らないと分かりません 🔬
- 🤖 生成AIの業務活用(何が任せられて、何が危ないか)
- 🎛️ 手元で動かすAIの構築(データを外に出せない業務向け)
- 🧰 Claude Code / ChatGPT を使った開発の効率化
中小企業・個人事業の方向けに、エンジニアが直接サポートしています。