Spaces:
Build error
Build error
from pydub import AudioSegment | |
#from pydub.utils import mediainfo | |
from pydub.utils import make_chunks | |
import math | |
#flac_audio = AudioSegment.from_file("sample.flac", "flac") | |
#flac_audio.export("audio.wav", format="wav") | |
def split_audio_wav(filename): | |
myaudio = AudioSegment.from_file(filename , "wav") | |
channel_count = myaudio.channels #Get channels | |
sample_width = myaudio.sample_width #Get sample width | |
duration_in_sec = len(myaudio) / 1000#Length of audio in sec | |
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 #assumption , you can extract from mediainfo("test.wav") dynamically | |
wav_file_size = (sample_rate * bit_rate * channel_count * duration_in_sec) / 8 | |
print("wav_file_size = ",wav_file_size) | |
file_split_size = 40000000 # 40mb OR 40, 000, 000 bytes | |
total_chunks = wav_file_size // file_split_size | |
#Get chunk size by following method #There are more than one ofcourse | |
#for duration_in_sec (X) --> wav_file_size (Y) | |
#So whats duration in sec (K) --> for file size of 40Mb | |
# K = X * 40Mb / Y | |
chunk_length_in_sec = math.ceil((duration_in_sec * 40000000 ) /wav_file_size) #in sec | |
chunk_length_ms = chunk_length_in_sec * 1000 | |
chunks = make_chunks(myaudio, chunk_length_ms) | |
number_chunks=len(chunks) | |
chunks_list=[] | |
#Export all of the individual chunks as wav files | |
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 |