音声ファイルを一定秒数ごとに分割するツールをgoogle colabで作った。
始めに
どうもこんにちはyoimaさんです!
今回は、Google Colabを使って音声ファイルを一定秒数ごとに分割するツールを作ったので紹介します。
多分全く役に立たないですけどまあこれからもこんな感じなのを投稿すると思います。
ばかなのかな?
準備
まずしたのURLからGoogle Colabを開いてください。Googleアカウントが必要だけどみんな持ってるやろ。
持ってなかったらやばいです。開いたらファイル→ドライブにコピーを作成的なのを押してください。できたらそこでやっていきます。
使い方
ツールの使い方は超簡単です。上から順番に全部実行するだけ!簡単だね!
まあ少し真面目に言うと最初にパッケージ等のインストールを押してその次にファイルをアップロードして分割してダウンロードしますを押しますその下にある5って書いてるところを変えると分割するときの秒数を指定できます。デフォルトだと5秒
実行するとファイルをアップロードってのが出てくるのでそれでファイルをアップロードします。
後はしばらくすると分割されたファイルがZIP形式でダウンロードできます。
他のファイルを分割する際は最初からではなく2個目のところを実行すればいいです。
仕組み
まず最初の部分でffmpegというパッケージをインストールするために、Linuxコマンドapt-getを使用してインストールしています。
次に、ファイルのアップロードと処理のための関数を定義します。safe_remove_file関数は、指定されたファイルが存在する場合に削除します。safe_remove_directory関数は、指定されたディレクトリが存在する場合に削除します。
その後、既存のファイルやディレクトリを削除するために、safe_remove_fileとsafe_remove_directory関数を使用して、"output_directory.zip"と"output_directory"を削除します。
次に、Google Colabのファイルアップロード機能を使用して、音声ファイルをアップロードします。ファイルのアップロード後、uploaded_filesリストにアップロードされたファイルの名前が格納されます。input_file変数には、最初にアップロードされたファイルの名前が代入されます。
その後、ユーザーによって指定された分割する長さ(秒)をsplit_duration変数に格納します。
次に、出力ディレクトリを作成します。このディレクトリは、分割された音声ファイルが保存される場所です。os.makedirs関数を使用して、"output_directory"というディレクトリを作成します。既に存在する場合は、作成をスキップします。
音声ファイルの分割には、ffmpegコマンドを使用します。コマンドリストcommandには、ffmpegコマンドの引数が含まれています。input_fileは入力ファイルの名前を指定し、-fオプションと-segment_timeオプションは、分割する長さを指定します。-cオプションは、コーデックをコピーすることを意味し、-copyオプションは、分割された音声ファイルを保存するディレクトリとファイル名のパターンを指定します。subprocess.run関数を使用して、コマンドを実行します。
分割された音声ファイルをZIPファイルにまとめるために、zipfileモジュールを使用します。zip_file_path変数には、ZIPファイルの名前が格納されます。with文を使用して、zipfile.ZipFileオブジェクトを作成します。このオブジェクトには、ZIPファイルの作成先となるファイルパスと、圧縮形式を指定します。os.walk関数を使用して、"output_directory"以下のファイルとフォルダを再帰的に走査します。ファイルが見つかるたびに、zipf.writeメソッドを使用して、ファイルをZIPアーカイブに追加します。
最後に、ファイルのダウンロードと削除を行います。files.download関数を使用して、作成したZIPファイルをダウンロードします。また、アップロードされたファイルと一時ファイルを削除しています。
なおChat GPTにコードも解説も書いてもらったので自分では全く理解できてないです
最後に
今回はGoogle Colabを使った簡単音声ファイル分割ツールについてご紹介しました!このツールを使えば、長い音声ファイルを一定秒数ごとに簡単に分割することができます。それでは、また次の記事でお会いしましょう!じゃ~ね~!