Đy l bi thứ 2 trong chuỗi 5 bi về Audio Deep Learning. Trong bi ny, chng ta sẽ tm hiểu cch xử l dữ liệu Audio bằng cc thư viện của Python. Chng ta cũng tm hiểu về Mel Spectrogram, một dạng biến đổi từ Spectrogram gip Deep Learning model học tốt hơn.
Python c một số thư viện xử l dữ liệu Audio rất tốt. Nổi bật nhất l 2 thư viện Librosa v Scipy. Nếu bạn sử dụng Pytorch th c thư viện torchaudio, sử dụng Tensorflow th c tư viện tf.audio. Cả 2 đều kh tiện dụng, được xy dựng để xử l ring cho dữ liệu Audio.
Khoảng gi trị của bin độ được quy định bởi thng số bit-length. V dụ, bit-length bằng 16 c nghĩa l bin độ c thể c gi trị trong khoảng từ 0 đến $2^16-1$. Bit-length cng lớn th chất lượng của Audio cng tốt.
Dữ liệu Audio hiếm khi được đưa trực tiếp vo cc Deep Learning model để huấn luyện. Thay vo đ, chng thường được chuyển sang dạng Spectrogram như trong bi trước chng ta đ đề cập.
Đy l dạng nguyn thủy của Spectrogram. R rng, chng ta khng thể thấy r được cc thng tin về tần số, bin độ m Spectrogram thể hiện. Điều ny được giải thch l do khả năng nhận thức m thanh của con người. Hầu hết những m thanh m chng ta nghe được đều tập trung xung quanh một dải tần số v bin độ kh hẹp.
Bi thứ hai trong chuỗi cc bi viết về Audio Deep Learning ny, chng ta học cch sử dụng một số thư viện của Python để xử l Audio Data. Chng ta cũng tm hiểu về Mel Spectrogram v cch tạo ra n. Sử dụng Mel Spectrogram thay thế cho Spectrogram thng thường sẽ mang lại hiệu quả hơn khi đưa vo cc Deep Learning model để huấn luyện.
Ở bi học số 1 của lớp CS 101, chng ta đ học về số nhị phn v bảng m ASCII. Sang bi học số 2, chng ta sẽ tm hiểu về khi niệm biến trong Python. Biến được dng để lưu dữ liệu. Trong Python, c một số kiểu dữ liệu cơ bản sau:
Trong my tnh, chng ta c một loại số gọi l số nguyn. Số nguyn ny c thể l cc số như 1, 2, 3, -1, -2, -3, v nhiều hơn nữa. Trong Python, số nguyn khng c giới hạn về số lượng chữ số, nghĩa l n c thể l một số rất lớn hoặc rất nhỏ. Ni cch khc, Python c thể tnh ton cc số nguyn rất lớn m khng cần phải lo lắng về giới hạn số lượng chữ số.
Điều ny khc với một số ngn ngữ lập trnh khc, nơi số nguyn c giới hạn số lượng chữ số. V dụ, nếu một số nguyn vượt qu giới hạn ny, th n sẽ khng thể biểu diễn được. Nhưng trong Python, khng c giới hạn số lượng chữ số, v vậy chng ta c thể tnh ton cc số nguyn rất lớn hoặc rất nhỏ m khng cần phải lo lắng về n.
Số thực trong Python l cc số c phần nguyn v phần thập phn, v dụ như 3.14 hoặc 2.5. Nhưng cc số thực ny c thể bị sai số v my tnh chỉ c thể tnh ton chng một cch chnh xc trong một giới hạn nhất định.
Bạn c thể chuyển đổi một số thực sang một số phức bằng cch sử dụng hm complex(). Lưu rằng phần thực của số phức ny sẽ l gi trị của số thực ban đầu v phần ảo sẽ l 0.
Visualization hiểu một cch đơn giản l hnh ảnh ha dựa trn dữ liệu. Khi niệm của visualization rất ngắn gọn nhưng trn thực tế visualization lại l một mảng rất rộng v c thể coi l một lĩnh vực kết hợp của khoa học v nghệ thuật bởi n vừa ln quan đến đồ họa (sử dụng hnh học để diễn tả kết quả), vừa lin quan đến khoa học thống k (sử dụng con số để ni ln vấn đề). Nhờ c visualization, chng ta c thể dễ dng đưa ra cc so snh trực quan, tnh ton tỷ trọng, nhận biết trend, pht hiện outlier, nhận diện đặc điểm phn phối của biến tốt hơn. Từ đ hỗ trợ qu trnh nắm thng tin v đưa ra quyết định tốt hơn. Trong cc kĩ năng của data scientist th visualization l một trong những kĩ năng cơ bản v quan trọng nhất. Thế nhưng nhiều data scientist lại chưa nhận diện được điều ny v thường xem nhẹ vai tr của visualization. Trước đy ti cũng đ từng mắc sai lầm như vậy. Qua kinh nghiệm nhiều năm xy dựng m hnh v phn tch kinh doanh đ gip ti nhn nhận lại vai tr của visualization. Chnh v thế ti quyết định tổng hợp bi viết ny theo cch bao qut v sơ đẳng nhất về visualization trn python như một ti liệu sử dụng khi cần v đồng thời cũng l cch củng cố lại kiến thức.
Biểu đồ line l biểu đồ biểu diễn cc gi trị dưới dạng những đường. Trn matplotlib. Line được vẽ thng qua plt.plot(). Sau đy ta cng biểu diễn gi chứng khon thng qua biểu đồ line.
Bn cạnh line chng ta cn c thể đnh dấu cc điểm mt bằng cc point. Hnh dạng của point c thể l hnh trn, vung hoặc tam gic v được khai bo thng qua tham số marker. Cc gi trị của marker sẽ tương ứng như sau:
Biểu đồ barchart l dạng biểu đồ c thể coi l phổ biến nhất v được dng chủ yếu trong trường hợp so snh gi trị giữa cc nhm thng qua độ di cột. Để biểu diễn biểu đồ barchart trong python chng ta sử dụng hm plt.bar(). Cc tham số truyền vo bao gồm tn cc nhm (tham số x) v gi trị của cc nhm (tham số height).
Thm nhn gi trị cho cc cột bằng tham số plt.text(). Trong đ tham số x v y của plt.text() qui định tọa độ điểm bắt đầu của rectangle chứa label tn của nhm. s chứa tn labels của nhm v size qui định kch thước của text.
Biểu đồ trn được sử dụng để visualize tỷ lệ phần trăm cc class. Ưu điểm của biểu đồ ny l dễ dng hnh dung được gi trị % m cc class ny đng gp vo số tổng. Nhưng nhược điểm l khng thể hiện số tuyệt đối.
Biểu đồ boxplot sẽ cho ta biết đặc trưng về phn phối của 1 biến dựa trn cc gi trị trung bnh, min, max, cc khoảng phn vị 25%, 50%, 75%. Đy l biểu đồ được sử dụng nhiều trong chứng khon v thống k học để so snh cc biến với nhau.
Định dạng dataframe của pandas khng chỉ hỗ trợ cc truy vấn v thống k dữ liệu c cấu trc nhanh hơn m cn support vẽ biểu đồ dưới dạng matplotlib-based. Sau đy chng ta cng sử dụng dataframe để vẽ cc đồ thị cơ bản.
Heatmap l biểu đồ sử dụng cường độ mu sắc để thể hiện độ lớn của gi trị. Khi đ cc gi trị lớn sẽ được lm nổi bật bằng cc vng mu c cường độ nh sng mạnh v cc gi trị nhỏ hơn sẽ được thể hiện bằng cc mảng mu nhạt hơn. Cc trường hợp thường sử dụng heatmap:
Trong machine learning ứng dụng lớn nhất của heatmap c lẽ l thể hiện cc gi trị của hệ số tương quan. Ta sẽ cng tm hiểu cch vẽ biểu đồ heatmap biểu diễn hệ số tương quan.
Mỗi một bộ dữ liệu đều c một đặt trưng ring của n. Để m hnh ha những đặc trưng ny, thống k học sử dụng thống k m tả như tnh mean, max, median, standard deviation, percentile. Để tnh thống k m tả cho một dataset dạng pandas dataframe trong python đơn giản ta sử dụng hm describe().
Trong thống k mỗi một bộ dữ liệu đều được đặc trưng bởi một hm mật độ xc suất (pdf - probability density function). Cc phn phối điển hnh như standard normal, T-student, poisson, fisher, chi-squared đều được đặc trưng bởi những hnh dạng đồ thị phn phối của hm mật độ xc suất khc nhau.
Hy tưởng tượng tại mỗi một quan st ta c đường cong phn phối đặc trưng. Hm kernel sẽ gip xc định hnh dạng của đường cong trong khi độ rộng của đường cong được xc định bởi bandwidth - h. Phương php KDE sẽ tnh tổng của cc đường cong chạy dọc theo trục $x$ để hnh thnh nn đường cong mật độ xc suất tổng qut cho dữ liệu.
Hnh 3: Phương php KDE gip xy dựng hnh dạng phn phối của dữ liệu. Ở những nơi c nhiều điểm dữ liệu tập trung th số lượng cc đường cong chồng lấn ln nhau sẽ nhiều hơn v do đ khi tnh tổng cộng dồn của n ta sẽ thu được một gi trị lũy kế kernel density lớn hơn v tri lại với những nơi c nhiều t điểm dữ liệu tập trung.
Ngoi ra hnh dạng bandwidth - h sẽ gip xc định mức độ khi qut hoặc chi tiết của đường cong. Nếu ta muốn đường cong smoothing hơn th cần thiết lập h lớn hơn v đường cong mấp m hơn th h cần nhỏ hơn. Tuy nhin bạn đọc cũng khng cần qu quan tm đến bandwidth v cch tốt hơn l sử dụng gi trị mặc định được tnh trong matplotlib.
Tham số quan trọng nhất của hm số l kde = True để xc nhận chng ta sử dụng phương php KDE để tnh ton đường cong hm mật độ. Cc tham số khc như color, hist_kws, kde_kws chỉ l những tham số ru ria qui định mu sắc, format, kch thước. Ngoi ra hist = True để thiết lập đồ thị histogram m chng ta sẽ tm hiểu bn dưới.
Ta thấy theme của đồ thị được chuyển sang mu xm nhạt v giữa cc cột histogram c viền trắng phn chia nhn r rng hơn. Đy l những thay đổi về đồ họa rất nhỏ nhưng gip đồ thị trở nn đẹp mắt hơn so với mặc định của mathplotlib.
Cc bin edges được khai bo thng qua cũng cng tham số bins, gi trị được truyền vo khi đ l 1 list cc điểm đầu mt. Từ đ gip đồ thị linh hoạt hơn khi c thể hiệu chỉnh độ di cc bins ty thch.
ff7609af8f