You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MFCC.ipynb 71KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "id": "9be4a5bf",
  7. "metadata": {},
  8. "outputs": [],
  9. "source": [
  10. "import librosa\n",
  11. "import librosa.display\n",
  12. "import IPython.display as ipd\n",
  13. "import matplotlib.pyplot as plt\n",
  14. "import numpy as np\n",
  15. "import scipy.io\n",
  16. "from tqdm import tqdm\n",
  17. "import glob\n",
  18. "import os\n",
  19. "import json\n",
  20. "import pickle\n",
  21. "from einops import rearrange "
  22. ]
  23. },
  24. {
  25. "cell_type": "code",
  26. "execution_count": 3,
  27. "id": "41a0eba0",
  28. "metadata": {
  29. "scrolled": true
  30. },
  31. "outputs": [
  32. {
  33. "name": "stdout",
  34. "output_type": "stream",
  35. "text": [
  36. "['P09', 'P10', 'P11']\n"
  37. ]
  38. }
  39. ],
  40. "source": [
  41. "#import subject names and data\n",
  42. "sub_names = []\n",
  43. "sub_dict_data = []\n",
  44. "mat_files = glob.glob('Preprocessed_data/*.mat')\n",
  45. "for i, file in enumerate(mat_files):\n",
  46. " if i<3:\n",
  47. " sub_names.append(file.split('.')[0].split('\\\\')[1])\n",
  48. " sub_dict_data.append(scipy.io.loadmat(file))\n",
  49. "print(sub_names)"
  50. ]
  51. },
  52. {
  53. "cell_type": "code",
  54. "execution_count": 52,
  55. "id": "c58a6bf8",
  56. "metadata": {},
  57. "outputs": [
  58. {
  59. "name": "stdout",
  60. "output_type": "stream",
  61. "text": [
  62. "131\n",
  63. "[6, 5, 2, 1, 4, 6, 1, 2, 5, 3, 2, 6, 3, 1, 6, 2, 5, 1, 3, 0, 0, 6, 2, 3, 5, 4, 2, 0, 5, 4, 2, 5, 1, 3, 6, 4, 1, 4, 5, 1, 5, 0, 0, 5, 6, 1, 1, 6, 2, 2, 3, 3, 0, 6, 3, 2, 1, 3, 4, 3, 4, 4, 2, 3, 5, 0, 4, 1, 6, 0, 5, 4, 4, 0, 6, 2, 6, 5, 0, 0, 4, 1, 3, 9, 10, 8, 7, 8, 9, 7, 10, 7, 9, 9, 7, 7, 8, 10, 8, 10, 10, 10, 10, 7, 8, 7, 10, 8, 7, 8, 9, 9, 7, 7, 8, 9, 10, 9, 8, 7, 7, 9, 9, 9, 10, 10, 9, 8, 10, 8, 8]\n"
  64. ]
  65. }
  66. ],
  67. "source": [
  68. "P8_labels = []\n",
  69. "labels = []\n",
  70. "with open('C:/Users/saeed/Desktop/Master/KARA ONE Data/MM08/kinect_data/labels.txt') as f:\n",
  71. " lines = f.readlines()\n",
  72. "print(len(lines))\n",
  73. "for line in lines:\n",
  74. " line = line.split('\\n')[0]\n",
  75. " if line == '/iy/' or line == 'iy':\n",
  76. " labels.append(0)\n",
  77. " elif line == '/uw/' or line == 'uw':\n",
  78. " labels.append(1)\n",
  79. " elif line == '/piy/' or line == 'piy':\n",
  80. " labels.append(2)\n",
  81. " elif line == '/tiy/' or line == 'tiy':\n",
  82. " labels.append(3)\n",
  83. " elif line == '/diy/' or line == 'diy':\n",
  84. " labels.append(4)\n",
  85. " elif line == '/m/' or line == 'm':\n",
  86. " labels.append(5)\n",
  87. " elif line == '/n/' or line == 'n':\n",
  88. " labels.append(6)\n",
  89. " elif line == '/pat/' or line == 'pat':\n",
  90. " labels.append(7)\n",
  91. " elif line == '/pot/' or line == 'pot':\n",
  92. " labels.append(8)\n",
  93. " elif line == '/knew/' or line == 'knew':\n",
  94. " labels.append(9)\n",
  95. " elif line == '/gnaw/' or line == 'gnaw':\n",
  96. " labels.append(10)\n",
  97. "P8_labels = labels\n",
  98. "print(P8_labels) "
  99. ]
  100. },
  101. {
  102. "cell_type": "code",
  103. "execution_count": 53,
  104. "id": "8679e86e",
  105. "metadata": {},
  106. "outputs": [],
  107. "source": [
  108. "labels = [P9_labels, P10_labels, P11_labels, P12_labels, P14_labels, P15_labels, P16_labels, P18_labels, P19_labels,\n",
  109. " P2_labels, P20_labels, P21_labels, P5_labels, P8_labels]"
  110. ]
  111. },
  112. {
  113. "cell_type": "code",
  114. "execution_count": 54,
  115. "id": "623771dc",
  116. "metadata": {},
  117. "outputs": [
  118. {
  119. "name": "stdout",
  120. "output_type": "stream",
  121. "text": [
  122. "[5, 0, 5, 6, 3, 1, 5, 3, 5, 5, 3, 6, 0, 4, 3, 4, 3, 6, 5, 4, 5, 3, 2, 6, 1, 0, 6, 4, 2, 3, 0, 0, 5, 2, 4, 2, 1, 0, 3, 6, 2, 0, 0, 4, 2, 1, 4, 2, 3, 6, 0, 3, 1, 5, 0, 3, 2, 4, 1, 0, 3, 0, 2, 1, 5, 2, 2, 4, 1, 4, 5, 5, 1, 1, 6, 1, 4, 4, 6, 1, 6, 6, 6, 2, 7, 8, 10, 7, 10, 10, 8, 8, 9, 10, 8, 7, 7, 9, 10, 9, 9, 8, 7, 8, 7, 9, 10, 9, 9, 8, 8, 8, 10, 7, 9, 7, 7, 7, 10, 8, 9, 8, 10, 10, 10, 10, 7, 9, 9, 7, 8, 9]\n"
  123. ]
  124. }
  125. ],
  126. "source": [
  127. "print(labels[1])"
  128. ]
  129. },
  130. {
  131. "cell_type": "code",
  132. "execution_count": 53,
  133. "id": "c4ef23a6",
  134. "metadata": {},
  135. "outputs": [],
  136. "source": [
  137. "with open(\"labels.pkl\", \"wb\") as f:\n",
  138. " pickle.dump(labels, f)"
  139. ]
  140. },
  141. {
  142. "cell_type": "code",
  143. "execution_count": 4,
  144. "id": "bb8b91e2",
  145. "metadata": {},
  146. "outputs": [],
  147. "source": [
  148. "#extract numpy data from dict data\n",
  149. "sub_data = []\n",
  150. "for dict_data, name in zip(sub_dict_data, sub_names):\n",
  151. " if name == 'P2':\n",
  152. " sub_data.append(dict_data['P2'])\n",
  153. " else:\n",
  154. " sub_data.append(dict_data['A'])"
  155. ]
  156. },
  157. {
  158. "cell_type": "code",
  159. "execution_count": 5,
  160. "id": "545e70be",
  161. "metadata": {
  162. "scrolled": true
  163. },
  164. "outputs": [
  165. {
  166. "name": "stdout",
  167. "output_type": "stream",
  168. "text": [
  169. "number of subjects = 3\n",
  170. "data shapes:\n",
  171. "(62, 1250, 132)\n",
  172. "(62, 1250, 132)\n",
  173. "(62, 1250, 132)\n",
  174. "number of all trials = 396\n"
  175. ]
  176. }
  177. ],
  178. "source": [
  179. "#printing number of subjects, all data shapes and number of all trials\n",
  180. "print('number of subjects = ', len(sub_data))\n",
  181. "print('data shapes:')\n",
  182. "count = 0\n",
  183. "for data in sub_data:\n",
  184. " count += data.shape[2]\n",
  185. " print(data.shape)\n",
  186. "print('number of all trials = ', count) "
  187. ]
  188. },
  189. {
  190. "cell_type": "code",
  191. "execution_count": 6,
  192. "id": "10d50aad",
  193. "metadata": {
  194. "scrolled": true
  195. },
  196. "outputs": [
  197. {
  198. "name": "stdout",
  199. "output_type": "stream",
  200. "text": [
  201. "(62, 1250, 132)\n",
  202. "(62, 1250, 132)\n",
  203. "(62, 1250, 132)\n"
  204. ]
  205. }
  206. ],
  207. "source": [
  208. "for data in sub_data:\n",
  209. " print(data.shape)"
  210. ]
  211. },
  212. {
  213. "cell_type": "code",
  214. "execution_count": 20,
  215. "id": "9fd1a38c",
  216. "metadata": {
  217. "scrolled": false
  218. },
  219. "outputs": [
  220. {
  221. "data": {
  222. "image/png": "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\n",
  223. "text/plain": [
  224. "<Figure size 576x216 with 1 Axes>"
  225. ]
  226. },
  227. "metadata": {
  228. "needs_background": "light"
  229. },
  230. "output_type": "display_data"
  231. },
  232. {
  233. "data": {
  234. "image/png": "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\n",
  235. "text/plain": [
  236. "<Figure size 576x216 with 1 Axes>"
  237. ]
  238. },
  239. "metadata": {
  240. "needs_background": "light"
  241. },
  242. "output_type": "display_data"
  243. },
  244. {
  245. "data": {
  246. "image/png": "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\n",
  247. "text/plain": [
  248. "<Figure size 576x216 with 1 Axes>"
  249. ]
  250. },
  251. "metadata": {
  252. "needs_background": "light"
  253. },
  254. "output_type": "display_data"
  255. }
  256. ],
  257. "source": [
  258. "for i,data in enumerate(sub_mfc):\n",
  259. " hist_data = rearrange(data, 'n c m t -> m (n c t)')\n",
  260. " plt.figure(figsize=(8, 3))\n",
  261. " hist = np.histogram(hist_data[0], bins=1000)\n",
  262. " ax = plt.gca()\n",
  263. " ax.set_facecolor((0.98,0.98,0.98))\n",
  264. " plt.grid()\n",
  265. " plt.xticks(fontsize=16)\n",
  266. " plt.yticks(fontsize=16)\n",
  267. " plt.xlabel('Time', fontsize=16)\n",
  268. " plt.ylabel('Vlue', fontsize=16)\n",
  269. " plt.plot(hist[1][1:],hist[0])\n",
  270. " plt.savefig('p'+str(i)+'.png', dpi=300)"
  271. ]
  272. },
  273. {
  274. "cell_type": "code",
  275. "execution_count": 7,
  276. "id": "8c89f9a5",
  277. "metadata": {
  278. "scrolled": true
  279. },
  280. "outputs": [
  281. {
  282. "name": "stderr",
  283. "output_type": "stream",
  284. "text": [
  285. "100%|████████████████████████████████████████████████████████████████████████████████| 132/132 [00:37<00:00, 3.48it/s]\n"
  286. ]
  287. },
  288. {
  289. "name": "stdout",
  290. "output_type": "stream",
  291. "text": [
  292. "(132, 62, 20, 11)\n"
  293. ]
  294. },
  295. {
  296. "name": "stderr",
  297. "output_type": "stream",
  298. "text": [
  299. "100%|████████████████████████████████████████████████████████████████████████████████| 132/132 [00:39<00:00, 3.33it/s]\n"
  300. ]
  301. },
  302. {
  303. "name": "stdout",
  304. "output_type": "stream",
  305. "text": [
  306. "(132, 62, 20, 11)\n"
  307. ]
  308. },
  309. {
  310. "name": "stderr",
  311. "output_type": "stream",
  312. "text": [
  313. "100%|████████████████████████████████████████████████████████████████████████████████| 132/132 [00:39<00:00, 3.36it/s]"
  314. ]
  315. },
  316. {
  317. "name": "stdout",
  318. "output_type": "stream",
  319. "text": [
  320. "(132, 62, 20, 11)\n",
  321. "(396, 62, 20, 11)\n"
  322. ]
  323. },
  324. {
  325. "name": "stderr",
  326. "output_type": "stream",
  327. "text": [
  328. "\n"
  329. ]
  330. }
  331. ],
  332. "source": [
  333. "#reshaping the data to (trial, channel, sample) \n",
  334. "n_mfcc = 20\n",
  335. "framesize = 1 * 250\n",
  336. "hop_size = int(framesize/2)\n",
  337. "\n",
  338. "sub_mfc = []\n",
  339. "\n",
  340. "for i, data in enumerate(sub_data):\n",
  341. " data = rearrange(data, 'c s t -> t c s')\n",
  342. " trials = []\n",
  343. " for j, trial in enumerate(tqdm(data)):\n",
  344. " channels = []\n",
  345. " for k, channel in enumerate(trial):\n",
  346. " mfccs = librosa.feature.mfcc(y=channel, n_mfcc=n_mfcc, n_fft=framesize, hop_length=hop_size, sr=250)\n",
  347. " channels.append(np.array(mfccs))\n",
  348. " trials.append(np.array(channels)) \n",
  349. " data = np.array(trials)\n",
  350. " print(data.shape)\n",
  351. " sub_mfc.append(data)\n",
  352. " Max = np.max(data, axis=(0,1,3), keepdims=True)\n",
  353. " Min = np.min(data, axis=(0,1,3), keepdims=True)\n",
  354. " data = (data-Min)/(Max-Min)\n",
  355. " if i == 0:\n",
  356. " all_data = data\n",
  357. " else:\n",
  358. " all_data = np.vstack((all_data, data))\n",
  359. "print(all_data.shape)"
  360. ]
  361. },
  362. {
  363. "cell_type": "code",
  364. "execution_count": 24,
  365. "id": "6aedd8d3",
  366. "metadata": {},
  367. "outputs": [],
  368. "source": [
  369. "with open('normal_all_data.pkl', 'wb') as f:\n",
  370. " pickle.dump(all_data, f)"
  371. ]
  372. },
  373. {
  374. "cell_type": "code",
  375. "execution_count": 6,
  376. "id": "fcc23565",
  377. "metadata": {},
  378. "outputs": [],
  379. "source": [
  380. "#set parameters for MFCC extraction\n",
  381. "n_mfcc = 20\n",
  382. "framesize = 1 * 250\n",
  383. "hop_size = int(framesize/2)"
  384. ]
  385. },
  386. {
  387. "cell_type": "code",
  388. "execution_count": 45,
  389. "id": "78c6ffa2",
  390. "metadata": {},
  391. "outputs": [
  392. {
  393. "name": "stderr",
  394. "output_type": "stream",
  395. "text": [
  396. "100%|██████████████████████████████████████████████████████████████████████████████████| 14/14 [05:12<00:00, 22.29s/it]\n"
  397. ]
  398. }
  399. ],
  400. "source": [
  401. "#calculate MFCCs and put them in a matrix with shape (#trial, #channels) for each sub. put all new subs in MFCC_data \n",
  402. "MFCC_data = []\n",
  403. "for sub in tqdm(reshaped_data):\n",
  404. " trials = []\n",
  405. " for i, trial in enumerate(sub):\n",
  406. " channels = []\n",
  407. " for j, channel in enumerate(trial):\n",
  408. " mfccs = librosa.feature.mfcc(y=channel, n_mfcc=n_mfcc, n_fft=framesize, hop_length=hop_size, sr=250)\n",
  409. " channels.append(np.array(mfccs))\n",
  410. " trials.append(np.array(channels))\n",
  411. " MFCC_data.append(np.array(trials)) "
  412. ]
  413. },
  414. {
  415. "cell_type": "code",
  416. "execution_count": 51,
  417. "id": "e56998d7",
  418. "metadata": {},
  419. "outputs": [],
  420. "source": [
  421. "with open(\"MFCCs.pkl\", \"wb\") as f:\n",
  422. " pickle.dump(MFCC_data, f)"
  423. ]
  424. },
  425. {
  426. "cell_type": "code",
  427. "execution_count": 4,
  428. "id": "86bc95b2",
  429. "metadata": {
  430. "scrolled": true
  431. },
  432. "outputs": [],
  433. "source": [
  434. "with open(\"MFCCs.pkl\", \"rb\") as f:\n",
  435. " mfccs = pickle.load(f)"
  436. ]
  437. },
  438. {
  439. "cell_type": "code",
  440. "execution_count": 56,
  441. "id": "2f243666",
  442. "metadata": {},
  443. "outputs": [
  444. {
  445. "data": {
  446. "text/plain": [
  447. "(132, 62, 20, 11)"
  448. ]
  449. },
  450. "execution_count": 56,
  451. "metadata": {},
  452. "output_type": "execute_result"
  453. }
  454. ],
  455. "source": [
  456. "mfccs[0].shape"
  457. ]
  458. },
  459. {
  460. "cell_type": "code",
  461. "execution_count": 77,
  462. "id": "20783211",
  463. "metadata": {},
  464. "outputs": [],
  465. "source": [
  466. "all_labels = []\n",
  467. "for P_label in labels:\n",
  468. " for label in P_label:\n",
  469. " all_labels.append(label)"
  470. ]
  471. },
  472. {
  473. "cell_type": "code",
  474. "execution_count": 79,
  475. "id": "88491149",
  476. "metadata": {},
  477. "outputs": [],
  478. "source": [
  479. "with open(\"all_labels.pkl\", \"wb\") as f:\n",
  480. " pickle.dump(all_labels, f)"
  481. ]
  482. },
  483. {
  484. "cell_type": "code",
  485. "execution_count": 81,
  486. "id": "451b0af3",
  487. "metadata": {},
  488. "outputs": [],
  489. "source": [
  490. "for i, mfcc in enumerate(mfccs):\n",
  491. " if i==0:\n",
  492. " all_mfccs = mfcc\n",
  493. " else:\n",
  494. " all_mfccs = np.vstack((all_mfccs, mfcc))"
  495. ]
  496. },
  497. {
  498. "cell_type": "code",
  499. "execution_count": 82,
  500. "id": "e596f778",
  501. "metadata": {},
  502. "outputs": [
  503. {
  504. "data": {
  505. "text/plain": [
  506. "(1913, 62, 20, 11)"
  507. ]
  508. },
  509. "execution_count": 82,
  510. "metadata": {},
  511. "output_type": "execute_result"
  512. }
  513. ],
  514. "source": [
  515. "all_mfccs.shape"
  516. ]
  517. },
  518. {
  519. "cell_type": "code",
  520. "execution_count": 83,
  521. "id": "fb164790",
  522. "metadata": {},
  523. "outputs": [],
  524. "source": [
  525. "with open(\"all_data.pkl\", \"wb\") as f:\n",
  526. " pickle.dump(all_mfccs, f)"
  527. ]
  528. },
  529. {
  530. "cell_type": "code",
  531. "execution_count": 74,
  532. "id": "71bdd5bf",
  533. "metadata": {},
  534. "outputs": [],
  535. "source": [
  536. "a = np.random.randint(0, 20, size=(2,3,4,5))\n",
  537. "b = np.random.randint(0, 20, size=(3,3,4,5))\n",
  538. "c = np.random.randint(0, 20, size=(4,3,4,5))"
  539. ]
  540. },
  541. {
  542. "cell_type": "code",
  543. "execution_count": 56,
  544. "id": "1efdbb66",
  545. "metadata": {},
  546. "outputs": [],
  547. "source": [
  548. "with open('all_label.pkl', 'wb') as f:\n",
  549. " pickle.dump(all_label, f)"
  550. ]
  551. },
  552. {
  553. "cell_type": "code",
  554. "execution_count": 55,
  555. "id": "9c938cac",
  556. "metadata": {},
  557. "outputs": [
  558. {
  559. "data": {
  560. "text/plain": [
  561. "1913"
  562. ]
  563. },
  564. "execution_count": 55,
  565. "metadata": {},
  566. "output_type": "execute_result"
  567. }
  568. ],
  569. "source": [
  570. "all_label = [label for p in labels for label in p]\n",
  571. "len(all_label)"
  572. ]
  573. },
  574. {
  575. "cell_type": "code",
  576. "execution_count": null,
  577. "id": "48bfe619",
  578. "metadata": {},
  579. "outputs": [],
  580. "source": [
  581. "with open(\"all_label.pkl\", \"rb\") as f:\n",
  582. " labels = pickle.load(f)\n",
  583. "vowel_labels, nasal_labels, bilabial_labels, iy_labels, uw_labels = [], [], [], [], [] \n",
  584. "for label in labels:\n",
  585. " if label==0:\n",
  586. " vowel_labels.append(0)\n",
  587. " nasal_labels.append(0)\n",
  588. " bilabial_labels.append(0)\n",
  589. " iy_labels.append(1)\n",
  590. " uw_labels.append(0)\n",
  591. " elif label==1:\n",
  592. " vowel_labels.append(0)\n",
  593. " nasal_labels.append(0)\n",
  594. " bilabial_labels.append(0)\n",
  595. " iy_labels.append(0)\n",
  596. " uw_labels.append(1)\n",
  597. " elif label==2:\n",
  598. " vowel_labels.append(1)\n",
  599. " nasal_labels.append(0)\n",
  600. " bilabial_labels.append(1)\n",
  601. " iy_labels.append(1)\n",
  602. " uw_labels.append(0)\n",
  603. " elif label==3:\n",
  604. " vowel_labels.append(1)\n",
  605. " nasal_labels.append(0)\n",
  606. " bilabial_labels.append(0)\n",
  607. " iy_labels.append(1)\n",
  608. " uw_labels.append(0)\n",
  609. " elif label==4:\n",
  610. " vowel_labels.append(1)\n",
  611. " nasal_labels.append(0)\n",
  612. " bilabial_labels.append(0)\n",
  613. " iy_labels.append(1)\n",
  614. " uw_labels.append(0)\n",
  615. " elif label==5:\n",
  616. " vowel_labels.append(1)\n",
  617. " nasal_labels.append(1)\n",
  618. " bilabial_labels.append(1)\n",
  619. " iy_labels.append(0)\n",
  620. " uw_labels.append(0)\n",
  621. " elif label==6:\n",
  622. " vowel_labels.append(1)\n",
  623. " nasal_labels.append(1)\n",
  624. " bilabial_labels.append(0)\n",
  625. " iy_labels.append(0)\n",
  626. " uw_labels.append(0)\n",
  627. " elif label==7:\n",
  628. " vowel_labels.append(1)\n",
  629. " nasal_labels.append(0)\n",
  630. " bilabial_labels.append(1)\n",
  631. " iy_labels.append(0)\n",
  632. " uw_labels.append(0)\n",
  633. " elif label==8:\n",
  634. " vowel_labels.append(1)\n",
  635. " nasal_labels.append(0)\n",
  636. " bilabial_labels.append(1)\n",
  637. " iy_labels.append(0)\n",
  638. " uw_labels.append(0)\n",
  639. " elif label==9:\n",
  640. " vowel_labels.append(1)\n",
  641. " nasal_labels.append(1)\n",
  642. " bilabial_labels.append(0)\n",
  643. " iy_labels.append(0)\n",
  644. " uw_labels.append(0)\n",
  645. " elif label==10:\n",
  646. " vowel_labels.append(1)\n",
  647. " nasal_labels.append(1)\n",
  648. " bilabial_labels.append(0)\n",
  649. " iy_labels.append(0)\n",
  650. " uw_labels.append(0)\n",
  651. " \n",
  652. "with open('vowel_label.pkl', 'wb') as f:\n",
  653. " pickle.dump(vowel_labels, f)\n",
  654. "with open('bilab_label.pkl', 'wb') as f:\n",
  655. " pickle.dump(bilabi_labels, f)\n",
  656. "with open('nasal_label.pkl', 'wb') as f:\n",
  657. " pickle.dump(vowel_labels, f)\n",
  658. "with open('iy_label.pkl', 'wb') as f:\n",
  659. " pickle.dump(vowel_labels, f)\n",
  660. "with open('uw_label.pkl', 'wb') as f:\n",
  661. " pickle.dump(vowel_labels, f)"
  662. ]
  663. },
  664. {
  665. "cell_type": "code",
  666. "execution_count": null,
  667. "id": "c0edd8b2",
  668. "metadata": {},
  669. "outputs": [],
  670. "source": [
  671. "#train-test split for tasks\n",
  672. "X_vowel_train, X_vowel_test, y_vowel_train, y_vowel_test = train_test_split(all_data, vowel_labels, \n",
  673. " stratify=vowel_labels,\n",
  674. " test_size=0.1)\n",
  675. "X_nasal_train, X_nasal_test, y_nasal_train, y_nasal_test = train_test_split(all_data, nasal_labels, \n",
  676. " stratify=nasal_labels, \n",
  677. " test_size=0.1)\n",
  678. "X_bilabial_train, X_bilabial_test, y_bilabial_train, y_bilabial_test = train_test_split(all_data, bilabial_labels, \n",
  679. " stratify=bilabial_labels, \n",
  680. " test_size=0.1)\n",
  681. "X_iy_train, X_iy_test, y_iy_train, y_iy_test = train_test_split(all_data, iy_labels, \n",
  682. " stratify=iy_labels, \n",
  683. " test_size=0.1)\n",
  684. "X_uw_train, X_uw_test, y_uw_train, y_uw_test = train_test_split(all_data, uw_labels, \n",
  685. " stratify=uw_labels, \n",
  686. " test_size=0.1)\n",
  687. "X_train, X_test, y_train, y_test = train_test_split(all_data, all_labels, \n",
  688. " stratify=all_labels, \n",
  689. " test_size=0.1)"
  690. ]
  691. },
  692. {
  693. "cell_type": "code",
  694. "execution_count": null,
  695. "id": "05c2e96b",
  696. "metadata": {},
  697. "outputs": [],
  698. "source": [
  699. "with open(\"data/uw/X_uw_train.pkl\", \"wb\") as f:\n",
  700. " pickle.dump(X_uw_train, f)\n",
  701. "with open(\"data/uw/X_uw_test.pkl\", \"wb\") as f:\n",
  702. " pickle.dump(X_uw_test, f)\n",
  703. "with open(\"data/uw/y_uw_train.pkl\", \"wb\") as f:\n",
  704. " pickle.dump(y_uw_train, f)\n",
  705. "with open(\"data/uw/y_uw_test.pkl\", \"wb\") as f:\n",
  706. " pickle.dump(y_uw_test, f)"
  707. ]
  708. }
  709. ],
  710. "metadata": {
  711. "kernelspec": {
  712. "display_name": "Python 3 (ipykernel)",
  713. "language": "python",
  714. "name": "python3"
  715. },
  716. "language_info": {
  717. "codemirror_mode": {
  718. "name": "ipython",
  719. "version": 3
  720. },
  721. "file_extension": ".py",
  722. "mimetype": "text/x-python",
  723. "name": "python",
  724. "nbconvert_exporter": "python",
  725. "pygments_lexer": "ipython3",
  726. "version": "3.9.7"
  727. }
  728. },
  729. "nbformat": 4,
  730. "nbformat_minor": 5
  731. }