Tải bản đầy đủ (.pdf) (18 trang)

Ứng dụng phương pháp phân tích suy biến để khử nhiễu âm thanh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1019.89 KB, 18 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM
KHOA KHOA HỌC & ỨNG DỤNG
BỘ MƠN TỐN ỨNG DỤNG

BÁO CÁO
BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
CHỦ ĐỀ 8:
ỨNG DỤNG SVD
ĐỂ KHỬ NHIỄU ÂM THANH
LỚP L08 _ NHÓM 8
GV HƯỚNG DẪN: NGUYỄN ANH THI
NGUYỄN XUÂN MỸ

TP.HCM, Ngày 6 tháng 12 năm 2021


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM
KHOA KHOA HỌC & ỨNG DỤNG
BỘ MƠN TỐN ỨNG DỤNG

BÁO CÁO
BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
CHỦ ĐỀ 8:
ỨNG DỤNG SVD ĐỂ KHỬ NHIỄU ÂM THANH

Danh sách thành viên:
MSSV

Họ và tên



Ghi chú

2113932

Lê Quang Long

Soạn Word

2113940

Nguyễn Thành Long

2114063

Nguyễn Trần Thái Minh

2110504

Nguyễn Thanh Sang

Tìm Thơng tin

2115057

Đào Nguyễn Nam Trân

Tìm thơng tin

2111057


Lê Trung Điền

Coder

2110130

Bùi Minh Đức

Coder

Tìm thơng tin
Coder

TP.HCM, ngày 6 tháng 12 năm 2021


LỜI CẢM ƠN
Để hoàn thành đề tài bài tập lớn lần này, trước hết nhóm chúng em xin
chân thành cảm ơn sự hướng dẫn, giúp đỡ, quan tâm từ quý thầy cơ, bạn
bè trong lớp.

Đặc biệt, nhóm xin gửi đến cô Nguyễn Anh Thi (lý thuyết) và cô
Nguyễn Xuân Mỹ (bài tập) đã ra sức truyền đạt, chỉ dẫn chúng em đề tài
báo cáo lần này lời cảm ơn sâu sắc nhất.

Khơng thể khơng nhắc tới sự hợp tác, đồn kết của các thành viên trong
nhóm, xin cảm ơn mọi người đã cùng góp sức, góp lực để hồn thành bài
báo cáo này.


Vì cịn tồn tại những hạn chế về mặt kiến thức, trong q trình trao đổi,
hồn thành bài project cuối kì , chúng em khơng tránh khỏi những sai sót,
kính mong nhận được sự đóng góp từ q thầy, cơ. Những góp ý từ thầy
cơ sẽ là động lực để chúng em hoàn thiện hơn. Một lần nữa, nhóm 8_ L08
xin gửi lời biết ơn chân thành đến thầy, cơ vì đã giúp chúng em đạt được
kết quả này.

Nhóm thực hiện đề tài

Nhóm 8 - Lớp L08

1


LỜI MỞ ĐẦU MƠN HỌC
Đại số tuyến tính là mơn học có tầm quan trọng khơng chỉ đối với sinh
viên trường đại học Bách Khoa Thành phố Hồ Chí Minh nói riêng mà
cịn đối với sinh viên ngành khoa học kỹ thuật, cơng nghệ nói chung.
Đại số tuyến tính nói chung có rất nhiều ứng dụng trong hầu hết các lĩnh
vực trong khoa học: kinh tế, môi trường, công nghệ máy tính, xử lí tín
hiệu, đồ họa,…. Một phần nhỏ trong số đó phải nhắc đến là phương pháp
phân tích SVD trong nhiều bài tốn khác nhau. Phương pháp phân tích
suy biến (singular value decomposition) được viết tắt là SVD là một trong
những phương pháp thuộc nhóm matrix factorization được phát triển lần
đầu bởi những nhà hình học vi phân. Ban đầu mục đích của phương pháp
này là tìm ra một phép xoay khơng gian sao cho tích vơ hướng của các
vector không thay đổi. Từ mối liên hệ này khái niệm về ma trận trực giao
đã hình thành để tạo ra các phép xoay đặc biệt. Phương pháp SVD đã
được phát triển dựa trên những tính chất của ma trận trực giao và ma trận
đường chéo để tìm ra một ma trận xấp xỉ với ma trận gốc. Phương pháp

