CLAUDE LABEN
APPLY — ant CLI v1.30.0 に ant apply が入りました。エージェント・環境・スキル・メモリストア・デプロイメントを、リポジトリのファイルから作成・更新できますLOCKFILE — 書き出される claude-lock.json は必ずコミットしてください。忘れると、実行のたびに同じリソースが新しく作られていきますPLAN — ant apply は適用の前に計画を表示し、承認を挟みます。CI で無人実行するなら、この承認をどう扱うかを先に決めておくことですPRICING — Claude Sonnet 5 の 3 ドル / 15 ドルへの値上げは実施されていません。導入価格の 2 ドル / 10 ドルがそのまま標準価格になりましたSOURCE — 価格と版番号は二次ニュースに誤りが混じります。platform.claude.com のリリースノートで裏を取ってから書くようにしていますBETA — Agent Skills と Skills API はベータを抜け、skills-2025-10-02 ヘッダが不要になりました。Files API はヘッダの有無でレスポンス形式が変わる点に注意ですAPPLY — ant CLI v1.30.0 に ant apply が入りました。エージェント・環境・スキル・メモリストア・デプロイメントを、リポジトリのファイルから作成・更新できますLOCKFILE — 書き出される claude-lock.json は必ずコミットしてください。忘れると、実行のたびに同じリソースが新しく作られていきますPLAN — ant apply は適用の前に計画を表示し、承認を挟みます。CI で無人実行するなら、この承認をどう扱うかを先に決めておくことですPRICING — Claude Sonnet 5 の 3 ドル / 15 ドルへの値上げは実施されていません。導入価格の 2 ドル / 10 ドルがそのまま標準価格になりましたSOURCE — 価格と版番号は二次ニュースに誤りが混じります。platform.claude.com のリリースノートで裏を取ってから書くようにしていますBETA — Agent Skills と Skills API はベータを抜け、skills-2025-10-02 ヘッダが不要になりました。Files API はヘッダの有無でレスポンス形式が変わる点に注意です
記事一覧/API & SDK
API & SDK/2026-07-11上級

Whisper が無音区間に『ご視聴ありがとうございました』を書き足していたとき — 日本語文字起こしの幻聴を計測して潰す運用メモ

Whisper の日本語文字起こしは無音や雑音の区間で存在しない定型句を挿入します。no_speech_prob と avg_logprob で幻聴を計測し、VAD で無音を落とし、Claude に検証させて残った混入を潰すまでの実装と運用手順をまとめました。

Claude API121Whisper文字起こし日本語音声AI2品質計測

プレミアム記事

会議の議事録を自動生成するパイプラインを回していたある日、出力に見覚えのない一文が混ざっていました。「ご視聴ありがとうございました」。社内の定例会議です。誰もそんなことは言っていません。

該当箇所の音声を聞き直すと、そこは登壇者が資料を切り替えている数秒の無音区間でした。Whisper は、何も話されていない時間に、存在しない言葉を書き足していたのです。

これは Whisper の日本語文字起こしでよく知られた挙動です。無音や雑音、BGM だけの区間で、学習データに頻出する定型句——「ご視聴ありがとうございました」「チャンネル登録お願いします」——を幻のように出力する。英語圏では "hallucination" と呼ばれる現象です。

ここで整理するのは、Rork や Cowork で作った音声処理パイプラインに Whisper を組み込んだとき、この幻聴を計測して、閾値と前処理と Claude の検証で潰していく手順です。感覚で「消えた気がする」で終わらせず、混入率を数字で追いながら立て直した記録として書きます。

なぜ Whisper は無音で言葉を書き足すのか

Whisper は音声を30秒のチャンクに区切り、それぞれを「何かしらのテキスト」に変換しようとします。問題は、入力が無音でも「出力なし」を選びにくいモデルの性質です。

学習データには YouTube 由来の音声が大量に含まれ、動画の末尾や無音部分に定型句が繰り返し登場します。その結果、モデルは「音声情報が乏しい区間 = 定型句」という偏った対応関係を覚えてしまっています。

