Bài báo cáo trình bày cách xác định tần số cơ bản trong tiếng nói bằng phương pháp tự tương quan có cải tiến. Trong bài viết có trình bày cả kết quả thực nghiệm. Chúc các bạn học tốt.Xử lý tiếng nói Xác định tần số cơ bản bằng phương pháp tự tương quan cải tiến.
Trang 1VIÖN C¤NG NGHÖ TH¤NG TIN Vµ TRUYÒN TH¤NG
BÁO CÁO MÔN XỬ LÝ TIẾNG NÓI
§Ò TµI: XÁC ĐỊNH TẦN SỐ CƠ BẢN DÙNG PHƯƠNG PHÁP TỰ
TƯƠNG QUAN CẢI TIẾN
Hà Nội, 12-2016
Giảng viên hướng dẫn: Trịnh Văn Loan Sinh viên thực hiện: Nguyễn Việt Anh Lớp:
MSSV:
Trang 2MỤC LỤC
DANH MỤC HÌNH ẢNH: 3
LỜI NÓI ĐẦU 4
CHƯƠNG I: MÔ TẢ YÊU CẦU VÀ LÝ THUYẾT CHUNG 5
I Mô tả yêu cầu: 5
II Lý thuyết chung: 5
1 Các đặc tính cơ bản của tín hiệu tiếng nói: 5
2 Cấu trúc file Wav: 5
3 Hàm năng lượng thời gian ngắn: 8
4 Zero Crossing Rate: 9
5 Phương pháp tính tần số cơ bản bằng cách sử dụng hàm tự tương quan có cải tiến: 9
CHƯƠNG 2: LẬP TRÌNH VÀ THỬ NGHIỆM 11
1 Xây dựng chương trình: 11
1.1 Lựa chọn công nghệ: 11
1.2 Thực hiện chương trình: 11
1.3 Giao diện chương trình: 11
2 Thử nghiệm và đánh giá: 12
2.1 Thử nghiệm: 12
2.2 Đánh giá: 14
KẾT LUẬN 15
TÀI LIỆU THAM KHẢO 16
Trang 3DANH MỤC HÌNH ẢNH:
Hình 1 Sơ đồ chung của phương pháp xác định tần số cơ bản 9
Hình 2 Dạng sóng tín hiệu 10
Hình 3 Dạng sóng tín hiệu đã hạn chế 10
Hình 4 Giao diện chương trình chính 11
Hình 5 Giao diện chương trình 12
Hình 6 Kết quả của file Xe.wav 13
Hình 7 Kết quả của file A96.wav 14
Trang 4LỜI NÓI ĐẦU
Xử lý tiếng nói từ khi xuất hiện đã đóng một vai trò quan trọng trong cuộc sống
hằng ngày Cùng với sự phát triển ngày càng nhanh của khoa học kỹ thuật, đặc biệt là
công nghệ thông tin và kỹ thuật máy tính, nhu cầu xử lý tiếng nói của con người ngày
càng lớn Xử lý tiếng nói có ứng dụng mọi mặt, về cơ bản có ứng dụng như nhận dạng
tiếng nói, người nói, tăng chất lượng giọng nói, tổng hợp tiếng nói… Để làm được điều
đó, việc xác định các đặc trưng của tiếng nói như tần số cơ bản, formant … là hết sức
quan trọng Người ta có thể sử dụng nhiều phương pháp khác nhau như LPC, tự tương
quan, xử lý đồng hình… để xác định các đặc trưng đó
Trong bài báo cáo này, em sẽ giải quyết vấn đề tính tần số cơ bản bằng phương
pháp tự tương quan có cải tiến
Bài báo cáo gồm có 2 chương:
Chương 1: Mô tả yêu cầu và lý thuyết chung Chương này nêu rõ yêu cầu cần thực hiện
trong bài tập lớn và lý thuyết về phương pháp xác định tần số cơ bản dùng phương pháp
tự tương quan có cải tiến
Chương 2: Lập trình và thử nghiệm Chương này trình bày về việc lập trình tính tần số cơ
bản bằng phương pháp tự tương quan có cải tiến Phần thử nghiệm có nêu rõ kết quả tính
được
Phần cuối là phần kết luận đưa ra đánh giá sau quá trình thực hiện bài tập lớn này
Trang 5CHƯƠNG I: MÔ TẢ YÊU CẦU VÀ LÝ THUYẾT CHUNG
I Mô tả yêu cầu:
Trong bài tập lớn này, em sẽ giải quyết vấn đề tính tần số cơ bản bằng phương pháp tự tương quan cải tiến Những phần thực hiện trong bài tập lớn:
- Đọc dữ liệu từ File WAVE
- Vẽ dạng sóng tín hiệu
- Vẽ dạng sóng tín hiệu đã bị hạn chế
- Tính và vẽ hàm tự tương quan
- Tính và vẽ tần số cơ bản
II Lý thuyết chung:
1 Các đặc tính cơ bản của tín hiệu tiếng nói:
Tiếng nói mà con người giao tiếp hằng ngày có bản chất là sóng âm thanh lan truyền trong không khí Sóng âm trong không khí là sóng dọc do sự giản nở của không khí Tín hiệu âm thanh tiếng nói là tín hiệu biến thiên liên tục về thời gian Dải tần mà tai người có thể nghe được khá rộng, từ 20 đến 20.000Hz, là do đặc tính sinh lý quy định Tín hiệu tiếng nói có độ dư thừa lớn do môi trường có nhiễu.Thực tế thì trong miền tần số
300 đến 3400Hz tiếng nói nghe được khá rõ, đây cũng chính dải tần được người ta dùng trong điện thoại Tín hiệu tiếng nói được tạo thành từ chuỗi các âm vị liên tiếp Các âm vị này và các dạng chuyển đổi của chúng được xem như các ký hiệu biễu diễn thông tin Sự sắp xếp những âm vị này được chi phối bởi các quy luật ngôn ngữ, cho nên các mô hình toán học khi được áp dụng đều phải gắn bó mật thiết với việc nghiên cứu các quy luật này
Xử lý tiếng nói là một lĩnh vực xử lý thông tin chứa trong các tín hiệu tiếng nói với mục đích truyền, lưu trữ, tổng hợp, nhận dạng tiếng nói Xử lý tiếng nói hiện nay đang được nghiên cứu và được vào nhiều ứng dụng
Các nghiên cứu được tiến hành để xử lý tiếng nói yêu cầu những hiểu biết trên nhiều lĩnh vực và ngày đa dạng: từ ngữ âm, ngôn ngữ học cho đến việc xử lý tín hiệu v.v
2 Cấu trúc file Wav:
Tiếng nói là tín hiệu tương tự, để lưu trữ được trong máy tính đặt trưng bởi chuỗi
số 01…ta phải “lấy mẫu” và “lượng tử hoá” tín hiệu tương tự thành tín hiệu số mới lưu trữ được trong máy tính Phương pháp “lấy mẫu” và “lượng tử hoá” âm thanh hiện nay thường là phương pháp PCM Phương pháp này sẽ lấy mẫu âm thanh với tần số khoảng
từ 11.025 kHz cho đến 44.1 kHz Mỗi giá trị mẫu được lượng tử hoá bằng 8 bits tương
Trang 6ứng giá trị mẫu từ –128 đến 127 hoặc lượng tử hoá bằng 16 bits tương ứng giá trị mẫu từ –32768 đến 32767 So với lượng tử hoá bằng 8 bits thì lượng tử hoá bằng 16 bits sẽ lưu trữ âm thanh trung thực hơn nhưng bù lại số byte lưu tăng gấp đôi
2.1 RIFF file
Cấu trúc của Wave File thuộc vào lớp file đƣợc sử dụng bỡi các hàm Multimedia của Windows : đó là RIFF file RIFF là chữ viết tắt của Resource Interchange File Format (format file trao đổi tài nguyên) Một RIFF file gồm một hoặc nhiều loại chunks, trong mỗi chunk lại chứa con trỏ để chỉ đến chunk kế tiếp Mỗi chunk bao gồm loại chunk và
dữ liệu theo sau loại chunk đó Một ứng dụng muốn đọc RIFF file có thể đi qua lần lƣợt từng chunk, đọc dữ liệu ở những chunk nó quan tâm và có thể bỏ qua các chunk mà nó không quan tâm
Một chunk của RIFF file luôn bắt đầu bỡi một header có cấu trúc như sau:
typedef struct
{
FOURCC ckID;
DWORD ckSize;
} CK;
FOURCC gồm 4 bytes chỉ ra loại chunk Đối với Wave File, field này có giá trị là
"WAVE" Nếu loại chunk ít hơn 4 ký tự thì các ký tự còn lại bên phải sẽ được đệm thêm vào các khoảng trắng ckSize gồm 4 byte chứa kích thước vùng dữ liệu của chunk, vùng
dữ liệu này nằm ngay sau header và có kích thước là ckSize bytes Chunk có thể chứa các subchunks Subchunk cũng là một chunk Một RIFF file luôn bắt đầu bằng một chunk loại "RIFF"
ckSize gồm 4 byte chứa kích thước vùng dữ liệu của chunk, vùng dữ liệu này nằm ngay sau header và có kích thước là ckSize bytes
Chunk có thể chứa các subchunks Subchunk cũng là một chunk Một RIFF file luôn bắt đầu bằng một chunk loại "RIFF"
2.2 Cấu trúc file Wave:
Trang 7Wave file bắt đầu là chunk loại "RIFF” Hai subchunk trong Wave chunk đặc tả thông tin về âm thanh của wave file và tiếp đó là dữ liệu của từng subchunk Đó là subchunk "fmt " và subchunk "data"
2.2.1 Subchuck “fmt”
Dữ liệu của "fmt " chunk là cấu trúc WAVEFORMAT có cấu trúc như sau:
typedef struct waveformat_tag
{
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
} WAVEFORMAT;
wFormatTag thường có giá trị là WAVE_FORMAT_PCM được định nghĩa trong tập tin MMSYSTEM.H như sau:
#define WAVE_FORMAT_PCM 1
Giá trị này báo cho phần mềm đang đọc Wave File biết kiểu mã hóa dữ liệu âm thanh sang dữ liệu số là kiểu mã hóa PCM
nChannels có hai giá trị: bằng 1 cho âm thanh mono và bằng 2 cho âm thanh steréo
nSamplesPerSec cho biết tốc độ lấy mẫu
nAvgBytesPerSec cho biết số byte trung bình yêu cầu trong 1 giây để phát lại mẫu
dữ liệu của sóng âm
nBlockAlign cho biết số byte dùng để chứa một mẫu âm thanh
Ta thấy trong WAVEFORMAT chưa có thông tin về số bit dùng để lượng tử hóa một mẫu dữ liệu của sóng âm Thực tế, Wave File sẽ xác lập số bit dùng cho một mẫu dữ
Trang 8liệu bằng một trường gắn vào cuối cấu trúc của WAVEFORMAT Cấu trúc đó được định nghĩa như sau:
typedef struc pcmwaveformat_tag
{
WAVEFORMAT wf;
WORD wBitsPerSample;
} PCMWAVEFORMAT;
wBitsPerSample cho biết số bit trong một mẫu dữ liệu Chú ý rằng các mẫu dữ liệu vẫn phải lưu trữ ở dạng byte hoặc word Do đó, nếu một Wave File dùng 12 bit để lượng tử hóa một mẫu sóng âm thì sẽ phải lưu trữ cả 4 bit thừa không dùng đến
b Subchuck “data”:
Dữ liệu của "data" subchunk của Wave File chứa các số liệu của âm thanh đã được
số hóa Đối với mẫu âm thanh 8 bit, dữ liệu của "data" subchunk bao gồm các giá trị 1 byte (có giá trị từ 0 – 255) của các mẫu âm thanh Đối với mẫu âm thanh 16 bits, mỗi mẫu dữ liệu gồm 2 bytes (có giá trị từ -32768 tới 32767)
Trong mẫu Mono 8 bits, dữ liệu của subchunk "data" gồm chuỗi các giá trị 1 bytes Với Stereo 8 bits, mỗi mẫu gồm 2 bytes, dữ liệu sẽ được sắp xếp xen kẽ (interleave), với byte đầu (byte chẳn) là mẫu âm thanh của kênh bên trái, byte sau (byte lẻ) là của kênh bên phải
3 Hàm năng lƣợng thời gian ngắn:
Năng lượng sóng trong một cửa sổ (với độ rộng cửa sổ W) được tính bằng công thức sau:
∑
Việc tính toán năng lượng trong một cửa sổ được sử dụng để phân biệt giữa âm vô thanh và âm hữu thanh Do phần âm vô thanh thường có năng lượng nhỏ còn phần âm hữu thanh thường có năng lượng lớn Ta cần chọn một ngưỡng để phân biệt giữa âm vô thanh và âm hữu thanh Nhưng có một vài trường hợp năng lượng của âm vô thanh gần bằng năng lượng của âm hữu thanh
Trang 94 Zero Crossing Rate:
Giá trị này cho biết số lần dạng sóng tín hiệu cắt qua trục hoành của đồ thị dạng sóng tín hiệu Âm vô thanh có ZCR lớn do mức độ ngẫu nhiên của tín hiệu còn âm hữu thanh có ZCR nhỏ Chính điều này giúp ta có thể phân biệt âm vô thanh và âm hữu thanh bằng cách chọn một ngưỡng
5 Phương pháp tính tần số cơ bản bằng cách sử dụng hàm tự tương quan có cải tiến:
5.1 Tần số cơ bản:
Dạng sóng của tiếng nói gồm hai phần: Phần giống nhiễu trong đó biên độ biến đổi ngẫu nhiên và phần có tính chu kỳ trong đó tín hiệu lặp lại gần như tuần hoàn Phần tín hiệu có tính chu kỳ chứa các thành phần tần số có dạng điều hoà Tần số thấp nhất chính là tần số cơ bản và cũng chính là tần số dao động của thanh môn Đối với người nói khác nhau, tần số cơ bản cũng khác nhau Bảng sau cho biết tần số cơ bản của giới tính
và tuổi Trong hội thoại, tần số cơ bản thay đổi liên tục
Giá trị tần số cơ bản phụ thuộc vào giới tính và lứa tuổi Ví dụ nam có tần số cơ bản trong khoảng từ 80-250 Hz, nữ có tần số cơ bản trong khoảng từ 150-500 Hz
5.2 Mô hình chung tính tần số cơ bản:
Hình 1 Sơ đồ chung của phương pháp xác định tần số cơ bản.
5.3 Hàm tự tương quan:
Công thức tính hàm tự tương quan:
∑
N là độ rộng cửa sổ mà ta đang xét, còn K thì thường lấy bằng một nửa độ rộng cửa sổ
Tính chất cơ bản của hàm tự tương quan:
- Là hàm chẵn R(k) = R(-k)
Trang 10- R(k) đạt giá trị cực đại tại 0: R(k) < R(0) với mọi k
- Giá trị R(0) chính bằng năng lượng của tín hiệu
Dựa vào các tính chất trên ta có nhận xét hàm tự tương quan sẽ đạt giá trị cực đại tại các mẫu 0, T, 2T, … Như vậy việc xác định chu kỳ cơ bản sẽ đưa về việc xác định chu kỳ cơ bản của hàm tự tương quan
5.4 Phương pháp tự tương quan có cải tiến:
Để tính toán được dễ dàng hơn, ta hạn chế mức biên độ đối với tín hiệu đầu vào, ta chọn ngưỡng cắt loại bỏ đối với những giá trị biên độ < thì ta coi bằng 0 Như thế việc tính toán hàm tự tương quan của sẽ dễ dàng hơn
Ví dụ: dạng sóng tín hiệu ban đầu:
Hình 2 Dạng sóng tín hiệu
Dạng sóng tín hiệu đã bị hạn chế với
Hình 3 Dạng sóng tín hiệu đã hạn chế.
5.5 Mô tả cách xác định:
Đầu tiên ta cần chọn một cửa sổ có thời gian khoảng 20ms Dựa vào tần số lấy mẫu khi đọc file WAVE ta có thể xác định xem độ rộng cửa sổ là bao nhiêu mẫu Sau đó trong mỗi cửa sổ ta tính toán năng lượng, tỉ lệ biến thiên qua trục không, hàm tự tương quan Do những đoạn chứa âm vô thanh không có tần số nên ta cần loại bỏ do đó ta dựa vào năng lượng và tỉ lệ biến thiên qua trục không để loại bỏ Ở đây ta cần chọn ngưỡng
để loại bỏ Sau đó với hàm tự tương quan tính được trong mỗi cửa sổ ta tính ra được 2 cực đại gần nhất, từ đó suy ra tần số cơ bản của tín hiệu Việc thực hiện tiếp tục khi ta dịch cửa sổ với đi một đoạn bằng một nửa độ rộng cửa sổ Việc tính toán này cứ lặp đi
Trang 11CHƯƠNG 2: LẬP TRÌNH VÀ THỬ NGHIỆM
1 Xây dựng chương trình:
1.1 Lựa chọn công nghệ:
- Ngôn ngữ lập trình: Java
- Giao diện Java Swing, có sử dụng thư viện vẽ đồ thị JfreeChart
- Tool lập trình: IntelliJ IDEA
1.2 Thực hiện chương trình:
Chương trình có các chức năng sau:
- Đọc và mở file wav
- Hiển thị dạng sóng tín hiệu, hiển thị những thông tin đọc từ file wav
- Hiển thị dạng sóng tín hiệu đã hạn chế
- Hiển thị hàm tự tương quan
- Hiển thị đường biểu diễn tần số cơ bản
1.3 Giao diện chương trình:
Hình 4 Giao diện chương trình chính.
Trang 12Giao diện của chương trình có các thành phần theo thứ tự từ trên xuống dưới:
Phía trên bên trái là khung chứa thông tin về file wav
Bên dưới là các ô nhập thông tin, để chọn ngưỡng hạn chế tín hiệu , chọn
ngưỡng năng lượng và chọn ngưỡng chỉ số ZCR dùng để phân biệt giữa âm vô
thanh và âm hữu thanh
Sau khi nhấn vào nút OK thì sẽ chuyển sang cửa sổ mới có giao diện như sau:
Hình 5 Giao diện chương trình.
Theo thứ tự từ trên xuống dưới ta có các đồ thị
Đồ thị thứ nhất hiển thị dạng sóng tín hiệu
Đồ thị thứ hai hiển thị dạng sóng tín hiệu đã hạn chế
Đồ thị thứ ba hiển thị hàm tự tương quan của tín hiệu
Đồ thị thứ tư hiển thị đường biểu diễn tần số của tín hiệu
2 Thử nghiệm và đánh giá:
2.1 Thử nghiệm:
Thử nghiệm các file Xe.wav, A96.wav
a Với file Xe.wav:
Thông tin: Frames: 12879, Sample Rate: 16000
Trang 13Thông số:
Window Size 320
0.1 Zcr Threshold 200
Power Threshold 0.4
Kết quả:
Hình 6 Kết quả của file Xe.wav
Kết quả tần số trung bình: 257 Hz
b Với file A96.wav:
Thông tin: Frames: 3450, Sample Rate: 10kHz
Thông số:
Window Size 200
0.1 Zcr Threshold 200
Power Threshold 0.4
Kết quả:
Trang 14Hình 7 Kết quả của file A96.wav Kết quả tần số trung bình: 137 Hz
2.2 Đánh giá:
Qua thử nghiệm ta thấy việc thiết lập các thông số về ngưỡng năng lượng và ngưỡng cho tỉ lệ cắt qua trục không là cần thiết để xác định chính xác tần số
Trang 15KẾT LUẬN
Như đã nói, xử lý tiếng nói đã và đang là một lĩnh vực quan trọng và được quan tâm do tính ứng dụng của nó vào đời sống, khoa học quân sự, dân sự Cùng với công nghệ ngày càng phát triển, xử lý tiếng nói càng có cơ hội phát triển hơn Việc xác định tần số cơ bản rất quan trọng cho các bài toán xử lý tiếng nói ở mức cao hơn sau này Bài báo cáo đã trình bày phương pháp tìm tần số cơ bản áp dụng phương pháp tự tương quan
có cải tiến Tuy nhiên do còn thiếu kinh nghiệm và kiến thức tìm hiểu được còn chưa sâu nên em còn nhiều thiếu sót và không tránh khỏi những chỗ còn chưa hiểu rõ, em xin thầy góp ý để hoàn thiện kiến thức hơn, em xin cảm ơn