I.Phân tích tần số pitch và formant của 2 âm vị.
1.1. Khái quát về tần số pitch và formant
Khái niệm tần số pitch:
Không khí được tạo ra từ phổi đẩy qua dây thanh đang ở trạng thái
trương. Khi dây thanh rung với chu kì T 0 thì thông lượng cũng biến đổi tuần
hoàn theo chu kì này và người ta gọi đó là chu kì cơ bản. Giá trị nghịch đảo của
F0 =
1
T0
T0 là
được gọi là tần số cơ bản của tiếng nói. F 0 phụ thuộc vào giới tính
và lứa tuổi người phát âm; F0 thay đổi theo thanh điệu và F0 cũng ảnh hưởng
đến ngữ điệu của câu nói.
Khái niệm tần số formant:
Tuyến âm được coi như một hốc cộng hưởng có tác dụng tăng cường một
tần số nào đó. Những tần số được tăng cường đó được gọi là các Formant.
Mục đích của việc tìm pitch và formant:
Tần số pitch và formant là các đặc trưng cơ bản nhất của tiếng nói, do đó
nếu phân tích, tìm được các tần số này sẽ giúp cho việc số hóa tín hiệu tiếng nói
được dễ dàng hơn, là cơ sở để xây dựng nên các lĩnh vực của xử lí tiếng nói như
nhận dạng tiếng nói, tăng chất lượng tiếng nói, mã hóa tiếng nói, tổng hợp tiếng
nói,…
1.2. Phân tích tần số pitch của 2 âm vị.
Ở đây, sử dụng hai file âm thanh ghi âm giọng nói của hai chúng em
(Hùng và Tường) với nội dung ghi âm cùng là: “Đồng Xuân Hùng”.
Các bước thực hiện:
1.2.1. Sử dụng hàm resample của MATLAB để cài đặt lại tần số lấy
mẫu bằng 10000(HZ).
1.2.2. Biểu diễn tín hiệu âm thanh theo thời gian.
Đồ thị biểu diễn tín hiệu âm thanh ghi âm giọng nói của Hùng:
1
Đồ thị biểu diễn tín hiệu âm thanh ghi âm giọng nói của Tường:
1.2.3. Phân tích tần số pitch trên miền tần số.
2
Phương pháp phân tích tần số pitch trên miền tần số:
•
•
Sử dụng đảo tần phổ, tức là biến đổi fourier của logarit của phổ tần tín
hiệu. Xem phổ tần của tín hiệu ban đầu như một tín hiệu và đem vào xử lí
để tìm ra chu kì của nó.
Để nhận được ước lượng của tần số pitch từ đảo tần phổ, chúng ta tìm
kiếm các đỉnh của tín hiệu trên trục nghịch tần (quefrency), tương ứng
với các tần số cơ bản.
X ( jω ) =
•
Công thức biến đổi fourier tổng quát:
+∞
∫ x(t ) * e
− jωt
dt
−∞
Thực hiện trên Matlab:
Dựa vào hai đồ thị trên, ở phần ghi âm của Hùng, ta trích một phần âm
thanh của chữ “Đồng” với n= [10500 11500]. Ở phần ghi âm của Tường, ta trích
một phần âm thanh của chữ “Đồng” với n= [16000 17000].
Sau khi thực hiện trên Matlab kết quả thu được:
- Phần ghi âm của Hùng:
3
Fpitch_hung=122.0 Hz.
- Phần ghi âm của Tường
Fpitch_tuong=138.9 Hz.
Giải thích kết quả thu được:
•
•
•
Dựa vào đồ thị trên, ta thấy khi trích ra một đoạn tiếng nói thì tín hiệu
tiếng nói đó gần như là một tín hiệu tuần hoàn, và mục đích là ta phải
tìm ra chu kì tuần hoàn nhỏ nhất.
Việc phân tích phổ của logarit phổ tín hiệu cho ta đồ thị thứ ba thể
hiện cực đại của tần số cơ bản ứng với thời gian 1/f_pitch tương ứng,
lấy nghịch đảo của thời gian này ta sẽ thu được tần số cơ bản.
Những việc làm này đã được thể hiện rõ ở chương trình tìm pitch
trong MATLAB.
1.2.4. Phân tích tần số pitch trên miền thời gian.
Phương pháp phân tích tần số pitch trên miền thời gian:
4
•
•
Sử dụng phương pháp tự tương quan, đo độ tương tự giữa hai tín hiệu và
sự tự tương quan đo độ tương tự giữa chính nó và biến đổi nó theo thời
gian.
Hệ số tương quan trong một khoảng thời gian ngắn của một đoạn tín hiệu
RXX (τ ) =
+∞
∫ x(t ) * x(t − τ )dt
τ
x(t) với chính nó là:
với là độ trễ thời gian.
Đối với tín hiệu tiếng nói đang xét, ta sẽ tự tương quan nó với những độ
trễ khác nhau, sau đó dựa vào đồ thị của hệ số tương quan, tìm đỉnh có hệ
τ
số tương quan lớn nhất trừ trường hợp =0 từ đó suy ra tần số cơ bản.
−∞
•
Thực hiện trên Matlab:
Trích một phần âm thanh của chữ “Đồng” tương tự như phần trên.
Thực hiện trên Matlab ta thu được kết quả:
- Phần ghi âm của Hùng:
5
Fpitch_hung=122.0 Hz.
- Phần ghi âm của Tường:
Fpitch_tuong=138.9.
Giải thích kết quả thu được:
•
•
τ
τ =0
Khi sử dụng hàm tự tương quan với các độ trễ khác nhau, tại
thì
τ
ta có hệ số tương quan cực đại, khi tăng thì hệ số tương quan sẽ giảm và
τ =T
lại đạt cực đại khi
,từ cơ sở đó ta xây dựng được đồ thị biểu diễn hệ
số tương quan tương ứng vớ các độ trễ thời gian như trên.
Hệ số tương quan lớn nhất chứng tỏ tại thời gian trễ đó, tín hiệu gần như
τ =0
lặp lại so với tại
, thời gian trễ đó là chu kì tuần hoàn ngắn nhất của
tín hiệu, lấy nghịch đảo thời gian này ta thu được tần số cơ bản.
6
•
Việc làm này đã được thể hiện rõ trong chương trình tính tần số pitch trên
miền thời gian được xây dựng trong MATLAB.
1.2.5. Nhận xét kết quả thu được từ hai phương pháp tính tần số pitch.
•
Kết quả tần số pitch thu được từ hai phương pháp là như nhau, chứng tỏ
độ chính xác cao của hai phương pháp tính tần số pitch trên.
1.2.6. Phân tích tần số formant của hai âm vị.
Phương pháp thực hiện:
Sử dụng phương pháp dự đoán tuyến tính (mô hình LPC), bản chất là một
bộ lọc cấu trúc IIR đệ quy, sau đó đi tìm các tần số cộng hưởng của bộ lọc này.
Cơ sở của phương pháp dự đoán tuyến tính là các mẫu tiếng nói có thể
được xấp xỉ hóa như là tổ hợp tuyến tính của một số mẫu quá khứ, bằng cách tối
thiểu hóa tổng của các bình phương phương sai giữa các mẫu hiện tại của tín
hiệu tiếng nói và mẫu dự đoán tuyến tính, từ đó thu được tập hợp các tham số
dự đoán.
LPC tìm ra các hệ số a của bộ dự báo tuyến tính theo công thức:
x$(n) = −a (2) x(n − 1) − a (3) x (n − 2) − ... − a ( p + 1) x( n − p)
Ứng dụng MATLAB để xây dựng chương trình ước lượng tần số formant,
trong MATLAB đã trang bị hàm có sẵn LPC, giúp chúng ta thuận lợi hơn trong
việc xây dựng chương trình.
Kết quả thu được:
- Phần ghi âm của Hùng:
7
Formant 1 Frequency 674.9
Formant 2 Frequency 1084.8
Formant 3 Frequency 2403.0
Formant 4 Frequency 3341.0
Formant 5 Frequency 3547.5
- Phần ghi âm của Tường:
8
Formant 1 Frequency 650.9
Formant 2 Frequency 1059.4
Formant 3 Frequency 2665.9
Formant 4 Frequency 3253.7
Formant 5 Frequency 3900.3
Giải thích kết quả thu được:
Lấy nghịch đảo các giá trị thời gian ứng với các cực đại cục bộ được biểu
diễn trong đồ thị ở trên ta thu được các tần số formant.
Nhận xét:
Ta có thể thấy: dù cùng là nam giới, cùng lứa tuổi và cùng phát âm tiếng
“Đồng” nhưng khi phân tích hai phần ghi âm của Hùng và Tường ta thu được
tần số cơ bản pitch và tần số formant khác nhau. Điều này chứng tỏ tần số pitch
và formant là đặc trưng của mỗi người. Đây chính là lí do để ta có thể dùng tần
số pitch và tần số formant làm cơ sở cho những công việc như phân tích tiếng
nói, mã hóa tiếng nói, nhận dạng tiếng nói, tổng hợp tiếng nói,..
II.Phân tích tín hiệu trong trường hợp có nhiễu tạp âm và sau khi lọc
nhiễu.
9
Tín hiệu tiếng nói cũng như các tín hiệu khác không phải lúc nào cũng là
tín hiệu có ích mà thường là các tín hiệu có chứa tạp âm. Nghiên cứu sự ảnh
hưởng của tạp âm đến tín hiệu cũng như các phương pháp để loại bỏ tạp âm là
một trong những vấn đề quan trọng mà lĩnh vự xử lí tín hiệu hướng đến.
Tần số cơ bản pitch và formant là hai đặc trưng cơ bản của tiếng nói, trong
phần này sẽ nghiên cứu tần số pitch và formant khi tín hiệu bị nhiễu tạp âm
gauss và sau khi loại bỏ bớt tạp âm gauss, từ đó suy ra sự ảnh hưởng của tạp âm
đến việc xử lí tín hiệu tiếng nói.
2.1. Phân tích tần số pitch và formant của tín hiệu sau khi cộng thêm
nhiễu.
2.1.1. Đôi nét về tạp âm Gauss
Tạp âm gauss là quá trình xác suất có mật độ phổ công suất phẳng (mật độ
phổ công suất không đổi trong toàn bộ quá trình) nghĩa là tín hiệu nhiễu có công
suất trong toàn bộ băng thông. Hàm mật độ xác suất tuân theo phân bố Gauss.
Trong thực tế, tạp âm gauss là dòng điện không mong muốn của chuyển
động nhiệt của các hạt mang điện trong mạch điện, với tính chất biên độ của tạp
âm tuân theo quy luật phân bố chuẩn.
Tạp âm gaussian là nhiễu băng rộng, khi cộng với tín hiệu có ích thì tạp
âm này sẽ xuất hiện trên toàn bộ miền tần số của tín hiệu có ích.
2.1.2. Thêm tín hiệu nhiễu.
Trong MATLAB, để tạo tín hiệu nhiễu gaussian, ta sử dụng hàm randn.
Cộng tín hiệu ban đầu với nhiễu, sau đó phân tích tần số pitch và formant của
tín hiệu này, sử dụng các chương trình tính tần số pitch và formant đã xây dựng
ở phần trước.
Ta có:
Với
α
y
nhieu
= ybd + α * randn ()
được xác định từ tỉ số SNR(Tính âm/tạp âm) như sau:
SNR
−
Pa
SNR = 10log10 ( 2 ) → α = Pa *10 10
α
(Pa là công suất của tín hiệu ban đầu,
α2
là công suất của tạp âm). Ở đây ta thay SRN lần lượt bằng các giá trị:
20,10,5,3,0.
2.1.3. Tìm tần số pitch và tần số formant sau khi thêm tín hiệu nhiễu.
10
Tiến hành thêm nhiễu Gauss vào đoạn ghi âm của Hùng với giá trị SRN
lần lượt là 20,10,5,3,0.
a) Với SRN=20.
Tín hiệu âm thanh sau khi thêm nhiễu:
Tìm tần số pitch trên miền tần số:
11
Fpitch_hung_nhieu20=122.0 Hz.
Tìm tần số formant:
Formant 1 Frequency 658.5
Formant 2 Frequency 1078.3
12
Formant 3 Frequency 2422.2
Formant 4 Frequency 3352.9
Formant 5 Frequency 3905.3
b) Với SRN=10.
Tín hiệu âm thanh sau khi thêm nhiễu:
Tìm tần số pitch trên miền tần số:
13
Fpitch_hung_nhieu10=122.0 Hz.
Tìm tần số formant:
Formant 1 Frequency 657.0
14
Formant 2 Frequency 1076.1
Formant 3 Frequency 2408.8
Formant 4 Frequency 3332.7
Formant 5 Frequency 3942.1
c) Với SRN=5.
Tín hiệu âm thanh sau khi thêm nhiễu:
Tìm tần số pitch trên miền tần số:
15
Fpitch_hung_nhieu5=122.0 Hz.
Tìm tần số formant:
Formant 1 Frequency 645.6
16
Formant 2 Frequency 1068.6
Formant 3 Frequency 2382.1
Formant 4 Frequency 3318.7
Formant 5 Frequency 4004.3
d) Với SRN=3.
Tín hiệu âm thanh sau khi thêm nhiễu:
Tìm tần số pitch trên miền tần số:
17
Fpitch_hung_nhieu3=122.0 Hz.
Tìm tần số formant:
Formant 1 Frequency 648.4
18
Formant 2 Frequency 1073.6
Formant 3 Frequency 2422.8
Formant 4 Frequency 3326.5
Formant 5 Frequency 4293.4
e) Với SRN=0.
Tín hiệu âm thanh sau khi thêm nhiễu:
Tìm tần số pitch trên miền tần số:
19
Fpitch_hung_nhieu0=122.0 Hz.
Tìm tần số formant:
Formant 1 Frequency 641.7
Formant 2 Frequency 1065.4
20
Formant 3 Frequency 2381.9
Formant 4 Frequency 3344.2
Formant 5 Frequency 4415.0
Formant 1
Formant 2
Formant 3
Formant 4
Formant 5
Ban
đầu
674.9
1084.8
2403.0
3341.0
3547.5
SRN=20 SRN=10 SRN=5
SRN=3
SRN=0
658.5
1078.3
2422.2
3352.9
3905.3
648.4
1073.6
2422.8
3326.5
4293.4
641.7
1065.4
2381.9
3344.2
4415.0
657.0
1076.1
2408.8
3332.7
3942.1
645.6
1068.6
2382.1
3318.7
4004.3
2.1.4. Nhận xét.
Nhận xét kết quả thu được:
•
•
•
•
Ta thấy tỉ số SRN càng nhỏ, công suất của nhiễu càng lớn, tín hiệu âm
thanh bị biến dạng càng nhiều. Do đó công việc khôi phục tín hiệu càng
khó thực hiện.
Sau khi cộng thêm nhiễu thì tần số pitch của tín hiệu không thay đổi vì do
tạp âm gauss là tạp âm băng rộng, nó ảnh hưởng đến toàn bộ tín hiệu, do
vậy nó không ảnh hưởng đến sự thay đổi chu kì tuần hoàn của tín hiệu, do
đó tần số cơ bản không thay đổi.
Tần số formant của đoạn tín hiệu sau khi cộng thêm nhiễu thay đổi so với
tần số formant của tín hiệu ban đầu.
Vì tần số formant là các cực trị địa phương trong phổ tần số của tín hiệu
tiếng nói, ở các tần số có biên độ cộng hưởng thấp thì sẽ có trường hợp
biên độ cộng hưởng của nhiễu sẽ lớn hơn các biên độ cộng hưởng này, do
đó làm thay đổi vị trí cộng hưởng cục bộ và làm thay đổi tần số formant.
III. Phân tích tần số pitch và formant sau khi lọc nhiễu.
3.1. Lọc nhiễu
Vì tạp âm gauss phân bố trên toàn bộ miền tần số nên trong miền tần số
của tín hiệu có ích cũng có chứa tạp âm, do vậy ta không thể lọc bỏ hoàn toàn
tạp âm mà chỉ có thể loại bỏ đi phần tạp âm nằm ngoài tín hiệu có ích. Để làm
được điều này, ta cần phân tích phổ của tín hiệu ban đầu để xem năng lượng của
tín hiệu tập trung nhiều nhất ở dải tần số nào, sau đó dùng bộ lọc phù hợp để lọc
bỏ tạp âm.
Phổ của tín hiệu âm thanh ban đầu:
21
Dựa vào phổ của tín hiệu ban đầu ta thấy năng lượng của âm thanh tập
trung chủ yếu ở miền tần số [115 1500] và [2200 4000].
Ta sẽ sử dụng bộ lọc FIR trong Matlab để tiến hành loại bỏ tạp âm. Trong
trường hợp này ta sử dụng file âm thanh khi đã thêm nhiễu với chỉ số SRN=5.
Ta dùng bộ lọc thông dải với 2 cửa sổ Hamming cắt các khoảng tần số
[115 1500] và [2200 4000], bậc bộ lọc là 240. Như vậy, phần lớn tín hiệu có ích
sẽ đi qua, phần tạp âm bị loại bỏ đáng kể. Và đảm bảo âm thanh sẽ giữ được
chất giọng đặc trưng của người nói.
Kết quả thu được:
22
23
Kết thúc công việc lọc nhiễu, ta có thể thấy trên miền tần số những miền
tần số tập trung ít năng lượng tín hiệu đã bị loại bỏ. Còn trên miền thời gian,
năng lượng của nhiễu đã giảm bớt, tuy nhiên nó cũng ảnh hưởng đến phần tín
hiệu ban đầu làm méo dạng tín hiệu.
3.2. Phân tích tần số pitch và formant sau khi lọc nhiễu.
3.2.1. Phân tích tần số pitch.
Phân tích trên miền tần số:
Kết quả: fpitch_hung_loc=122,0(Hz)
24
-Phân tích trên miền thời gian:
+fpitch_hung_loc=122,0(Hz)
25