Skip to content

Improve: 分割ファイル名の連番桁数を最大分割数に応じて自動調整#212

Open
TwQXfJKA wants to merge 1 commit into
litagin02:masterfrom
TwQXfJKA:patch-1
Open

Improve: 分割ファイル名の連番桁数を最大分割数に応じて自動調整#212
TwQXfJKA wants to merge 1 commit into
litagin02:masterfrom
TwQXfJKA:patch-1

Conversation

@TwQXfJKA

Copy link
Copy Markdown

お世話になります。
機能改善のPRになります。ご確認よろしくお願いいたします。

概要

  • 音声分割時のファイル名の連番桁数を音声ファイルごとの分割数の最大値に合わせて動的に調整する機能を追加しました。
    → これによりファイル名の桁数が不足してファイル順序が狂う問題を防止しています。

  • 分割処理前に「プレビュー」フェーズを設け、各ファイルの分割数をワーカースレッドで事前計算し、最大分割数を求めています。
    → その最大桁数を用いて分割時の連番ファイル名のフォーマット幅(num_digits)を決定しています。

  • split_wav関数にnum_digits引数を追加し、ゼロ埋め桁数を柔軟に指定可能にしました。

  • 並列処理用のワーカー関数process_queueを改修し、
    「プレビュー」と「分割処理」の2フェーズをQueueで切り替えながら実行する仕組みを導入しました。

  • 既存の並列処理・エラーハンドリングは維持しつつ、Queueでフェーズ制御を行うことで1回のワーカー起動で2段階処理を行うようにしました。

  • これに伴い、変数やQueueの管理を見直し、num_digits_holder辞書で動的桁数をスレッド間共有しています。

背景・目的

  • これまでは連番ファイル名が固定桁数でなく、ファイル数が多い場合に名前順でのソートが崩れやすい問題がありました。
  • そのため、最大桁数をあらかじめ計算して連番のゼロ埋め幅を決めたい要望がありました。
  • しかし、最大分割数は分割前に分からないため、分割処理の前段階で「分割数のプレビュー」を行う必要があります。

影響範囲

  • コマンドライン引数は変更なし。
  • 出力ファイル名の連番形式のみ変更。
  • 並列処理の動作はおおむね維持しています。
  • 新たに「プレビュー」フェーズ処理が追加されるため、全体の処理時間は約5〜10%程度増加しますが(ファイル数や音声の長さに依存)、ファイル名の桁揃えが均一になり、管理やソートのしやすさが大幅に向上します。
  • このトレードオフは大量のファイルを扱う場合に特に有効であり、後の運用コスト削減に繋がるため、全体としてはメリットが大きいと判断しました。

動作確認

  • Windows11 23H2環境で分割数の多いファイル群を処理し、
    ファイル名の連番桁数が最大分割数に合わせて適切にゼロ埋めされていることを確認済みです。

…sed on max split count

・Added a preview phase to calculate the maximum number of slices per audio file before processing.
・Dynamically determine the number of digits needed for zero-padding slice indices to ensure consistent and properly sortable filenames.
・Updated split_wav to accept a num_digits parameter for zero-padding the file index.
・Combined preview and processing steps into the same worker threads with phase control to optimize resource usage.
・Maintained existing parallel VAD model loading per worker to avoid concurrency issues.
・No functional changes to audio splitting logic; this is purely an improvement for output filename consistency and usability.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant