{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":73047,"databundleVersionId":8823072,"sourceType":"competition"}],"dockerImageVersionId":30732,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"from pydub import AudioSegment\nfrom IPython.display import Audio, display\nimport os\n\nfile_path = \"/kaggle/input/ben10/ben10/16_kHz_train_audio/\"\nfile_name = \"train_barishal (1).wav\"\noutput_directory = \"/kaggle/working/copies/\"\n\naudio = AudioSegment.from_wav(file_path + file_name)\n\n# Create output directory if it doesn't exist\nos.makedirs(output_directory, exist_ok=True)\n\nfor i in range(5000):\n    # Generate a new filename for each copy\n    output_file = f\"copy_{i+1}.wav\"\n    \n    # Save the first 10 seconds as a new audio file\n    audio[:10000].export(output_directory + output_file, format=\"wav\")\n\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-06-22T12:55:42.158844Z","iopub.execute_input":"2024-06-22T12:55:42.159633Z","iopub.status.idle":"2024-06-22T12:55:46.102387Z","shell.execute_reply.started":"2024-06-22T12:55:42.159587Z","shell.execute_reply":"2024-06-22T12:55:46.10137Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from pydub import AudioSegment\nimport os\n\nfile_path = \"/kaggle/input/ben10/ben10/16_kHz_train_audio/\"\nfile_name = \"train_barishal (1).wav\"\noutput_directory = \"/kaggle/working/mp3copies/\"\n\n# Load the original audio file\naudio = AudioSegment.from_wav(file_path + file_name)\n\n# Create output directory if it doesn't exist\nos.makedirs(output_directory, exist_ok=True)\n\nfor i in range(5000):\n    # Generate a new filename for each copy\n    output_file = f\"copy_{i+1}.mp3\"\n    \n    # Save the first 10 seconds as a new audio file in MP3 format\n    audio[:10000].export(output_directory + output_file, format=\"mp3\")\n","metadata":{"execution":{"iopub.status.busy":"2024-06-22T12:58:44.903335Z","iopub.execute_input":"2024-06-22T12:58:44.904375Z","iopub.status.idle":"2024-06-22T13:09:41.746367Z","shell.execute_reply.started":"2024-06-22T12:58:44.904333Z","shell.execute_reply":"2024-06-22T13:09:41.745219Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\n\n# Specify the directory path where copies are saved\noutput_directory = \"/kaggle/working/mp3copies/\"\n\n# Function to calculate total size of a directory recursively\ndef get_directory_size(directory):\n    total_size = 0\n    for dirpath, _, filenames in os.walk(directory):\n        for f in filenames:\n            fp = os.path.join(dirpath, f)\n            total_size += os.path.getsize(fp)\n    return total_size\n\n# Call the function to get the total size of the directory\ntotal_size_bytes = get_directory_size(output_directory)\ntotal_size_kb = total_size_bytes / 1024  # Size in KB\ntotal_size_mb = total_size_kb / 1024     # Size in MB\n\nprint(f\"Total size of directory '{output_directory}':\")\nprint(f\"{total_size_bytes} bytes\")\nprint(f\"{total_size_kb:.2f} KB\")\nprint(f\"{total_size_mb:.2f} MB\")\n","metadata":{"execution":{"iopub.status.busy":"2024-06-22T13:19:57.083445Z","iopub.execute_input":"2024-06-22T13:19:57.08414Z","iopub.status.idle":"2024-06-22T13:19:57.128226Z","shell.execute_reply.started":"2024-06-22T13:19:57.084105Z","shell.execute_reply":"2024-06-22T13:19:57.127034Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# display(AudioSegment.from_wav(\"/kaggle/working/repeated_audio.wav\"))\nfrom pydub.utils import mediainfo\n\n# File path\nfile = \"/kaggle/input/ben10/ben10/16_kHz_train_audio/train_barishal (1).wav\"\n\n# Get media info\ninfo = mediainfo(file)\nbit_rate = info.get('bit_rate', 'Unknown')\n\nprint(f\"Bit rate: {bit_rate} bps\")\n","metadata":{"execution":{"iopub.status.busy":"2024-06-22T12:27:16.190579Z","iopub.execute_input":"2024-06-22T12:27:16.191425Z","iopub.status.idle":"2024-06-22T12:27:16.352286Z","shell.execute_reply.started":"2024-06-22T12:27:16.19139Z","shell.execute_reply":"2024-06-22T12:27:16.351031Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport h5py\nimport numpy as np\nfrom pydub import AudioSegment\n\n# Parameters\nnum_files = 5000  # Number of MP3 files to process\noutput_file = 'audio_dataset_compressed.h5'\ninput_directory = \"/kaggle/working/mp3copies/\"  # Directory containing the MP3 files\n\n# Create an HDF5 file\nwith h5py.File(output_file, 'w') as hdf:\n    for i in range(num_files):\n        # Generate file name\n        input_file = f\"{input_directory}copy_{i+1}.mp3\"\n        \n        # Load the MP3 file\n        audio = AudioSegment.from_mp3(input_file)\n        audio = audio.set_frame_rate(16000)  # Set frame rate to 16kHz\n        audio = audio.set_channels(1)  # Set to mono\n        audio_samples = np.array(audio.get_array_of_samples(), dtype=np.int16)\n        \n        # Create a dataset for each audio clip with gzip compression\n        clip_name = f\"clip_{i:06d}\"\n        hdf.create_dataset(clip_name + \"/audio\", data=audio_samples, compression=\"gzip\", compression_opts=9)\n        hdf.create_dataset(clip_name + \"/duration\", data=len(audio))\n\n        if (i + 1) % 100 == 0:\n            print(f\"{i + 1}/{num_files} files processed\")\n\nprint(\"Dataset creation complete!\")\n","metadata":{"execution":{"iopub.status.busy":"2024-06-22T13:36:29.243706Z","iopub.execute_input":"2024-06-22T13:36:29.24419Z","iopub.status.idle":"2024-06-22T13:50:40.090627Z","shell.execute_reply.started":"2024-06-22T13:36:29.244157Z","shell.execute_reply":"2024-06-22T13:50:40.089342Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport h5py\nimport numpy as np\nfrom pydub import AudioSegment\n\n# Parameters\nnum_files = 5000  # Number of WAV files to process\noutput_file = 'wavaudio_dataset_compressed.h5'\ninput_directory = \"/kaggle/working/copies/\"  # Directory containing the WAV files\n\n# Create an HDF5 file\nwith h5py.File(output_file, 'w') as hdf:\n    for i in range(num_files):\n        # Generate file name\n        input_file = f\"{input_directory}copy_{i+1}.wav\"\n        \n        # Load the WAV file\n        audio = AudioSegment.from_wav(input_file)\n        audio = audio.set_frame_rate(16000)  # Set frame rate to 16kHz\n        audio = audio.set_channels(1)  # Set to mono\n        audio_samples = np.array(audio.get_array_of_samples(), dtype=np.int16)\n        \n        # Create a dataset for each audio clip with gzip compression\n        clip_name = f\"clip_{i:06d}\"\n        hdf.create_dataset(clip_name + \"/audio\", data=audio_samples, compression=\"gzip\", compression_opts=9)\n        hdf.create_dataset(clip_name + \"/duration\", data=len(audio))\n\n        if (i + 1) % 100 == 0:\n            print(f\"{i + 1}/{num_files} files processed\")\n\nprint(\"Dataset creation complete!\")\n","metadata":{"execution":{"iopub.status.busy":"2024-06-22T13:52:19.863209Z","iopub.execute_input":"2024-06-22T13:52:19.863693Z","iopub.status.idle":"2024-06-22T13:53:46.275477Z","shell.execute_reply.started":"2024-06-22T13:52:19.863659Z","shell.execute_reply":"2024-06-22T13:53:46.274223Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport h5py\nimport numpy as np\n\n# Parameters\nnum_files = 5000\ninput_directory = \"/kaggle/working/mp3copies/\"\noutput_file = \"audio_data.h5\"\n\n# Create an HDF5 file\nwith h5py.File(output_file, \"w\") as hdf5_file:\n    for i in range(num_files):\n        # Generate file name\n        input_file = f\"{input_directory}copy_{i+1}.mp3\"\n        \n        # Read the MP3 file as binary data\n        with open(input_file, \"rb\") as f:\n            mp3_data = f.read()\n        \n        # Create a dataset for each MP3 file\n        dataset_name = f\"audio_{i+1:05d}\"\n        hdf5_file.create_dataset(dataset_name, data=np.void(mp3_data))\n        \n        if (i + 1) % 100 == 0:\n            print(f\"{i + 1}/{num_files} files processed\")\n\nprint(\"Dataset creation complete!\")\n","metadata":{"execution":{"iopub.status.busy":"2024-06-23T07:13:31.216856Z","iopub.execute_input":"2024-06-23T07:13:31.217607Z","iopub.status.idle":"2024-06-23T07:13:33.75558Z","shell.execute_reply.started":"2024-06-23T07:13:31.217546Z","shell.execute_reply":"2024-06-23T07:13:33.754353Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport h5py\nimport numpy as np\n\n# Parameters\nnum_files = 5000\ninput_directory = \"/kaggle/working/copies/\"\noutput_file = \"Wavaudio_data.h5\"\n\n# Create an HDF5 file\nwith h5py.File(output_file, \"w\") as hdf5_file:\n    for i in range(num_files):\n        # Generate file name\n        input_file = f\"{input_directory}copy_{i+1}.wav\"\n        \n        # Read the WAV file as binary data\n        with open(input_file, \"rb\") as f:\n            wav_data = f.read()\n        \n        # Create a dataset for each WAV file\n        dataset_name = f\"audio_{i+1:05d}\"\n        hdf5_file.create_dataset(dataset_name, data=np.void(wav_data))\n        \n        if (i + 1) % 100 == 0:\n            print(f\"{i + 1}/{num_files} files processed\")\n\nprint(\"Dataset creation complete!\")\n","metadata":{"execution":{"iopub.status.busy":"2024-06-23T07:14:54.241756Z","iopub.execute_input":"2024-06-23T07:14:54.242151Z","iopub.status.idle":"2024-06-23T07:15:00.381083Z","shell.execute_reply.started":"2024-06-23T07:14:54.242122Z","shell.execute_reply":"2024-06-23T07:15:00.379859Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import os\n# import h5py\n# import numpy as np\n# from gtts import gTTS\n# from pydub import AudioSegment\n# import random\n\n# # Parameters\n# num_files = 1000  # Use a smaller number for example purposes\n# output_file = 'audio_dataset_compressed.h5'\n# text_samples = [\"Hello world\", \"This is a test\", \"Sample text for audio generation\"]  # Sample text list\n\n# # Create an HDF5 file\n# with h5py.File(output_file, 'w') as hdf:\n#     for i in range(num_files):\n#         # Generate text\n#         text = random.choice(text_samples)\n        \n#         # Generate speech\n#         tts = gTTS(text=text, lang='en')\n#         temp_file = 'temp.mp3'\n#         tts.save(temp_file)\n        \n#         # Convert to desired format and process\n#         audio = AudioSegment.from_mp3(temp_file)\n#         audio = audio.set_frame_rate(16000)  # Set frame rate to 16kHz\n#         audio = audio.set_channels(1)  # Set to mono\n#         audio_samples = np.array(audio.get_array_of_samples(), dtype=np.int16)\n        \n#         # Create a dataset for each audio clip with gzip compression\n#         clip_name = f\"clip_{i:06d}\"\n#         hdf.create_dataset(clip_name + \"/audio\", data=audio_samples, compression=\"gzip\", compression_opts=9)\n#         hdf.create_dataset(clip_name + \"/text\", data=text.encode('utf-8'))\n#         hdf.create_dataset(clip_name + \"/duration\", data=len(audio))\n        \n#         # Remove temp file\n#         os.remove(temp_file)\n\n#         if (i + 1) % 100 == 0:\n#             print(f\"{i + 1}/{num_files} files processed\")\n\n# print(\"Dataset creation complete!\")","metadata":{},"execution_count":null,"outputs":[]}]}