|
from pydub import AudioSegment
|
|
|
|
from pydub.utils import make_chunks
|
|
import math
|
|
|
|
|
|
def split_audio_wav(filename):
|
|
myaudio = AudioSegment.from_file(filename , "wav")
|
|
channel_count = myaudio.channels
|
|
sample_width = myaudio.sample_width
|
|
duration_in_sec = len(myaudio) / 1000
|
|
sample_rate = myaudio.frame_rate
|
|
print("sample_width=", sample_width)
|
|
print("channel_count=", channel_count)
|
|
print("duration_in_sec=", duration_in_sec)
|
|
print("frame_rate=", sample_rate)
|
|
bit_rate =16
|
|
wav_file_size = (sample_rate * bit_rate * channel_count * duration_in_sec) / 8
|
|
print("wav_file_size = ",wav_file_size)
|
|
file_split_size = 40000000
|
|
total_chunks = wav_file_size // file_split_size
|
|
|
|
|
|
|
|
|
|
chunk_length_in_sec = math.ceil((duration_in_sec * 40000000 ) /wav_file_size)
|
|
chunk_length_ms = chunk_length_in_sec * 1000
|
|
chunks = make_chunks(myaudio, chunk_length_ms)
|
|
number_chunks=len(chunks)
|
|
chunks_list=[]
|
|
|
|
for i, chunk in enumerate(chunks):
|
|
chunk_name = "chunk{0}.wav".format(i)
|
|
print("exporting", chunk_name)
|
|
chunk.export(chunk_name, format="wav")
|
|
chunks_list.append(chunk_name)
|
|
return chunks_list |