区間の状態Whisper の典型的な挙動混入しやすい定型句
完全な無音直前の文の繰り返し、または定型句ご視聴ありがとうございました
BGM・雑音のみ意味の通らない断片や定型句チャンネル登録お願いします
小さな相槌のみ過剰に長い文へ膨張(直前発話の反復)

つまりこれは「聞き取り間違い」ではなく、「情報が足りないときの穴埋め」です。だから対策も、音を正確に聞かせることではなく、穴埋めが起きた区間を検出して落とす方向で考えるのが筋になります。

まず幻聴を計測する — セグメントの確信度を出す

対処の前に計測です。Whisper の verbose_json レスポンスには、セグメントごとに確信度の手がかりが含まれています。これをログに出さないと、どこで幻聴が起きているか分かりません。

見るべき指標は2つです。

指標意味幻聴のサイン
no_speech_probその区間が「無音」である確率高い(0.6超)のにテキストが出ている
avg_logprob出力トークンの平均対数確率(確信度)低い(-1.0未満)= あてずっぽうに近い

no_speech_prob が高いのにテキストがある、しかも avg_logprob が低い——この2つが重なるセグメントが、幻聴のもっとも典型的な形です。

from openai import OpenAI
 
client = OpenAI(api_key="YOUR_API_KEY")
 
def transcribe_with_confidence(audio_path):
    with open(audio_path, "rb") as f:
        result = client.audio.transcriptions.create(
            model="whisper-1",
            file=f,
            language="ja",
            response_format="verbose_json",
            # セグメント単位の確信度を取得する
            timestamp_granularities=["segment"],
        )
 
    flagged = []
    for seg in result.segments:
        # 幻聴の疑いが濃いセグメントを記録する
        suspicious = seg.no_speech_prob > 0.6 and seg.avg_logprob < -1.0
        if suspicious:
            flagged.append({
                "start": round(seg.start, 1),
                "text": seg.text.strip(),
                "no_speech_prob": round(seg.no_speech_prob, 3),
                "avg_logprob": round(seg.avg_logprob, 3),
            })
 
    return result, flagged

まずはこの flagged を数えるところから始めます。私の議事録パイプラインでは、1時間の会議音声あたり平均で約12箇所が引っかかりました。そのうち大半が例の定型句か、直前の文の繰り返しでした。数を先に知ると、後の対策が効いているかどうかを比較できます。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
Whisper が無音・雑音で定型句を挿入する仕組みと、no_speech_prob・avg_logprob でセグメント単位に幻聴を計測する方法
VAD による前処理と閾値フィルタ、そして Claude に文字起こしを検証させる二段構えの実装コード
1時間音声あたり約12箇所の混入を2箇所まで下げた実測と、過剰除去を避けるための週次チェック手順
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

API & SDK2026-03-28
Claude API 音声エージェント本番アーキテクチャ構築ガイド
Whisper/DeepgramとClaude APIを束ねた音声エージェントを、Cloudflare WorkersとGoogle Cloud Runの両方で運用してきた個人開発者の実体験から、レイテンシ予算・コスト逆算・障害切り替え・本番監視の判断材料を整理しました。
API & SDK2026-09-06
訳文は自然なのに、実行時に落ちる翻訳がありました
多言語アプリの文言を Claude API で訳したとき、意味は正しいのに書式指定子だけが壊れることがあります。重大度で分けた受け入れ検査と、壊れた行だけを訳し直す修復ループを実装と実測でまとめました。
API & SDK2026-09-02
thinking ブロックを弾く 400 が出たとき、会話履歴のどこが書き換わっていたか
Claude Fable 5.1 から、thinking ブロックより前の system・tools・messages を書き換えたリクエストが 400 で弾かれるようになりました。自分のエージェントループが該当するかを1リクエストで確かめる手順と、system の組み立て直し・履歴の切り詰めを書き換えなしのやり方へ移す実装をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます