Xác định Xử lý tiếng nói bằng phương pháp xử lý đồng hình

Phần A: Trình bày lý thuyết

1.Các đặc tính cơ bản về 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ý qui đị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 qui 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 qui luật này.

1.1. Đặc tính vật lý của âm thanh

 

  1. Độ cao.

   Độ cao hay còn gọi là độ trầm bổng của âm thanh. Độ trầm bổng của âm thanh phụ thuộc vào sự chuyển động nhanh hay chậm của các phần tử không khí trong một đơn vị thời gian. Nói cách khác, độ cao phụ thuộc vào tần số dao động. Đối với tiếng nói, tần số dao động của đôi dây thanh qui định độ cao giọng nói của con người và mỗi người có một độ cao giọng nói khác nhau.

  1. Cường độ.

   Cường độ chính là độ to nhỏ của âm thanh, cường độ càng lớn thì âm thanh truyền đi càng xa trong môi trường có nhiễu. Cường độ của sóng tiếng nói do biên độ dao động của sóng qui định. Trong tiếng nói, cường độ của nguyên âm thường lớn hơn phụ âm nên tai người nghe nguyên âm dễ hơn.

  1. Độ dài.

   Độ dài của âm phụ thuộc vào sự chấn động lâu hay mau của các phần tử không khí. Cùng một âm nhưng trong các từ khác nhau thì độ dài khác nhau.

  1. Âm sắc

   Âm sắc là sắc thái riêng của một âm, cùng một nội dung, cùng một độ cao nhưng mỗi người nói có âm sắc khác nhau.

1.2. Đặc tính âm học của âm thanh

   Tín hiệu tiếng nói là tín hiệu tương tự biễu diễn thông tin về mặt ngôn ngữ và được mô tả bởi các âm vị khác nhau. Mỗi ngôn ngữ có số lượng các âm vị khác nhau, thông thường cỡ 20-30 và bé hơn 50 cho mọi ngôn ngữ. Các âm vị được chia làm hai loại chính là nguyên âm và phụ âm.

   Tổ hợp các âm vị tạo nên âm tiết. Âm tiết đóng vai trò một từ trọn vẹn mang ngữ nghĩa.

  1. Nguyên âm

   Nguyên âm được tạo ra bằng sự cộng hưởng của dây thanh khi dòng khí được thanh môn đẩy lên. Khoang miệng được tạo lập thành nhiều hình dạng nhất định tạo thành các nguyên âm khác nhau. Số lượng các nguyên âm phụ thuộc vào từng ngôn ngữ nhất định. Mỗi nguyên âm được đặc trưng bởi ba formant đầu.

  1. Phụ âm

   Phụ âm được tạo ra bởi các dòng khí hỗn loạn được phát ra gần những điểm co thắt của đường dẫn âm thanh do cách phát âm tạo thành. Dòng không khí tại chổ đóng của vòm miệng tạo ra phụ âm tắc. Những phụ âm xát được phát ra từ chỗ co thắt lớn nhất và các âm tắc xát tạo ra từ khoảng giữa. Phụ âm có đặc tính hữu thanh và vô thanh tuỳ thuộc vào dây thanh có dao động để tạo thành cộng hưởng không. Đặc tính của phụ âm tuỳ thuộc vào tính chu kỳ của dạng sóng, phổ tần số, thời gian tồn tại và sự truyền dẩn âm.

  1. Tỷ suất thời gian

   Trong khi nói chuyện, khoảng nói chuyện và khoảng nghỉ xen kẻ nhau. Tỷ số thời gian nói và nghỉ gọi là tỷ suất thời gian.

  1. Hàm năng lượng thời gian ngắn

   Hàm năng lượng thời gian ngắn được tính bằng cách chia tín hiệu tiếng nói thành nhiều khung chứa N mẫu và tính diện tích trung bình tổng các mẫu tín hiệu trong mỗi khung. Các khung này được đưa qua một cửa sổ có dạng hàm như sau:

                                                                                                                                                           W(n)        với   0£  n £ N                                                                            W(n)=

                                               0              với    n > N

    Hàm năng lượng ngắn được tính theo công thức sau:

               Em=S{x(n+m)* W(n)}2 ,   n=0,1,2,…,N-1.