này sau đó đã được ứng dụng rộng rãi trong các lĩnh vực như hình học vi
phân, hồi qui tuyến tính, xử lý hình ảnh, cluaxstering, các thuật tốn nèn
và giảm chiều dữ liệu, khử nhiễu âm thanh….

MỤC LỤC
2


TRANG
LỜI CẢM ƠN.....................................................................................1
MỞ ĐẦU MỞ HỌC VÀ SƠ LƯỢC BTL .......................................2
Chương 1: CƠ SỞ LÍ THUYẾT CỦA PHÂN TÍCH SVD ............4
Chương 2: ỨNG DỤNG CỦA SVD TRONG KHỬ NHIỄU
ÂM THANH ......................................................................................9
Chương 1: CHƯƠNG TRÌNH MATLAB ......................................13
3.1. Các câu lệnh được sử dụng ......................................................13
3.2. Đoạn code....................................................................................14
DANH MỤC CÁC TÀI LIỆU THAM KHẢO................................15

CƠ SỞ LÍ THUYẾT CỦA PHÂN TÍCH
SVD:
3


Mục tiêu của phân tích suy biến SVD
Phương pháp SVD sẽ tìm ra một lớp các ma trận xấp xỉ tốt nhất với một ma
trận cho trước dựa trên khoảng cách norm Frobenios giữa 2 ma trận. Người ta
đã chứng minh được rằng ma trận xấp xỉ tốt nhất được biểu diễn dưới dạng tích
của 3 ma trận rất đặc biệt bao gồm 2 ma trận trực giao (orthogonal matrix) và
1 ma trận đường chéo (diagonal matrix). Quá trình nhân ma trận thực chất là

quá trình biến đổi các điểm dữ liệu của ma trận gốc thông qua những phép
xoay trục (rotation) và phép thay đổi độ lớn (scaling) và từ đó tạo ra những
điểm dữ liệu mới trong không gian mới. Điều đặc biệt của ma trận đường chéo
đó là các phần tử của nó chính là những giá trị riêng của ma trận gốc. Những
điểm dữ liệu trong khơng gian mới có thể giữ được 100% thông tin ban đầu
hoặc chỉ giữ một phần lớn thông tin của dữ liệu ban đầu thông qua các phép
truncate SVD. Bằng cách sắp xếp các trị riêng theo thứ tự giảm dần trên đường
chéo chính thuật tốn SVD có thể thu được ma trận xấp xỉ tốt nhất mà vẫn đảm
bảo giảm được hạng của ma trận sau biến đổi và kích thước các ma trận nhân
tử nằm trong giới hạn cho phép. Do đó nó tiết kiệm được thời gian và chi phí
tính tốn và đồng thời cũng tìm ra được một giá trị dự báo cho ma trận gốc với
mức độ chính xác cao.
Do đó, để tiếp cận được thuật tốn phân tích SVD, chúng ta cần phải nắm
những kiến thức cơ bản về cơ sở tạo nên nó. Gọi tắt là Cơ sở lí thuyết của việc
phân tích SVD. Chúng ta có thể tham khảo thêm những khái niệm, tính chất
định lí liên quan đến những vấn đề dưới đây qua quyển: “Đặng Văn Vinh, Giáo
trình Đại số tuyến tính, NXB ĐHQG 2020)

- Ma trận, Định thức
- Trị riêng và vecto riêng
- Khái niệm về Họ trực giao và trực chuẩn. Trực giao hóa GramSchmidt.
- Chéo hóa ma trận, chéo hóa trực giao và những tính chất của
chúng.

