Các nguyên tắc cơ bản của xử lý âm thanh số

MỤC LỤC

Âm sắc của âm

Âm sắc là một đặc tính sinh lý của âm và nó được cấu thành trên cơ sở các đặc tính vật lý của âm là tần số và biên độ. Nên, mặc dù có cùng tần số f1 của âm cơ bản nhưng đường biểu diễn không còn là một đường hình sin đơn thuần mà là một đường phức tạp có chu kỳ.

Âm thanh số

Nguyên lý

Lỗi này có thể được kiểm soát bằng cách thay đổi khuôn dạng chi tiết của dạng biểu diễn âm thanh, nhưng không thể loại bỏ được hoàn toàn. Và các hệ số khác như kích thước dữ liệu hay tần số xử lý yêu cầu ta phải chấp nhận một sai số lớn hơn từ một số nguồn để có thể giảm hơn nữa các sai số khác.

Tần số và cường độ

Chính vì vậy, tuỳ theo ứng dụng ta sẽ phải chấp nhận một số lỗi nhất định.

Định dạng dữ liệu

Trong thực tế, các bộ chuyển đổi DAC và ADC thường xuyên sử dụng dạng PAM (Pulse Amplitude Modulation) như một khuôn dạng trung gian, trong đó âm thanh được coi như một chuỗi các xung, và biên độ của mỗi xung (độ cao) biểu diễn độ mạnh của âm thanh tại điểm đó. Ngoài ra, ta còn dạng biểu diễn khác là PWM (Pulse Width Modulation), cũng giống như PAM, đây là dạng biểu diễn mỗi mẫu như một xung, nhưng nó sử dụng độ rộng hay khoảng kéo dài của xung (thay cho biên độ) để biểu diễn độ mạnh của âm thanh.

Hình 2.4: PAM
Hình 2.4: PAM

Khuôn dạng lưu trữ

Tuy nhiên, không khó khăn để có thể khắc phục điều này, ví dụ như ta có thể xây dựng các mã theo một dạng riêng để không có mã nào chứa 3 số 1 liên tiếp (111) và sau đó chèn 111 vào tín hiệu tại điểm bắt đầu của mỗi mã. Một khi đã nén, chương trình xử lý sẽ phải giải nén mỗi khi sử dụng, và với bất cứ lưu đồ (giải thuật) nén nào cũng đều gây nguy hiểm tới chất lượng âm thanh, không kể đến thời gian dùng để giải nén.

Hàm cửa sổ và lọc tín hiệu