Thông thường có ba dạng cửa sổ được dùng là cửa sổ Hamming, cửa sổ Hanning và cửa sổ chử nhật.

                                                   1      Với 0£ n £ N

              Dạng chữ nhật:    W(n)= {

                                                    0     với n >N.

                                                    0.54-0.46cos (n)      Với 0£ n £ N

              Dạng Hammming:  W(n)= {

                                                    0     với n >N.

                                                    0.5-0.5cos (n)      Với 0£ n £ N

              Dạng Hannming:  W(n)= {

                                                    0     với n >N.

Hàm năng lượng thời gian ngắn của âm hữu thanh thường lớn hơn âm vô thanh.

    e.Tần số vượt qua điểm không

    Tần suất vượt qua điểm không là số lần biên độ tín hiệu tiếng nói vượt qua giá trị không trong khoảng thời gian cho trước. Thông thường giá trị này của âm vô thanh lớn hơn âm hữu thanh do đặc tính ngẫu nhiên của âm vô thanh. Đặc điểm này cũng được ứng dụng trong quá trình tiền xử lý trong nhân dạng tiếng nói tự động.

    f.Phát hiện điểm cuối

    Trong xử lý tiếng nói việc xác định khi nào bắt đầu xuất hiện tín hiệu tiếng nói và khi nào kết thúc quá trình nói rất cần thiết và quan trọng. Có nhiều phương pháp, ví dụ như phương pháp sau:

   Lấy một mẫu nhỏ của nền nhiễu trong khoảng thời gian yên lặng trước khi nói. Dùng hàm năng lượng thời gian ngắn để tính năng lượng cho mẫu. ngưỡng của tiếng nói được chọn là giá trị giữa năng lượng yên tĩnh và năng lượng đỉnh. Ban đầu giả thiết điểm cuối xuất hiện tại điểm năng lượng tín hiệu vượt quá ngưỡng. Để tính đúng ước lượng này, người ta giả thiết và so sánh chúng với giá trị đó trong vùng yên tĩnh. Khi những thay đổi phát hiện được trong khi tính toán tần suất trên ở ngoài ngưỡng giả thiết thì điểm cuối được giả thiết lại tại điểm mà sự thay đổi xảy ra.

    g.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:

Tần số cơ bản Người nói
 80   – 200 Hz Đàn ông
150 ­­-  450 Hz Phụ nữ
200 –  600 Hz Trẻ em

Đối với hai âm có cùng cường độ, độ cao, sẽ được phân biệt bởi tính tuần hoàn. Một âm hữu thanh có tính tuần hoàn khi phân tích phổ sẽ xuất hiện một vạch tại vùng tần số rất thấp. Vạch này đặc trưng cho tần số cơ bản của âm. Trong hội thoại tần số cơ bản thay đổi liên tục.

   h.Formant

   Trong phổ tần số của tín hiệu tiếng nói, mỗi đỉnh có biên độ cao nhất xét trong một khoảng nào đó( cực đại khu vực ) xác định một formant. Ngoài tần số, formant còn được xác định cả biên độ và dải thông của chúng. Về mặt vật lý các tần số formant tương ứng với các tần số cộng hưởng của tuyến âm. Trong xử lý tiếng nói đặc biệt là trong tổng hợp tiếng nói, để mô phỏng lại tuyến âm người ta phải xác định được các tham số formant đối với từng loại âm vị, do đó việc đánh giá ước lượng các formant có ý nghĩa rất quan trọng.

   Tần số formant biến đổi trong một dải rộng phụ thuộc vào giới tính người nói và đối với từng âm vị. Đồng thời formant còn phụ thuộc vào các âm vị trước và sau nó. Thông thường phổ tần số tiếng nói chứa khoảng 6 formant  nhưng ảnh hưởng lớn nhất đến đặc tính của âm vị là 3 formant đầu tiên.

    Tần số formant đặc trưng cho nguyên âm biến đổi tuỳ thuộc vào người nói trong điều kiện phát âm nhất định. Mặc dù phạm vi tần số formant của các nguyên âm có thể trùng lên nhau nhưng vị trí giữa các formant đó không đổi vì sự xê dịch của các formant là song song.

2.Xử lý tín hiệu tiếng nói.

    Kỷ thuật phân tích tiếng nói có thể được phân lớp vào miền tần số và miền thời gian. Mục đích chính trong phân tích tiếng nói là đánh giá đáp ứng tần số của bộ máy phát âm( tuyến âm ). Mục đích chính của phân tích tiếng nói là đánh giá đáp ứng tần số của tuyến âm. Các kỷ thuật xử lý tín hiệu tiếng nói thông thường là dùng dãy các bộ lọc, phân tích Fourier, xử lý homomorphic( đồng hình ) hoặc cepstral( phổ).

    Khái niệm ‘ short-time analysis ’( phân tích thời gian ngắn ) là cơ sở cho hầu hết các kỹ thuật phân tích tiếng nói. Giả sử rằng trong khoảng thời gian dài tín hiệu tiếng nói là không dừng nhưng với khoảng thời gian đủ nhỏ( 10 – 30 ms ), có thể xem nó là dừng. Đây là lý do mà sự thay đổi phổ tín hiệu tiếng nói có liên hệ trực tiếp với sự chuyển động của hệ phát âm( môi, cổ họng,… ) và các ràng buộc ngữ cảnh, sinh lý khác. Vì vậy các hệ thống phân tích tiếng nói đều thực hiện trên cơ sở thời gian biến đổi, với các khung thời gian được chọn là 10 –30ms.

2.1 Sự biểu hiện và phân tích  tín hiệu tiếng nói

    Tiếng nói liên tục là tập hợp các âm thanh phức tạp mà chúng ta khó sản sinh nhân tạo. Tín hiệu tiếng nói thường được xem xét là các âm hữu thanh huặc các âm vô thanh. Trong tín hiệu tiếng nói bao gồm F0 và các thành phần được sản sinh bởi các dây thanh. Tuyến âm thay đổi các tín hiệu nguồn tạo nên Formant. Mỗi tần số Formant có một biên độ và dải thông và đôi khi khó có thể định nghĩa các tham số này một cách chính xác. Tần số cơ bản và tần số formant là những khái nệm quan trọng nhất trong trong tổng hợp và xử lý tiếng nói nói chung.

    Các âm vô thanh không có tần số cơ bản và có thể được xem là nhiễu trắng. Thì thầm là trường hợp đặc biệt của tiếng nói, khi thì thầm thì ở đó tiếng nói không có tần số cơ bản.

Tín hiệu tiếng nói của ba nguyên âm : (/a/, /i/, /u/). Với miền thời gian và miền tần số như trong hình 2.2.1

Hình 2.2.1 – Miền thời gian và tần số của ba nguyên âm /a/, /i/, /u/

Tần số trong cả ba trường hợp là 100 Hz, và tần số formant F1, F2, F3, của nguyên âm /a/ lần lượt là 600 Hz, 1000 Hz và 2500 Hz, Với nguyên âm /i/ lần lượt là 200 Hz, 2300 Hz và 3000 Hz. Và với /u/ là 300 Hz, 600 Hz và 2300 Hz.

    Tần số của âm thanh bình thường nằm trong khoảng 300Hz dến 3400 Hz. Vì vậy, để biểu diễu tín hiệu tiếng nói trong kênh điện thoại thì 3 formant đầu là đủ. Để chất lượng cao hơn tần số lấy mẫu phải nằm từ 10 kHz tới 20 kHz.

    Phương pháp thường sử dụng để mô tả tín hiệu tiếng nói là spectrogram ( ảnh phổ ) mà qua đó biểu diễn thời gian – tần số – biên độ của một tín hiệu. Khi đó miền có tần số cao hơn thì màu xám hơn. Phổ của nguyên âm và phụ âm cũng dễ dàng nhận thấy. Do vậy ảnh phổ là phương pháp biểu diễn hữu ích nhất để nghiên cứu tiếng nói.

Hinh 2.2.2 – Ảnh phổ biểu diễn miền thời gian của từ kaksi

Để xác định tần số cơ bản hay tần số pitch của tiếng nói, ta ví dụ dùng phương pháp có tên gọi phân tích cepstral. Sơ đồ khối phương pháp này như sau:

Phân tích Cepstral cung cấp phương pháp để tách riêng tuyến âm và nguồn kích thích.

Tín hiệu tiếng nói sau khi qua bộ lọc hiệu chỉnh( thực chất là bộ lọc thông cao):

             H(z)=1-a.z-1, a < 1  và thường được chọn cỡ 0.95 – 0.98.

Do đặc tính phổ của tín hiệu nguồn, âm hữu thanh 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 hơn cần bộ lọc hiệu chỉnh bù lại  12dB/octave – 6dB/octave, do đó người ta chon a=0.95 – 0.98.

Cửa sổ thường được chọn là cửa sổ Hamming nhằm giảm sai số phân tích phổ khi độ dài tín hiệu hữu hạn.

Qúa trình lấy log10|.| cho phổ đều hơn( không quá lớn hay quá bé).

2.2.Xử lý đồng hình_ Homomophism.

    Chúng ta đã biết rằng tín hiệu tiếng nói gồm ba thành phần, một dãy các xung mô tả các pitch, xung kích thích và đáp ứng xung của ống thanh. Trong miền thời gian, gọi s(n) là tín hiệu nguồn, e(n) là tín hiệu kích thích và h(n) biểu diễn đáp ứng xung của ống thanh.

                s(n)  =  e(n) * h(n).                        ( * : Nhân chập )

    Đặt S(w) là phổ của tín hiệu tiếng nói hữu thanh, E(w) là phổ của xung pitch( tần số cơ bản ) và H(w) là phổ của tuyến âm. Khi đó quan hệ giữa ba biên độ này có thể được biễu diễn như sau:

                    |X(w)| = |H(w)|x |P(w)|                                                     (1)

    Logarithm hoá hai vế ta được:

                 log{|X(w)|} = log{|H(w)|} +  log{|P(w)|}                                (2)

    Như vậy logarithm của |X(w)| là tổng logarithm của |H(w)| và |P(w)|. Hơn nữa  |H(w)| được quyết định bởi tuyến âm theo hướng tần số biến đổi chậm, trong khi đó phân bố |P(w)| có chu kỳ biến đổi nhanh hơn theo tần số. Điều này có nghĩa là hai thành phần này có thể phân tách nhau được nhờ toán tử lọc. Phép lọc này thông thường được thực hiện nhờ biến đổi ngược Fourier của log{|X(w)|}, cho ta cepstrum( phổ) của tín hiệu. Trong Cepstrum, chu kỳ pitch phân bố có tính chu kỳ, trong khi đó phân bố của tuyến âm xảy ra gần trục hoành hơn bởi vì nó biến đổi chậm hơn.

   Sơ đồ hệ thống đồng hình cho phân tích tiếng nói.

Inverse Discrete Fourier Transform

speech

 

                                                                                       Cepstrum window

       data Windows

 

                      Hình 1.Hệ thống đồng hình cho phân tích tiếng nói

    Hình 2 chỉ ra cửa sổ time-waveform, log-magnitude spectrum, cepstrum và cepstrally-smoothed spectrum cho một nguyên âm( ví dụ cho âm ‘a’), khoảng xét là 23.2ms(256 mẫu cho 11025Hz). Tính toán FFT cho các đoạn tín hiệu tiếng nói( 25.6 ms) và lấy logarithm cho ta log-magnitude specstrum như hình2_b , ở đây có thành phần biến đổi chậm do sự truyền dẫn tuyến âm và thành phần biến đổi nhanh có chu kỳ do pitch.Thành phần biến đổi chậm khi biến đổi Fourier ngược ta được phần biến đổi chậm theo thời gian gần trục hoành, hình2_c và những thành phần biến đổi nhanh là những đỉnh nhô cao có tính chu kỳ. Như hình2_c ta  nhận thấy chu kì pitch cỡ 4ms( < 50 mẫu). Để tính được đường bao phổ tuyến âm ta nhân nó với hàm cửa sổ, hàm này có dạng chữ nhật:

                        1                  n  <=  N1

            W[nT]=

          0                  n > N1

    với N1 = 4ms x 11Kz = 45 mẫu. Đường bao phổ của tuyến âm như hình2_d.

              Hình 2. Lọc đồng hình cho âm hữu thanh

    Dùng bộ lọc đồng hình áp dụng cho âm vô thanh cho ta đồ thị như hình3. Kích thích không có dạng tuần hoàn cho ta thành phần biến đổi nhanh ngẫu nhiên ở hình3_b.Vì thế đối với Cepstrum, hình3_c các phần biến đổi nhanh không còn có tính chu kỳ nữa, có nghĩa không thấy các đỉnh có biên độ lớn hơn hẳn nhô lên nữa.

    Rõ ràng,việc ‘cắt phổ’( vocal tract envelope) là phương pháp hữu ích để loại bỏ các ‘gợn pitch’ từ sơ đồ phổ có độ phân giải cao, để loại ra chỉ thông tin về hàm truyền dẫn tuyến âm. Do đó khi tiến hành phân tích ta phải thoả hiệp đối với việc tăng độ phân giải phổ(gây khó khăn khi quan sát) bằng cách, mổi cửa sổ thời gian tín hiệu tiếng nói được dùng phải chứa ít nhất hai chu kỳ pitch. Thông thường mỗi cửa sổ ta chọn cỡ 20-30ms.

               Hình 3.  Lọc đồng hình áp dụng cho âm vô thanh

2.3. Xác định tần số cơ bản F0 bằng phương pháp xử lý đồng hình.

Theo các kết quả khảo sát và nghiên cứu từ trước, tần số cơ bản:

               Giọng nam: 80  – 250 Hz

               Giọng nữ:   150 – 500 Hz

Sơ đồ khối xác định F0 như sau:

Một số phương pháp xác định F0:

  • Dựa vào hàm tự tương quan.
  • Dựa vào hàm vi sai biên độ trung bình.
  • Dùng bộ lọc đảo và hàm tự tương quan.
  • Xử lý đồng hình.

Đối với phương pháp xử lý đồng hình, ta thấy từ biểu thức(2.2):

                 x^(n)=s^(n)+u^(n)             (2.2)

ta tách thành phần s^(n) bằng cách nhân x^(n) với cửa sổ (chữ nhật chẳng hạn), biến đổi Fourier ta sẽ được phổ dexiben của nguồn.

Trong phổ dexiben của nguồn, đỉnh cao nhất và gần gốc nhất là tần số cơ bản F0.

Phần B. Chương trình.

1. Phân tích và thiết kế chức năng chương trình

    Chương trình được thiết kế gồm ba chức năng chính:

   ¨ Đọc file wave.

   ¨ Hiển thị file wave.

   ¨ Xử lý đồng hình.

     Sơ đồ khối mức đỉnh:

                                 Hình 4. Sơ đồ khối chức năng mức đỉnh.

    Trong chức năng xử lý đồng hình, ta phân rã thành hai chức năng con:

         + Xử lý

         + Hiển thị.

    Sơ đồ khối chức năng này như sau:

                                  Hình 5.  Sơ đồ khối xử lý đồng hình.

2. Thiết kế modun chương trình

    Với phân tích như trên, chương trình được thiết kế vào hai modun chính là:

         ¨ Modun Wave:

                                ° Đọc,thu/phát file wave.

                                ° Hiển thị file wave.

                                ° Biến đổi FFT.

                                ° Xử lý đồng hình  .

         ¨ Modun hiển thị:  Dùng để hiển thị tín hiệu.

3. Cài đặt

   Chương trình được cài đặt trên ngôn ngữ Visual C++ 6.0. Lớp chính là lớp Wave.

   Lớp CWave: Dùng các hàm thư viện API trên window để xử lý file wave. Các hàm sử dụng trong chương trình được liệt kê theo chỉ mục như sau:

Library: winmm.lib

    –  waveInGetDevCaps: Xem khả năng đưa âm thanh của thiết bị vào

    –  waveInGetNumDevs: Trả về số thiết bị vào âm thanh trên hệ thống.

    –  waveInOpen: Mở thiết bị ghi âm thanh.

    –  waveInGetErrorText: Đưa ra miêu tả lỗi đối với số lỗi tương ứng dưới dạng text

    –  waveInPrepareHeader: Chuẩn bị bộ đệm cho đầu vào âm thanh( Header).

    –  waveInReset function: Khởi tạo lại quá trình thu âm.

    –  waveInStart: Bắt đầu nhận âm thanh từ thiết bị vào( ghi âm).

    –  waveInStop: Dừng quá trình thu âm( kết thúc).

    –  waveInUnprepareHeader:Xoá các thao tác trong hàm waveInPrepareHeader function.Hàm này được gọi trước khi giải phóng bộ đệm ở quá trình ghi âm.

    –  waveOutClose: Đóng thiết bị phát âm thanh.

    –  waveOutOpen: Mở thiết bị phát âm thanh để phát( playback).

    –  waveOutPrepareHeader: Chuẩn bị dữ liệu audio để phát ( playback).

    –  waveOutReset: Dừng phát ra thiết bị và khởi tạo lại từ đầu. Bộ đệm dữ liệu được đánh dấu.

    – waveOutUnprepareHeader: Hàmnày được gọi sau khi trình điều khiển thiết bị kết thúc với khối dữ liệu được chuẩn bị ở waveOutPrepareHeader. Hàm này được gọi trước khi giải phóng bộ đệm.

    –  waveOutWrite: Hàm này đưa( ghi) dữ liệu ra thiết bị phát audio.

    –  waveOutGetDevCaps: Kiểm tra khả năng phát âm thanh của thiết bị phát.

    –  waveOutGetNumDevs: Trả về số thiết bị phát âm thanh trong hệ thống.

    –  waveOutGetErrorText: Đưa ra miêu tả lỗi đối với số lỗi tương ứng dưới dạng text.

    Dựa trên thư viện này, các hàm chính được viết trong chương trình được miêu tả dưới đây:

    ¨ /*

         Open wave file with file name is @strFileName and window receives wave

         out message is *pParent.

         Function return 0 if open succesfully. otherwise return -1

    */

      int CWave::OpenFile(LPCTSTR strFileName)

     ¨/*

         Play wave file

         Function return -1 if has an error appear and return 0 if no error

        */

         int CWave::Play(CWnd *pParent)

     ¨ /*

         Record wave file

         – Return 0 if no error

         – Return -1 if has error

         – Return 1 if user select cancel

       */

        int CWave::Record(CWnd *pParent)

     ¨/*

          Draw wave file signal to device context

        */

         void CWave::Draw(CDC* pDC,CRect &Vinculum)

     ¨/*

         Calculate and draw ceptrum transform and then get logarithm coef 10

        */

         void CWave::DrawLogCeptrum(CDC *pDC, CRect &Vinculum)

      ¨/*

      Calculate and draw time ceptrum transform

       */

       void CWave::DrawTimeCeptrum(CDC *pDC, CRect &Vinculum)

      ¨/*

         Calculate and draw cepstral envelope

       */

       void CWave::DrawEnvelopeCeptrum(CDC *pDC, CRect &Vinculum)

     ¨/*

         Fast Fourier Transform

         Input :x,y,n,inv: inv=0 -> FFT, inv !=0 ->IFFT

         Output :x,y

        */

         void FFT(double *x, double *y, int n, int inv)

        …

        và các hàm tiện ích khác

Tài liệu tham khảo

            1.Trịnh Văn Loan, Bài giảng xử lý tiếng nói

            2.F.J.Owens,  Signal Processing of Speech.

           3.http://www.codeguru.com

Leave a Reply