Thứ Ba, 27 tháng 8, 2013

Chương trình xử lý tiếng nói bằng C# và Xử lý đồng hình để xác định formant

1. Kiến thức cơ bản.
- Biến đổi fourier:
          Là phép biến đổi từ miền thời gian sang miền tần số: @@ Thực ra nói thế này thì hơi chung chung. Công thức của nó là:

 

        Ban đầu thì tín hiệu là một dãy các số (được lấy trong "data" ở file *.wav) dưới dạng một dãy x(n).

ở đây thì n là thời gian với n là số chu kì lấy mẫu (chu kì lấy mẫu được lấy trong header của file *.wav).

        Vậy biến đổi từ x(n) --> X(k) là phép biến đổi từ mảng N mẫu sang mảng N mẫu, ta được một mảng với biên độ là trục tung là biên độ sau khi biến đổi fourier, trục hoành là k (là số thứ tự của mẫu).

       Để chuyển k là số thứ tự của mẫu sang miền tần số thì ta dùng công thức f = k * sampleRate / N (với N là số mẫu mình xét).

       Vậy từ phép biến đổi fourier ta có thể chuyển tín hiệu từ miền thời gian (trục tung là biên độ, trục hoành là thời gian) -----> miền tần số (trục tung là biên độ, trục hoành là tần số).

- Dưới đây là sơ đồ khối của xử lý đồng hình:

 

    + Bộ lọc hiệu chỉnh:


       Bộ lọc hiệu chỉnh dùng để xét ảnh hưởng của tuyến âm trong miền tần số. Do đặc tính phổ của tín hiệu nguồn, âm hữu thành có năng lượng tập trung ở miền tần thấp có độ dốc phổ là 12DB/Octave. Môi là bộ lọc thông cao có độ dốc của phổ cỡ 6db/octave. Để phổ bằng phẳng so với nguồn âm trước tuyến âm thì cần bộ lọc hiệu chỉnh bù lại 12db/octave - 6db/octave, do đó người ta chọn a = 0,95 --> 0,98;

y(n) = x(n) – a * x(n-1)

    + Cửa số (hamming):

        Cửa sổ Hamming nhằm  giảm sai số phân tích Forier do độ dài hữu hạn của tín hiệu gây ra (Phân tích Forier trên lí thuyết phải xét trên 1 đoạn dài vô cùng).

 

W(n)    =    0.54 - 0.46 * cos (n)    với 0£ n £ N

             =      0                               với n >N.

 

   + FFT: là phép biến đổi fourier nhanh bằng phương pháp chia để trị. Trong bài làm có một file chứa code để biến đổi fourier này là file FFT.cs. gồm có các hàm FFT và IFFT.

   + Log(|.|) là logarit hóa kết quả của phép biến đổi fourier vừa xong.

   + Wc(n) là cửa sổ hình chữ nhật với Nrectan = 19. Cái thông số này mình có thể chỉnh sửa với mỗi nguồn âm khác nhau, vì nó còn phụ thuộc vào nguồn âm nữa.

 

2. Chương trình.

 

 



Thư viện vẽ đồ thị là chart control trong C# .NET 3.5: 


File chương trình con FFT (code C, mình đã chuyển sang c# ở trong chương trình):      

                      http://www.mediafire.com/download.php?nn21vh2ugk9bdm6 

0 nhận xét:

Đăng nhận xét