Hàm cửa sổ

    Trong quá trình tính toán phổ, tín hiệu thời gian thường cũng chứa cả phần nửa dữ liệu thứ hai được chứa trong phần tín hiệu thời gian liền trước đó. Với mục đích làm giảm các búp sóng phụ của cửa sổ chữ nhật WR(f), ta chọn một dạng cửa sổ khác dạng tam giác cân gọi là cửa sổ tam giác (Triangle hay Bartlett). Khi trong quá trình thực hiện sự phân tích động hệ thống, hàm chuyền đạt hệ thống (system transfer function) được gọi phải được truy nhập.

    Lọc tín hiệu

    Tuy nhiên, cửa sổ Kaiser rất hiếm khi được sử dụng do nó yêu cầu sự tính toán của hàm Bessel của dạng đầu tiên. Hàm này không được biết rộng rãi như các hàm được yêu cầu trong sự tính toán của các cửa sổ Hanning, Hamming, hay Black man. Chúng ta cũng thấy rằng dạng cửa sổ này có sự rò rỉ ít hơn so với cửa sổ chữ nhật và nhiều hơn so với cửa sổ Hanning.

    FFt và cepstrum

    • FFT (Fast Fourier Transform) Nguyên lý

      Trong bước lặp đầu tiên, đọc n mẫu từ âm vào, thực hiện FFT, xử lý, và IFFT, sau giữ lại dữ liệu theo thời gian nhận được trong bộ nhớ đệm thứ 2. Thực hiện phép tăng tuyến tính trên nửa đầu của bộ nhớ đệm ra mới (đi một cách tuyến tính từ 0 tới 1), sau đó cộng 2 nửa lại với nhau để nhận được một đầu ra với sự chuyển tiếp mịn. Đặc điểm của homomorphic là sự biến đổi đại số tuyến tính mà nhờ đó có thể tách hai tín hiệu không cộng nhờ thuật toán phi tuyến trên cơ sở lọc tuyến tính.

      Phương pháp thiết kế

      Thao tác với tệp âm thanh

      Truy nhập tệp Wave

      Cần chú ý rằng, nếu có 2 kênh thì giá trị đầu tiên trong mỗi cặp là của kênh trái, và giá trị thứ hai là của kênh phải. Tham số này thực sự quan trọng khi ta cần xử lý âm dựa trên các giá trị thời gian thực biểu diễn theo giây, hay cần thể hiện thông tin về tần số theo Hz (như khi sử dụng FFT). Do đó, cần lưu giá trị tần số lấy mẫu này vào một biến (Fs) để có thể áp dụng cho quá trình phân tích tín hiệu sau đó.

      Truy nhập tệp Voc

      Nếu có nhiều hơn một kênh, thì mọi mẫu cho chỉ số đầu tiên được đưa trước, quá trình lặp lại qua các kênh. Do đó, ta có thể coi kênh trái như Channel 0, và kênh phải như Channel 1. Và một định lượng quan trọng khác là tần số lấy mẫu (số mẫu/giây hay Hz - nSp: NumSamplesPerSecond).

      Cấu hình dữ liệu

      Dữ liệu được đọc từ tệp và gán vào một mảng kiểu nguyên (integer) (do các tệp có lưu dữ liệu theo byte), và sau đó biểu diễn tín hiệu theo dạng thời gian.

      Soạn thảo 1. Nguyên lý

        Nên, nếu F là tham số tệp gốc, và Fsave là tham số của tệp âm mới được lưu sau một số thao tác soạn thảo, và header có dạng WaveHeaderFile (trong chương trình mới chỉ áp dụng soạn thảo trên tệp Wave, tuy nhiên muốn soạn thảo trên khuôn dạng khác ta có thể chuyển đổi khuôn dạng về dạng Wave, hay nói chung cơ sở của thuật toán trên các khuôn dạng khác cũng tương tự như vậy). Theo cách nhìn trực quan cũng như xét theo khía cạnh về sự thay đổi của sóng âm gốc, thì thay đổi do các phép cắt, xoá tạo ra là như nhau: phần dữ liệu lựa chọn bị xoá mất, và khi lưu tạo tệp mới thì các mẫu dữ liệu phía sau sẽ dồn lên chiếm chỗ các mẫu dữ liệu đã mất. Sau đó, khi muốn ghi tệp âm đó sang một tệp mới ta sẽ chép toàn bộ các mẫu trong tệp gốc sang tệp mới, tức là các mẫu trong khoảng từ mẫu thứ nhất, tới vị trí mẫu liền trước vị trí mẫu đầu tiên được đọc ra; và các mẫu từ vị trí liền sau mẫu cuối cùng được đọc ra tới cuối tệp.

        Hình 4.6: Xoá phần dữ liệu đã chọn
        Hình 4.6: Xoá phần dữ liệu đã chọn

        Phát thanh 1. Thu thanh

          Chương trình có thể ứng dụng cho cả dạng âm thanh (Wave file) và dạng hình ảnh video (Midi file). Delphi hỗ trợ rất nhiều trong việc tích hợp hoạt ảnh và âm thanh vào các ứng dụng. Thông thường có 2 cách:. a) Sử dụng các chức năng riêng biệt trong Win32 API. Như vậy, ta cần tải âm thanh vào bộ nhớ, sau đó dùng một con trỏ để chỉ tới dữ liệu âm thanh, và dùng cờ SND_MEMOIRY để báo cho PlaySound API rằng ta đang sử dụng định vị bộ nhớ thay vì tên tệp. PlaySound(PointDat, 0, SND_ASYNC or SND_MEMORY);. Trong đó, PointDat là con trỏ chỉ tới mảng dữ liệu âm thanh ArrSample có kích thước là MaxSize. b) Sử dụng các thành phần để thực hiện các chức năng về multimedia.

          Phân tích tín hiệu

          • Một vài trợ giúp khác

            Với Hamming, tớnh tuần hoàn của tớn hiệu là rất rừ ràng, phổ tương ứng với tần số cơ bản và tính hài hoà hiện ra giống như các đỉnh hẹp tại các tần số được khoảng cách hoá một cách đều nhau trong biến đổi Fourier thời gian ngắn. Hiệu ứng này xuất hiện là do "side lobes" dẫn tới việc các hàm điều hòa lân cận tương tác với nhau trong khoảng trống giữa các hàm điều hoà - đôi khi tăng cường, nhưng đôi khi huỷ bỏ - theo cách đó tạo ra sự thay đổi xuất hiện ngẫu nhiên giữa các hàm điều hoà (harmonics). Một nét đặc trưng chung cho phần lớn các tín hiệu rung mang ý nghĩa liên quan tới cuộn trôi qua là tồn tại một vài loại của nhóm các hàm điều hoà mà chúng không đồng bộ một cách trực tiếp với tốc độ thay đổi của dạng phổ.

            Hình 4.12: Phổ của tín hiệu gốc
            Hình 4.12: Phổ của tín hiệu gốc

            Hướng dẫn sử dụng

              Bao gồm các chức năng mở tệp âm thanh, ghi tạo tệp âm thanh mới, ghi ảnh tín hiệu. Gồm các chức năng soạn thảo: sao chép, cắt, dán, thu phóng, chọn mầu vẽ. Gồm các chức năng xử lý tín hiệu: các phép lọc, giới hạn qua hàm cửa sổ, tính FFT hay Cepstrum.

              Đánh giá chương trình

              Đánh giá chương trình

              Do thời gian và khả năng có hạn, hơn nữa với khuôn khổ của một đồ án tốt nghiệp nên chương trình em thiết kế không thể xử lý hết được những vấn đề cần thiết trong lĩnh vực âm thanh rộng lớn. Tuy nhiên, chương trình đã giải quyết được những vấn đề cơ bản: tìm hiểu về các khuôn dạng lưu trữ dữ liệu âm thanh, các cách định dạng dữ liệu để từ đó có thể thao tác với dữ liệu giúp cho việc hiểu rừ cấu trỳc cỏc tệp õm thanh. Ngoài ra, quy trình thực hiện các chức năng của chương trình có thể chưa được hợp lý, các chức năng phụ thuộc nhiều vào nhau, nhưng mặc dự vậy chương trỡnh cú cấu trỳc cỏc thủ tục rừ ràng, dễ hiểu với ngôn ngữ lập trình Delphi.

              Hướng phát triển

              Hơn nữa, chương trình mang tính chất hoàn chỉnh: bắt đầu quá trình thu thanh tạo tệp âm thanh từ micro, qua quá trình xử lý và phân tích dữ liệu âm, sau đó có thể phát âm thanh ra loa. Nhưng đây là hai khuôn dạng lưu trữ âm thanh thông dụng nhất nên cũng cần hiểu rừ trước hết, và từ hai khuụn dạng cơ bản này giỳp ta dễ dàng thao tỏc với các khuôn dạng khác. Và, một nhược điểm khác là tốc độ xử lý của chương trình còn chậm, nhất là khi thực hiện các chức năng soạn thảo với một số lớn các mẫu tín hiệu của một tệp âm thanh có kích thước lớn.