Trước khi thảo luận về phân tích dữ liệu âm thanh, điều quan trọng là phải tìm hiểu một số khái niệm dựa trên vật lý về âm thanh và âm thanh, như định nghĩa của nó và các thông số như biên độ, bước sóng, tần số, khoảng thời gian, cường độ pha, v.v. Dưới đây là một số khái niệm và phương trình toán học
Định nghĩa về âm thanh [âm thanh]
Âm thanh là một dạng năng lượng được tạo ra bởi sự rung động của một vật thể, chẳng hạn như sự thay đổi áp suất không khí, do đó âm thanh được tạo ra. Sự thay đổi áp suất này làm cho các phân tử không khí dao động
sóng cơ học
Dao động du lịch trong không gian;
Năng lượng được yêu cầu từ điểm này đến điểm khác;
Phương tiện là bắt buộc
Khi chúng tôi nhận được dữ liệu âm thanh do bất kỳ nguồn nào tạo ra, bộ não của chúng tôi sẽ xử lý dữ liệu này và thu thập một số thông tin. Dữ liệu âm thanh có thể ở định dạng có cấu trúc phù hợp và bộ não của chúng ta có thể hiểu mẫu của từng từ tương ứng với từ đó và tạo hoặc mã hóa dữ liệu có thể hiểu được ở dạng văn bản thành dạng sóng. Từ sóng đó, dữ liệu số được thu thập dưới dạng tần số
Dữ liệu âm thanh của chúng tôi ở dạng khác nhau
Định dạng Wav [tệp âm thanh dạng sóng]
Định dạng MP3 [MPEG-1 audio layer-3]
Định dạng WMA [âm thanh phương tiện windows]
Dưới đây là dạng sóng tương ứng mà chúng tôi nhận được từ biểu đồ dữ liệu âm thanh
Dạng sóng trên này mang
Bây giờ chúng ta thấy sóng âm thanh của chúng ta được biểu diễn như thế nào theo cách toán học
Y[t]=Asin[2πft+Q]
biên độ
Biên độ được định nghĩa là khoảng cách từ khoảng cách tối đa và tối thiểu
Trong phương trình trên, biên độ được biểu diễn bằng A
bước sóng
Bước sóng được định nghĩa là tổng khoảng cách mà một hạt đi được trong một khoảng thời gian
Giai đoạn
Pha được định nghĩa là vị trí của sóng tính từ điểm cân bằng tại thời điểm t=0
Bây giờ chúng ta sẽ xem xét một số thuật ngữ quan trọng như cường độ, độ to và âm sắc
công suất=2*pi*F/T
Tốc độ truyền năng lượng
Năng lượng do nguồn âm phát ra theo mọi phương trong một đơn vị thời gian
Nó được đo bằng watt/m^2
Điều này còn được gọi là cường độ âm thanh hoặc độ to
Cường độ được đo bằng các thang đo khác nhau
Thang logarit
decibel
Tỷ lệ giữa hai giá trị cường độ
Sử dụng tần số tham chiếu
db[T]=10*log10[I1/I2]
Trong đó I1 và I2 là hai mức cường độ
âm sắc
Âm sắc mô tả chất lượng của âm thanh. Giống như chúng ta thấy trong bản đồ nhiệt, có các màu khác nhau cho các mức giá trị khác nhau. Nếu chúng ta có các âm thanh khác nhau trong một tệp thì âm sắc sẽ dễ dàng phân tích tất cả âm thanh trên một biểu đồ đồ họa trên cơ sở thư viện
Âm sắc đa chiều
phong bì âm thanh
nội dung hài hòa
Biên độ, tần số, biến điệu
Mô hình tấn công-phân rã-duy trì-giải phóng;
Dữ liệu trên ở dạng tín hiệu tương tự;
Có rất nhiều kỹ thuật để phân tích dữ liệu, như thống kê và đồ họa. Ở đây chúng ta thấy cách đồ họa để thực hiện phân tích dữ liệu
quang phổ
Sử dụng biểu đồ phổ, chúng tôi biểu thị cường độ âm thanh hoặc tiếng ồn của dữ liệu âm thanh theo tần số và thời gian. Trên tiền đề của các giá trị tần số đó, chúng tôi chỉ định một dải màu, với các giá trị thấp hơn là màu sáng hơn và các giá trị tần số cao là màu tối hơn. Một quang phổ có thể là một loại bản đồ nhiệt
Dưới đây là mã cho một quang phổ
1 2 3 4 5 6 7 8
import librosa audio = 'training\\00003.wav' x, sr = librosa.load[audio] X = librosa.stft[x] Xdb = librosa.amplitude_to_db[abs[X]] plt.figure[figsize = [10, 5]] librosa.display.specshow[Xdb, sr = sr, x_axis = 'time', y_axis = 'hz'] plt.colorbar[]
trích xuất tính năng
Tất cả dữ liệu âm thanh có các tính năng như âm lượng, cường độ, pha biên độ và vận tốc góc. Tuy nhiên, chúng tôi sẽ chỉ trích xuất thông tin hữu ích hoặc có liên quan. Trích xuất tính năng là trích xuất các tính năng để sử dụng chúng để phân tích
Có rất nhiều thư viện trong python để phân tích dữ liệu âm thanh như
Librosa
con mãng xà. trưng bày. âm thanh
Spacy, v.v.
Tâm sóng
Trong bất kỳ lần phát âm thanh nào, chúng tôi có thể thấy dữ liệu âm thanh/âm thanh hoàn chỉnh của mình tập trung vào một điểm hoặc ý nghĩa cụ thể. Đây được gọi là tâm sóng. Nói cách khác, khối trung tâm của dữ liệu âm thanh
Dưới đây là code của chương trình
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import sklearn spectral_centroids = librosa.feature.spectral_centroid[x, sr = sr][0] spectral_centroids.shape[775, ] # Computing the time variable for visualization plt.figure[figsize = [12, 4]] frames = range[len[spectral_centroids]] t = librosa.frames_to_time[frames] # Normalising the spectral centroid for visualisation def normalize[x, axis = 0]: return sklearn.preprocessing.minmax_scale[x, axis = axis] #Plotting the Spectral Centroid along the waveform librosa.display.waveplot[x, sr = sr, alpha = 0.4] plt.plot[t, normalize[spectral_centroids], color = 'b']
Rolloff quang phổ
Trong phương pháp này, chúng tôi cố gắng phân tích dạng sóng trong đó tần số của chúng tôi giảm đột ngột từ cao xuống 0. Trong ngôn ngữ của phép tính, chúng ta có thể nói rằng có một điểm không thể phân biệt trong dạng sóng của chúng ta