Q trình phân tích SVD của một ma trận dựa trên cơ
sở lí thuyết đã nêu trên:

4



Singular Value Decomposition là ứng dụng nổi bật trong Đại số tuyến tính. Bất
kỳ một ma trận A nào với cấp mxn (không nhất thiết phải là ma trận vuông), ta
đều có thể phân tích thành dạng:
Am × n=Q m × m Σ m × n ( P n ×n )T (!)

Trong đó Q và P là các ma trận trực giao; và Σ là ma trận chéo không vuông
(cấp mxn) với các phần tử trên đường chéo σ 1 ≥ σ 2 ≥ ⋯ ≥ σ r ≥0=0=⋯=0 , mặc dù
Σ không phải ma trận vuông nhưng, ta vẫn có thể coi nó là ma trận chéo miễn
là các phần tử khác 0 của nó chỉ nằm trên đường chéo (tức là tại các vị trí có
chỉ số hàng và chỉ số cột như nhau); r là Rank(A) bằng số lượng phần tử khác 0
trong ma trận đường chéo Σ.
*Chú ý rằng cách biểu diễn (!) không là duy nhất, vì ta chỉ cần đổi dấu Q và P
thì vẫn thỏa mãn.

 Biểu diễn SVD qua các trường hợp của ma trận A:
+TH1: m
+TH2: m>n

(H1: SVD cho ma trận A khi:  m<n (hình trên), và  m>n (hình dưới). Σ là một
ma trận đường chéo với các phần tử trên đó giảm dần và khơng âm. Màu đỏ
càng đậm thể hiện giá trị càng cao. Các ô màu trắng trên ma trận này thể hiện
giá trị 0.)
 NGUỒN GỐC SVD
Cho A là một ma trận thực mxn. Ta chứng minh rằng tập hợp các trị riêng khác
không của A AT và AT A là trùng nhau. Thật vậy, giả sử λ o là một trị riêng
5


(eigenvalue) khác 0 của A AT và X o là vector riêng (eigenvector) của A AT

tương ứng. Khi đó :
A AT X o=λ o X o



Suy ra: AT A AT X o= A T λo X o

Điều này tương đương với AT A ( A ¿ ¿ T X o)= A T (λ ¿ ¿ o X o ) ¿ ¿. Vì λ o khác 0 nên
AT X o khác 0. Suy ra λ o là trị riêng của AT A và ( A ¿ ¿ T X o )¿ là vector riêng của
AT A .
Vì ma trận A AT và AT A là 2 ma trận đối xứng, nên chúng chéo hóa trực giao
được. Khi đó:

 A AT ¿(QΣ P T )(QΣ PT )T
¿ QΣ PT P Σ T Q T
¿ QΣ Σ T Q T (vì PT P=I , I là ma trận đơn vị)
¿ Q D1 QT

 AT A=( QΣ PT )T (QΣ P T )
¿ PΣ T Q T QΣ PT
¿ PΣ T Σ PT (vì Q T Q=I , I là ma trận đơn vị)
¿ P D 2 PT

Suy ra
- Các cột của ma trận Q là những cơ sở của các không gian con riêng của ma
trận A AT sau khi trực giao hóa Gram - Schmidt và các σ 12 , σ 22 ,… σ r2 là các trị
riêng khác 0 của A AT
- Các cột của ma trận Plà những cơ sở của các không gian con riêng của ma
trận của AT A sau khi trực giao hóa Gram - Schmidt và các σ 12 , σ 22 ,… σ r2 là
các trị riêng khác 0 của AT A

- D1 , D2 là ma trận chéo với trị riêng tương ứng của A AT và AT A là
σ 12 , σ 22 ,… σ r2. Ta sắp xếp các σ 12 , σ 22 ,… σ r2 sao cho σ 12 >σ 22 > …¿ σ r2 (hình A1)

 COMPACT SVD ( SVD gọn nhẹ hơn)
