{
  "id": 446279,
  "title": "timeout when converting wav to mp3",
  "url": "/competitions/bengaliai-speech/discussion/446279",
  "author_name": "nagohachi",
  "post_date": "2023-10-11T02:57:17.316000",
  "votes": 0,
  "comment_count": 0,
  "views": 0,
  "content": "<p>I'd like to process <code>.mp3</code> files in <code>bengaliai-speech/test_mp3s</code> to <code>.wav</code> files, but my submission <strong>timeouts</strong>.<br>\nIf anyone succeeds in converting <code>.mp3</code> to <code>.wav</code> files, could you please teach me how to do it?</p>\n<p>I did in this way (using <code>Parallel</code> in <code>joblib</code>):</p>\n<pre><code> pathlib  Path\n os\n shutil\n joblib  Parallel, delayed\n pydub  AudioSegment\n numpy  np\n pandas  pd\n tqdm.notebook  tqdm\n\nROOT = Path.cwd().parent\nINPUT = ROOT / \nDATA = INPUT / \nTEST = DATA / \n\ntest = pd.read_csv(DATA / , dtype={: })\ntest_ids = test[]\n\n!cp -r ..//bengaliai-speech/test_mp3s .\n\n\nn_splits = (, (test_ids))\ntest_ids_split = (np.array_split(test_ids, n_splits))\n\n ():\n    \n    src_path = \n    dst_path = \n    sound = AudioSegment.from_mp3(src_path)\n    sound = sound.set_frame_rate()\n    sound.export(dst_path, =)\n\n ():\n    !mkdir test_wavs\n\n    _ = Parallel(n_jobs=-)(\n        delayed(process)(test_id)  test_id  tqdm(test_ids)\n    )\n\n    \n    \n\n    \n    !rm -rf test_wavs\n\n test_ids  test_ids_split:\n    convert_preprocess(test_ids)\n</code></pre>\n<p>Notebook is <a href=\"https://www.kaggle.com/nagohachi/convert-test-mp3s-mp3-to-wav-timeouts\" target=\"_blank\">here</a></p>",
  "messages": [
    {
      "id": 2476963,
      "postDate": "2023-10-11T02:57:17.317Z",
      "content": "<p>I'd like to process <code>.mp3</code> files in <code>bengaliai-speech/test_mp3s</code> to <code>.wav</code> files, but my submission <strong>timeouts</strong>.<br>\nIf anyone succeeds in converting <code>.mp3</code> to <code>.wav</code> files, could you please teach me how to do it?</p>\n<p>I did in this way (using <code>Parallel</code> in <code>joblib</code>):</p>\n<pre><code> pathlib  Path\n os\n shutil\n joblib  Parallel, delayed\n pydub  AudioSegment\n numpy  np\n pandas  pd\n tqdm.notebook  tqdm\n\nROOT = Path.cwd().parent\nINPUT = ROOT / \nDATA = INPUT / \nTEST = DATA / \n\ntest = pd.read_csv(DATA / , dtype={: })\ntest_ids = test[]\n\n!cp -r ..//bengaliai-speech/test_mp3s .\n\n\nn_splits = (, (test_ids))\ntest_ids_split = (np.array_split(test_ids, n_splits))\n\n ():\n    \n    src_path = \n    dst_path = \n    sound = AudioSegment.from_mp3(src_path)\n    sound = sound.set_frame_rate()\n    sound.export(dst_path, =)\n\n ():\n    !mkdir test_wavs\n\n    _ = Parallel(n_jobs=-)(\n        delayed(process)(test_id)  test_id  tqdm(test_ids)\n    )\n\n    \n    \n\n    \n    !rm -rf test_wavs\n\n test_ids  test_ids_split:\n    convert_preprocess(test_ids)\n</code></pre>\n<p>Notebook is <a href=\"https://www.kaggle.com/nagohachi/convert-test-mp3s-mp3-to-wav-timeouts\" target=\"_blank\">here</a></p>",
      "rawMarkdown": "I'd like to process `.mp3` files in `bengaliai-speech/test_mp3s` to `.wav` files, but my submission **timeouts**.\nIf anyone succeeds in converting `.mp3` to `.wav` files, could you please teach me how to do it?\n\nI did in this way (using `Parallel` in `joblib`):\n\n```python\nfrom pathlib import Path\nimport os\nimport shutil\nfrom joblib import Parallel, delayed\nfrom pydub import AudioSegment\nimport numpy as np\nimport pandas as pd\nfrom tqdm.notebook import tqdm\n\nROOT = Path.cwd().parent\nINPUT = ROOT / \"input\"\nDATA = INPUT / \"bengaliai-speech\"\nTEST = DATA / \"test_mp3s\"\n\ntest = pd.read_csv(DATA / \"sample_submission.csv\", dtype={\"id\": str})\ntest_ids = test[\"id\"]\n\n!cp -r ../input/bengaliai-speech/test_mp3s .\n\n# 1. divide test_ids to 10 segments in order to prevent storage error\nn_splits = min(10, len(test_ids))\ntest_ids_split = list(np.array_split(test_ids, n_splits))\n\ndef process(train_id):\n    # 2. convert ./test_mp3s/*.mp3 to ./test_wavs/*.wav\n    src_path = f'./test_mp3s/{train_id}.mp3'\n    dst_path = f'./test_wavs/{train_id}.wav'\n    sound = AudioSegment.from_mp3(src_path)\n    sound = sound.set_frame_rate(16000)\n    sound.export(dst_path, format=\"wav\")\n\ndef convert_preprocess(test_ids):\n    !mkdir test_wavs\n\n    _ = Parallel(n_jobs=-1)(\n        delayed(process)(test_id) for test_id in tqdm(test_ids)\n    )\n    \n    # 3. process all files in ./test_wavs and predict\n    ### prediction using wav files in ./test_wavs (omittied) ###\n    \n    # 4. remove ./test_wavs and free storage\n    !rm -rf test_wavs\n\nfor test_ids in test_ids_split:\n    convert_preprocess(test_ids)\n```\n\nNotebook is [here](https://www.kaggle.com/nagohachi/convert-test-mp3s-mp3-to-wav-timeouts)"
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "2476963": "I'd like to process `.mp3` files in `bengaliai-speech/test_mp3s` to `.wav` files, but my submission **timeouts**.\nIf anyone succeeds in converting `.mp3` to `.wav` files, could you please teach me how to do it?\n\nI did in this way (using `Parallel` in `joblib`):\n\n```python\nfrom pathlib import Path\nimport os\nimport shutil\nfrom joblib import Parallel, delayed\nfrom pydub import AudioSegment\nimport numpy as np\nimport pandas as pd\nfrom tqdm.notebook import tqdm\n\nROOT = Path.cwd().parent\nINPUT = ROOT / \"input\"\nDATA = INPUT / \"bengaliai-speech\"\nTEST = DATA / \"test_mp3s\"\n\ntest = pd.read_csv(DATA / \"sample_submission.csv\", dtype={\"id\": str})\ntest_ids = test[\"id\"]\n\n!cp -r ../input/bengaliai-speech/test_mp3s .\n\n# 1. divide test_ids to 10 segments in order to prevent storage error\nn_splits = min(10, len(test_ids))\ntest_ids_split = list(np.array_split(test_ids, n_splits))\n\ndef process(train_id):\n    # 2. convert ./test_mp3s/*.mp3 to ./test_wavs/*.wav\n    src_path = f'./test_mp3s/{train_id}.mp3'\n    dst_path = f'./test_wavs/{train_id}.wav'\n    sound = AudioSegment.from_mp3(src_path)\n    sound = sound.set_frame_rate(16000)\n    sound.export(dst_path, format=\"wav\")\n\ndef convert_preprocess(test_ids):\n    !mkdir test_wavs\n\n    _ = Parallel(n_jobs=-1)(\n        delayed(process)(test_id) for test_id in tqdm(test_ids)\n    )\n    \n    # 3. process all files in ./test_wavs and predict\n    ### prediction using wav files in ./test_wavs (omittied) ###\n    \n    # 4. remove ./test_wavs and free storage\n    !rm -rf test_wavs\n\nfor test_ids in test_ids_split:\n    convert_preprocess(test_ids)\n```\n\nNotebook is [here](https://www.kaggle.com/nagohachi/convert-test-mp3s-mp3-to-wav-timeouts)"
  }
}