|
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 |