Gọi Q=(q 1∨q 2∨…∨qm )và P=( p1∨ p2∨…∨ pn )
Viết lại biểu thức (!) dưới dạng tổng với Rank (A) = 1
6


A=σ 1 q1 p 1T +σ 2 q2 p2T +…+ σ r q r p rT

Với mỗi q i piT là một ma trận có hạng bằng 1
Rõ ràng với cách phân tích này, ta nhận thấy rằng ma trận A phụ thuộc vào r
cột đầu tiên của Q , P và r phần tử khác không trên đường chéo Σ. Ta có phân
tích gọn hơn của A gọi là Compact SVD :
A=Qr Σ r (P¿¿ r )T ¿

Với Q r và Pr là các ma trận được tạo nên từ các cột của Q và P tương ứng, Σr là
ma trận con được tạo bởi r  hàng đầu tiên và r  cột đầu tiên của  Σ. Nếu ma
trận  A  có rank nhỏ hơn rất nhiều so với số hàng và số cột r ≪ m, n, ta sẽ được
lợi nhiều về việc lưu trữ.
Dưới đây là ví dụ minh hoạ với m=4 , n=6 , r=2.

(H2: Biểu diễn SVD dạng thu gọn và biểu diễn ma trận dưới dạng tổng các
ma trận có rank bằng 1.)

Sau đây, ta sẽ xét một số ví dụ về phân tích SVD của
một ma trận bất kì:
7



Bước 1 : Xác định ma trận A(cỡ bao nhiêu) để tiến hành phân tích SVD
Bước 2 : Thực hiện chéo hóa trực giao : A AT =Q D1 QT  
2.1 : Viết phương trình đặc trưng của A AT . Từ đó chúng ta sẽ tính được
các giá trị riêng của A AT . Viết được ma trận đường chéo D1 có các phần tử
là những giá trị riêng, ta vừa tìm được.(Lưu ý phải sắp xếp nó theo thứ tự
giảm dần)
2.2 : Tìm vecto riêng của A AT . Sau đó trục giao hóa Gram - Schmidt những
cơ sở của khơng gian con riêng đó Từ đó ta tính được ma trận Q , các cột
của Q là các vecto riêng của A AT .

Bước 3 : Thực hiện chéo hóa trực giao AT A=P D2 PT .
 Tương tự các bước 2.1, 2.2 ta tính được P và D2.

Bước 4: Chọn Σm ×n bằng cách chọn ma trận cỡ tương ứng phù hợp với
D1 hay D2. Sau đó lấy căn bậc 2 của tất cả những phần tử trên đường

chéo.

T

Bước 5:Vậy phân tích SVD của ma trận A sẽ là : Am × n=Qm × m Σm × n ( P n ×n ) .
Giả sử phân tích SVD một ma trận vng cấp 2, ta thực hiện như sau :

Nhận xét: Như vậy từ dữ liệu ban đầu, chúng ta có thể viết nó dưới dạng một
ma trận. Q q trình chéo hóa trực giao ma trận và ma trận chuyển vị của nó,
chúng ta được phân tích SVD. Trên cơ sở đó, ta có thể dễ dàng ứng dụng chúng
vào nhiều lĩnh vực khác nhau trong khoa học.

ỨNG DỤNG CỦA PHÂN TÍCH SVD

TRONG VIỆC KHỬ NHIỄU ÂM THANH
Đặt vấn đề:

8


Trong cuộc sống hiện
nay, chúng ta bắt gặp
được rất nhiều loại âm
thanh khác nhau trong
từng hoàn cảnh khác
nhau. Chẳng hạn như:
âm thanh trong một buổi
hịa nhạc, tiếng trẻ con
nơ đùa với nhau, tiếng
xe cộ chạy trên đường…

