{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"DATA_FILE = '/kaggle/input/bengaliai-speech/train.csv'\nGROUP_NO = 1\nGROUP_SIZE = 10","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport os\nimport IPython.display as ipd","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_kg_hide-input":true,"_kg_hide-output":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!apt-get install -y php-cli\n!apt-get install -y curl\n!apt-get install -y php7.4-curl\n","metadata":{"_kg_hide-input":true,"_kg_hide-output":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!php -version","metadata":{"_kg_hide-input":true,"_kg_hide-output":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!mkdir -p /kaggle/working/php\n!mkdir -p /kaggle/working/mp3\n","metadata":{"_kg_hide-input":true,"_kg_hide-output":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%writefile /kaggle/working/php/soundoftext.php\n<?php\n\nprint('argc = ' . $argc);\nprint('argv = ');\nprint_r($argv);\n\n$filename = '';\n$text = '';\nif ($argc > 2) {\n    $filename = $argv[1];\n    $text = $argv[2];\n}\n\nif (strlen($filename) > 0 && strlen($text) > 0) {\n    $voice = 'bn-IN';\n    $inputObj = array('engine' => 'Google', 'data' => array('text' => $text, 'voice' => $voice));\n    $inputJson = json_encode($inputObj);\n    $rs = g_curl_post_json('https://api.soundoftext.com/sounds', $inputJson, $msg); \n    if ($rs !== false) {\n        $outputObj = json_decode($rs, true);\n        if ($outputObj['success']) {\n            $id = $outputObj['id'];\n            $max = 5;\n            $count = 0;\n            while ($count < $max) {\n                $rs = g_curl('https://api.soundoftext.com/sounds/' . $id, $msg);\n                $outputObj = json_decode($rs, true);\n                if ($outputObj['status'] == 'Done') {\n                    $url = $outputObj['location'];\n                    $cmd = 'wget -O \"' . $filename . '\" \"' . $url . '\"';\n                    shell_exec($cmd);\n                    exit();\n                }\n                sleep(2);\n                $count++;\n            }\n        }\n    }    \n}\n\nfunction g_curl($url, &$msg) {\n    $ch = curl_init($url);\n\n    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);\n    curl_setopt($ch, CURLOPT_TIMEOUT, 60);\n\n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\t\n\tcurl_setopt($ch, CURLOPT_USERAGENT, \"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\");\n    curl_setopt($ch, CURLOPT_REFERER, \"\");\n    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);\t\n\n    $rs = curl_exec($ch);\n    if ($rs === false) {\n        $msg = '[' . curl_getinfo($ch, CURLINFO_HTTP_CODE) . '] ' . curl_error($ch);\n    }\n\t\n    curl_close($ch);\n\n    return $rs;\n}\n\nfunction g_curl_post_json($url, $json, &$msg) {\n    $ch = curl_init($url);\n\n    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);\n    curl_setopt($ch, CURLOPT_TIMEOUT, 60);\n\n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\t\n\tcurl_setopt($ch, CURLOPT_USERAGENT, \"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\");\n    curl_setopt($ch, CURLOPT_REFERER, \"\");\n    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);\t\n\n    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"POST\");\n    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);                                                                  \n    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          \n      'Content-Type: application/json',                                                                                \n      'Content-Length: ' . strlen($json))                                                                       \n    );     \n\n    $rs = curl_exec($ch);\n    if ($rs === false) {\n        $msg = '[' . curl_getinfo($ch, CURLINFO_HTTP_CODE) . '] ' . curl_error($ch);\n    }\n\t\n    curl_close($ch);\n\n    return $rs;\n}\n\n?>","metadata":{"execution":{"iopub.status.busy":"2023-07-23T23:20:39.720302Z","iopub.execute_input":"2023-07-23T23:20:39.721399Z","iopub.status.idle":"2023-07-23T23:20:39.760545Z","shell.execute_reply.started":"2023-07-23T23:20:39.721351Z","shell.execute_reply":"2023-07-23T23:20:39.759505Z"},"_kg_hide-input":true,"_kg_hide-output":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def tts(text, filename):\n    cmd = 'php /kaggle/working/php/soundoftext.php \"' + filename + '\" \"' + text + '\"';\n    os.system(cmd)\n    if os.path.exists(filename):\n        return True\n    else:\n        return False","metadata":{"_kg_hide-input":true,"_kg_hide-output":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_df = pd.read_csv(DATA_FILE)\nstart_idx = (GROUP_NO - 1) * GROUP_SIZE\nend_idx = (GROUP_NO) * GROUP_SIZE\nif end_idx >= len(data_df):\n    end_idx = len(data_df) - 1\nrows = []\nsample_file = None\nfor row_idx in range(len(data_df)):\n    if row_idx < start_idx:\n        continue\n    if row_idx > end_idx:\n        break\n        \n    fid = data_df['id'].iloc[row_idx]\n    text = data_df['sentence'].iloc[row_idx]\n    split = data_df['split'].iloc[row_idx]\n    filename = '/kaggle/working/mp3/' + fid + '.mp3'\n    rs = tts(text, filename)\n    if rs:\n        if sample_file is None:\n            sample_file = filename\n        rw = {'id': fid, 'sentence': text, 'split': split}\n        rows.append(rw)\n        \ndf = pd.DataFrame(rows)\ndf.to_csv('mp3-' + str(GROUP_NO) + '.csv', index=False)","metadata":{"_kg_hide-input":true,"_kg_hide-output":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df","metadata":{"_kg_hide-input":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ipd.Audio(sample_file)","metadata":{"_kg_hide-input":true},"execution_count":null,"outputs":[]}]}