GitHub Repo
TransformersコミュニティがWhisperのタイムスタンプ付きデコードの不具合を報告、テンソルのバッチ処理で結果が結合または例外が発生
10月7日の開発版での再現報告によると、Whisperのタイムスタンプ付きデコードはgenerateが返す2次元テンソルを正しく処理できず、バッチ結果が結合されたり実行に失敗したりする可能性がある。最小再現例が添えられているが、正式リリースへの影響範囲と上流での修正は未確認だ。

Hugging Face Transformersコミュニティは10月7日、Whisperのbatch_decode(..., decode_with_timestamps=True)で入力コンテナの扱いに一貫性がないと報告した。同じトークンをネストしたPythonリストで渡すと個別にデコードされるが、2次元PyTorchテンソルにすると、複数の結果が1件に連結されたり、例外が発生したりする場合がある。報告では、当日のmainブランチのコミットa96730cを使用し、環境はmacOS arm64とされている。また、Linux x86_64でも同じ挙動が確認されたという。問題報告
最小再現例では、openai/whisper-tinyのプロセッサを読み込み、タイムスタンプとテキストのトークンを手作業で組み合わせるだけでよく、音声モデル全体を実行する必要はない。各行にタイムスタンプトークンが1つずつ含まれる3行のテンソルを渡すと、返るのは1つの文字列になる。各行に複数のトークンが含まれる場合は、テンソルの真偽値が曖昧だというエラーが発生する。報告には、generate(..., return_timestamps=True)の出力をバッチデコードに渡す一連の呼び出し例も記載されている。再現コード
報告者の分析によると、Whisperのデコーダーは入力が「リストのリスト」の場合にのみバッチとして認識する。そのため、2次元テンソルは単一シーケンス用の処理経路に入り、タイムスタンプを処理するループでは単一トークンではなく行全体が読み込まれる。長さ1の行は比較を通過して連結される一方、より長い行では例外が発生する。公式ドキュメントでは、テンソルとNumPy配列をbatch_decodeが受け付ける型として挙げており、タイムスタンプオプションはテキスト内に時間情報を残すと説明している。このため、コンテナの違いは調査に値するAPI互換性の問題となる。Whisperドキュメント
バッチ字幕や音声データの処理パイプラインでは、例外を捕捉するだけでなく、各入力に対応する結果が出力されているか件数を確認することが実務上重要だ。リストを使った再現例に照らすと、ネストしたリストに変換する方法が一時的な回避策になり得るが、利用中のバージョンで検証が必要となる。報告者によれば、タイムスタンプを保持しない経路には影響しない。現時点でページ上にメンテナーによる確認や関連する修正はなく、すべての正式リリースに影響すると結論づけることはできない。今後は型の正規化に関する修正と、テンソル、配列、リストを使ったバッチの回帰テストを追う必要がある。影響範囲と状況