RRiffMeadow
AIコーディングワークスペース

RIFFチャンク境界の走査

宣言サイズが完全に一致する12〜1048576バイトのRIFF WAVEデータ内で最大128チャンクをたどります。

● ● ●RiffMeadow●
ワークフロー · RIFFチャンク境界の走査 ×
def riff_chunks(wire):
    if type(wire) is not bytes or not 12 <= len(wire) <= 1048576:
        raise ValueError("riff.input")
    if wire[:4] != b"RIFF" or wire[8:12] != b"WAVE" or int.from_bytes(wire[4:8], "little")+8 != len(wire):
        raise ValueError("riff.header")
    chunks, pos = [], 12
    while pos < len(wire):
        if len(chunks) == 128 or pos+8 > len(wire):
            raise ValueError("riff.chunk")
        tag = wire[pos:pos+4]
        size = int.from_bytes(wire[pos+4:pos+8], "little")
        start, stop = pos+8, pos+8+size
        next_pos = stop+(size & 1)
        if next_pos > len(wire):
            raise ValueError("riff.truncated")
        chunks.append((tag, wire[start:stop]))
        pos = next_pos
    return chunks
✳RIFFチャンク境界の走査
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
01

適用前に確認

実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。

02

モデル

OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。

03

プロジェクト

不明なチャンクと奇数長のパディングを試し、音声をデコードせずに途切れたヘッダーやペイロードを拒否します。

ワークフロー

RIFFチャンク境界の走査

ワークフロー ↗
ワークフロー
def riff_chunks(wire):
    if type(wire) is not bytes or not 12 <= len(wire) <= 1048576:
        raise ValueError("riff.input")
    if wire[:4] != b"RIFF" or wire[8:12] != b"WAVE" or int.from_bytes(wire[4:8], "little")+8 != len(wire):
        raise ValueError("riff.header")
    chunks, pos = [], 12
    while pos < len(wire):
        if len(chunks) == 128 or pos+8 > len(wire):
            raise ValueError("riff.chunk")
        tag = wire[pos:pos+4]
        size = int.from_bytes(wire[pos+4:pos+8], "little")
        start, stop = pos+8, pos+8+size
        next_pos = stop+(size & 1)
        if next_pos > len(wire):
            raise ValueError("riff.truncated")
        chunks.append((tag, wire[start:stop]))
        pos = next_pos
    return chunks
AIコーディングワークスペース

ヘッダーから最後のチャンクまでファイル読み込みをレビューする

RiffMeadowは、プロジェクトのソースと接続したモデルとの会話を使うWindows向けコーディング環境で、ファイル形式の保守を支えます。変更したい読み込み動作から始め、解析したチャンクをアプリケーションがどう使うか特定してください。個々の長さ計算の編集を提案する前に、その経路をモデルに調べてもらいます。

riff_chunks.pyを使う作業では、奇数サイズのチャンクの後、次のヘッダーの前にパディング用バイトが必要なRIFFファイルを調査できます。小さなバイト列の例と期待するチャンク境界を示してください。宣言されたコンテナ長と途中で切れた場合の動作を一緒に確認し、次の読み取りがその位置から始まる理由を説明する提案にします。

変更を調べた後、自分の開発環境で有効な例と途中で切れた例を実行し、利用側を通して読み込み結果を確認してください。未知のチャンクタグを保持または読み飛ばす必要があるなら、それも含めます。形式の走査とアプリケーションの解釈を分けてください。チャンクのバイト列を見つけても、内容が後続のすべての操作に適するとは限りません。

モデル支援には対応するOpenAI互換またはAnthropicのエンドポイントと、必要な認証情報を設定します。利用可能なら拒否応答を抑える処理を施したAIモデル(abliteratedモデル)を選べ、制限はプロバイダーが決めます。ツールとコンテキスト容量はモデルとサーバーに依存します。コード採用の具体的な基準はテスト例と期待する読み込み動作です。

チャンク形式のファイルリーダーを変える前に

奇数長のチャンクに専用のテスト例が必要なのはなぜですか?

パディングが次のヘッダーの開始位置を変えるため、偶数長だけではオフセットの不具合を見逃します。パディングされたチャンクの後に別のチャンクがあるファイルを示してください。先頭が見つかることだけでなく、返す境界と最終位置を確認します。

未知のタグがあれば読み込みを失敗させるべきですか?

対応したい形式の範囲とアプリケーションの動作に従って決めます。走査と解釈は別の方針を使えます。タグ処理の変更前に利用側を調べてもらい、受理するなら未知のタグをテストに含めてください。

途中で切れたファイルのテストは何を示すべきですか?

宣言されたどの境界が実際のバイト列を超えるかと、呼び出し側が期待する拒否動作を特定してください。必要に応じて短くしたヘッダーやペイロードを含めます。部分的な解析を画面が読み込み成功と誤認しないよう経路をレビューします。

チャンク走査に成功すれば音声は有効ですか?

いいえ。そのコードとテストが扱う境界検査だけを確かめたことになります。音声メタデータやサンプルの解釈には追加ロジックが必要です。依頼されたパーサー変更に集中し、後段に依存するならそこも検証してください。

Windows版をダウンロード ↗

RiffMeadow · 更新日 2026-10-25