質問: ### 前提・実現したいこと Jupyter notebookでwavファイル(4.wav)の部分出力を行い、 指定したディレクトリ("sound")に0~10秒の間隔で"output1.wav"の名前で出力しました。 この10秒の間隔で"4.wav"の部分出力を自動で0秒から最後まで実施できるようなプログラムを作成したいです。 また、wavファイルの名前を出力毎に"output1,2,3,・・・"にできるようにしたいですが、上手くいきません。 ご教授のほど、よろしくお願いいたします。 ### 試したこと 次のコードで"4.wav"を0~10秒部分出力しました。 from pydub import AudioSegment sound=AudioSegment.from_file("4.wav",format="wav") sound1=sound[0:10000] sound1.export("output1.wav",format="wav") <_io.BufferedRandom name='output1.wav'> 現在for...を使用して自動化を試みています。 ### 補足情報(FW/ツールのバージョンなど) python3,7,4で試しております。
回答: 下記を参考にして解決しました。 import wave from pydub import AudioSegment import glob import os cd sound sound=AudioSegment.from_file("4.wav",format="wav") wavf = '4.wav' wr = wave.open(wavf, 'r') ch = wr.getnchannels() width = wr.getsampwidth() fr = wr.getframerate() fn = wr.getnframes() print("Channel: ", ch) print("Sample width: ", width) print("Frame Rate: ", fr) print("Frame num: ", fn) print("Params: ", wr.getparams()) print("Total time: ", 1.0 * fn / fr) st=0 et=st+2000 int=1000 sound1=sound[st:et] while et < fn / fr * 1000 : print(et) print(fn / fr * 1000) sound1.export("output.wav",format="wav") old_name='output.wav' zero_i = "{0:09d}".format(st) new_name = zero_i + ".wav" os.rename(old_name, new_name) print(old_name + "→" + new_name) st=st+int et=st+2000