Đôi khi chúng ta muốn ghi lại những âm thanh,
những khoảng khắc bất chợt nào đó, ta có thể sử
dụng nhiều phương tiện khác như như điện
thoại, máy ghi âm. Hay ta muốn nghe lại một
bản nhạc nhẹ nhàng. Nhưng một điều chắc chắn
không thể tránh khỏi đó là những tập tin âm
thanh đó ln chứa đầy tạp âm(tiếng ồn, tiếng
gió hú ríu rít,…) khiến cho chất lượng âm thanh
giảm đáng kể gây khó chịu cho người nghe.
Lấy một ví dụ điển hình là
một bạn học sinh muốn ghi
âm lại lời thầy giáo giảng
bài trên lớp, nếu như đó là

file ghi âm nguyên thủy (
file gốc chưa qua xử lí) thì
cậu ấy sẽ rất khó chịu do có
quá nhiều tạp âm xung
quanh, như vậy sẽ ảnh
hưởng đến việc tiếp thu bài
của bạn học sinh đó.

Như vậy, một vấn đề cần đặt ra rằng làm sao để khử nhiễu được một tập tin âm
thanh mà chúng ta mong muốn?
9


 Về mặt ý nghĩa: Nếu như, chúng ta có thể xử lí tốt một tập tin âm thanh
theo các tiêu chí (trọng tâm, chính xác , hiệu quả và tiết kiệm thời gian)
thì việc đó sẽ giúp ích cho ta rất nhiều. Trong nghiên cứu về âm thanh,
sẽ giúp ta tiết kiệm thời gian hơn. Còn trong doanh nghiệp chuyên về
lĩnh vực truyền thông đa phương tiện, nếu xử lí tốt file âm thanh, sẽ tiết
kiệm được rất nhiều chi phí trong việc thiết kế một phần mềm nào đó,
hay chỉ đơn giản là tăng chất lượng âm thanh trong q trình edit video
chun nghiệp Từ đó nó sẽ hướng đến nhiều đối tượng khách hàng hơn
với một trải nghiệm về chất lượng âm thanh tuyệt vời, chân thật và đặt
biệt khơng cịn tạp âm nữa.
 Chẳng hạn như các tập đồn cơng nghệ hàng đầu lớn trên thế giới luôn
chạy đua, cạnh tranh gay gắt với nhau về việc thu và phát âm thanh trên
các thiết bị điện thoại thông minh, ti vi thông minh… làm sao cho tối ưu
và hiệu quả nhất. Điều đó đồng nghĩa với việc sẽ tạo điều kiện mở rộng
cơ hội việc làm trong lĩnh vực âm thanh nói chung và cơng nghệ số nói
riêng. Nắm bắt được xu thế, nắm bắt được cơng nghệ chính là nắm lấy
thành cơng.

Khử nhiễu âm thanh qua thuật tốn phân tích SVD
a. Về ứng dụng hỗ trợ: Hiện tại có rất nhiều ứng dụng hỗ trợ xử lí
âm thanh, đặc biệt là khử nhiễu dễ sử dụng và tiếp cận với người
dùng một cách nhanh chóng. Có thể kể đến như: Audio Editor,
Ringtone Editor, WavePad Sound Editor, AudioDroid,...
Điểm chung của tất cả các phần mềm này chúng đều được viết dựa trên những
đoạn Code xử lí âm thanh trong C++, C#, Pascal, Python, Matlab….Chúng ta
sẽ nghiên cứu cách xử lí âm thanh từ những ngơn ngữ lập trình này. Trên
phương diện khảo sát của nhóm, chúng ta sẽ thực hiện khử nhiễu âm thanh trên
Matlab bởi lẽ: nó là một phần mềm cung cấp một mơi trường hồn hảo về cơng
cụ tính tốn cũng như lập trình. Người sử dụng có thể thực hiện phép tính toán
với ma trận , vẽ đồ thị, hàm số và tạo ra những thuật tốn riêng cho mình. Đồng
thời matlab cũng liên kết với nhiều ngơn ngữ lập trình khác thuận tiện cho
người sử dụng.
b. Về thuật tốn
Trong Matlab, có rất nhiều phương pháp khác nhau để khử nhiễu âm thanh như
phép biến đổi Fourier hữu hạn, phân tích SVD, phân tích thành phần chính
PCA…
Như đã trình bày ở phần 1.1, việc khử nhiễu bằng phân tích SVD sẽ có nhiều
ưu điểm thuận lợi, thông qua việc biến đổi những điểm dữ liệu mới trong
không gian, mà vẫn đảm bảo được hạng của ma trận và kích thước các nhân tử
của ma trận trong một giới hạn cho phép. Như vậy, nhờ thuật tốn đó chúng ta
cod thể xóa bỏ những “vết nhiễu” của âm thanh từ đó giúp đầu ra của âm thanh
được chất lượng hơn.

