適用前に確認
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
宣言サイズが完全に一致する12〜1048576バイトのRIFF WAVEデータ内で最大128チャンクをたどります。
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
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
不明なチャンクと奇数長のパディングを試し、音声をデコードせずに途切れたヘッダーやペイロードを拒否します。
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
RiffMeadowは、プロジェクトのソースと接続したモデルとの会話を使うWindows向けコーディング環境で、ファイル形式の保守を支えます。変更したい読み込み動作から始め、解析したチャンクをアプリケーションがどう使うか特定してください。個々の長さ計算の編集を提案する前に、その経路をモデルに調べてもらいます。
riff_chunks.pyを使う作業では、奇数サイズのチャンクの後、次のヘッダーの前にパディング用バイトが必要なRIFFファイルを調査できます。小さなバイト列の例と期待するチャンク境界を示してください。宣言されたコンテナ長と途中で切れた場合の動作を一緒に確認し、次の読み取りがその位置から始まる理由を説明する提案にします。
変更を調べた後、自分の開発環境で有効な例と途中で切れた例を実行し、利用側を通して読み込み結果を確認してください。未知のチャンクタグを保持または読み飛ばす必要があるなら、それも含めます。形式の走査とアプリケーションの解釈を分けてください。チャンクのバイト列を見つけても、内容が後続のすべての操作に適するとは限りません。
モデル支援には対応するOpenAI互換またはAnthropicのエンドポイントと、必要な認証情報を設定します。利用可能なら拒否応答を抑える処理を施したAIモデル(abliteratedモデル)を選べ、制限はプロバイダーが決めます。ツールとコンテキスト容量はモデルとサーバーに依存します。コード採用の具体的な基準はテスト例と期待する読み込み動作です。
パディングが次のヘッダーの開始位置を変えるため、偶数長だけではオフセットの不具合を見逃します。パディングされたチャンクの後に別のチャンクがあるファイルを示してください。先頭が見つかることだけでなく、返す境界と最終位置を確認します。
対応したい形式の範囲とアプリケーションの動作に従って決めます。走査と解釈は別の方針を使えます。タグ処理の変更前に利用側を調べてもらい、受理するなら未知のタグをテストに含めてください。
宣言されたどの境界が実際のバイト列を超えるかと、呼び出し側が期待する拒否動作を特定してください。必要に応じて短くしたヘッダーやペイロードを含めます。部分的な解析を画面が読み込み成功と誤認しないよう経路をレビューします。
いいえ。そのコードとテストが扱う境界検査だけを確かめたことになります。音声メタデータやサンプルの解釈には追加ロジックが必要です。依頼されたパーサー変更に集中し、後段に依存するならそこも検証してください。
RiffMeadow · 更新日 2026-10-25