Quá trình khử nhiễu âm thanh bằnh SVD thông qua Matlab:
10


Q trình phân tích SVD cho một file âm thanh trên matlab trải qua các bước

cơ bản như sau
Bước 1: Giả sử, ta có một file âm thanh trong máy (đi có thể ở dạng wav,
mp3…) ta chèn nó vào matlab. Bằng lệnh “audioread”
Bước 2: Chúng ta chọn giá trị mẫu(y) và tần số của mẫu(Fs, đơn vị Hz), sau
đó thơng qua lệnh “sound”, chúng ta có thể kiểm tra file âm thanh vừa mới nạp
vào matlab
Bước 3: Qua câu lệnh “plot(y)” hay plot the sound, chúng ta có thể thấy được
file âm thanh đó trực quan trên biểu đồ, giả sử sau khi chèn được file âm thanh,
ta có biểu đồ như sau: ( với những phần đánh dấu x màu xanh là những đoạn
âm thanh có nhiễu với tần số xuất hiện cao, chúng ta cần phải loại bỏ chúng)

Thơng qua câu lệnh “Zoom plot(y)” ta có thể quan sát kĩ hơn phần bị nhiễu
trong đoạn âm thanh đó:

Bước 4: Chúng ta tiến hành phân tích SVD để khử đoạn âm thanh bị nhiễu đó,
trên nguyên tắc mã hóa thành một ma trận gồm các nhân tử để chương trình
matlab có thể nhận dạnng được, từ đó bắt đầu phân tích SVD để khử nhiễu nó.

a) Chuyển sound về ma trận A
b) Phân tích SVD ma trận A bởi lệnh [U,S,V]= svd(A)
11


Ta nhập các dữ liệu U,S,V để tiến hành phân tích SVD. Với U và V là những
ma trận trực giao và S là ma trận đường chéo.(Như hình minh họa các giá trị
U,S,V )

Bước 5: Trải qua quá trình phân tích ma trận A thành SVD, chọn các điểm
trong khơng gian chính là những đoạn bị tạp âm, để xử lí.Sau khi xử lí hồn
tất, ta dùng câu lệnh “figure, subplot” để hiển thị đoạn âm thanh mà ta vừa

xử lí, để đối chiếu so sánh.

Dùng lệnh “zoom plot”để ta có thể quan sát kĩ hơn, phần đã bị loại bỏ trong
q trình khử nhiễu do phân tích SVD:

 Như vậy qua 5 thao tác trên kết hợp với cơ sở lí thuyết, chúng ta đã có
thể:
1. Hiểu được bản chất của SVD
2. Các quá trình của việc phân tích SVD của ma trận A

12


3. Ý nghĩa, tầm qua trọng của việc khử nhiễu âm thanh nói chung và
phân tích SVD thơng qua chương trình Matlab nói riêng.
4. Nắm sơ lược cáv thao tác cơ bản, bước đầu làm quen với giao diện
Matlab.

CHƯƠNG TRÌNH MATLAB:
1. Các câu lệnh được sử dụng
-Clear all: Xóa các biến, dữ liệu trước đó
-Audioread(‘Tên file’): Mở 1 file âm thanh cần khử nhiễu có sẵn trong máy
tính.
-Reshape: Sắp xếp thứ tự các số hạng trong 1 ma trận hay tạo ra nhiều mảng
trong ma trận đó.
-[U,S,V] = svd (A) : phân tích SVD ma trận A
-Sigmas= diag(S): gán các giá trị trên đường chéo chính của ma trận S
-plot: Vẽ đồ thị
-rank= [1000] : Đặt giá trị k để file xuất ra âm thanh không bị nhiễu.
-for i=1:length(rank) approx_sigmas = sigmas : loại bỏ các trị riêng thấp.

-approx_S = S : gắn trị riêng đã xử lí vào ma trận S
-Figure: đặt tên file đồ thị
-Xlebel, ylebel: đặt tên trục x, trục y
- Sound: Lệnh phát âm thanh
- Pause: Thực hiện câu lệnh sau 20s
- Diag: Lấy các giá trị trên đường chéo
- Reduction_diagonal_line(80:end) = 0: Khử các giá trị đường chéo từ hàng 80 trở đi
về giá trị 0.
- Fillmissing: Điền vào các giá trị trống vào các giá trị đứng trước đó.

2. Đoạn code

13


%% BTL NHĨM 8 ĐẠI SỐ TUYẾN TÍNH GV : NGUYỄN ANH THI , NGUYỄN XUÂN MỸ
clc; clear;
%% CODE
% Đọc file âm thanh
[Y,Hz] = audioread('amthanh.wav');
X = reshape(Y,[],768);
[U,S,V] = svd(X);
t = 0:1/Hz:(length(Y)-1)/Hz;
figure('name','File đồ thị âm thanh ban đầu');
plot(t,Y);
xlabel('Thoi gian (s)');
ylabel('Bien do tin hieu');
title('Đồ thị âm thanh ban đầu');
sound(Y,Hz);
pause(20);


% Khử nhiễu
reduction_diagonal_line = diag(S);
reduction_diagonal_line(80:end) = 0;
len_S = length(reduction_diagonal_line);
reduciton_S = S;
reduciton_S(1:len_S,1:len_S) = diag(reduction_diagonal_line);
new_X = U*reduciton_S*transpose(V);
new_Y = reshape(new_X,[],2);
new_Y = fillmissing(new_Y,'previous');
figure('name','File đồ thị âm thanh sau khi khử nhiễu');
plot(t,new_Y,'b');
title('đồ thị âm thanh sau khi khử nhiễu');
xlabel('Thoi gian (s)');
ylabel('Bien do tin hieu');
sound(new_Y,Hz);

14


Nhận xét:

Qua quá trình khử nhiễu SVD bằng chương
trình Matlab , ta thấy âm thanh trong bản ghi âm đã được
lọc bớt những tạp âm (tiếng rè, tiếng nói chuyện từ xa)
trong phần đoạn cuối và giúp cho âm thanh của tiếng đàn
trở nên rõ ràng, trong hơn.

NGUỒN THAM KHẢO
Trong q trình nhóm thực hiện việc nghiên cứu,

có sử dụng, tham khảo một số tài liệu, trang web
sau:
Aisha, 2019. Viblo. [Online]
Available at: a/p/handbook-singular-values-decomposition-va-mot-soung-dung-yMnKMOoml7P
Anon., 2015. [Online]
Available at: />Available at: />searchHighlight=noise%20reduction%20audio%20code&s_tid=srchtitle
DayCode, T., 2018. Youtube. [Online]
Available at: />hai, n. v. d., 2020. YouTube. [Online]
Available at: />Talkie, K., 2019. Youtube. [Online]
Available at: />Vinh, Đ. V., 2020. Đại số tuyến tính. NXB Đại Học Quốc Gia.
15


16



×