Xử lý âm thanh khoa học, Phần I - Cách đọc và ghi tệp âm thanh bằng Octave 4.0.0 trên Ubuntu

theanh

Administrator
Nhân viên
Octave, phần mềm tương đương với Matlab trong Linux, có một số chức năng và lệnh cho phép thu thập, ghi âm, phát lại và xử lý kỹ thuật số các tín hiệu âm thanh cho các ứng dụng giải trí, nghiên cứu, y tế hoặc bất kỳ lĩnh vực khoa học nào khác. Trong hướng dẫn này, chúng ta sẽ sử dụng Octave V4.0.0 trong Ubuntu và sẽ bắt đầu đọc từ các tệp âm thanh thông qua việc ghi và phát tín hiệu để mô phỏng âm thanh được sử dụng trong nhiều hoạt động khác nhau.

Lưu ý rằng trọng tâm chính của hướng dẫn này không phải là cài đặt hoặc học cách sử dụng phần mềm xử lý âm thanh đã được thiết lập, mà là hiểu cách thức hoạt động của nó theo quan điểm thiết kế và kỹ thuật âm thanh.


Điều kiện tiên quyết​

Bước đầu tiên là cài đặt octave. Chạy các lệnh sau trong terminal để thêm Octave PPA vào Ubuntu và cài đặt phần mềm.
Mã:
sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave

Bước 1: Mở Octave.​

Trong bước này, chúng ta mở phần mềm bằng cách nhấp vào biểu tượng của phần mềm, chúng ta có thể thay đổi thư mục làm việc bằng cách nhấp vào menu thả xuống File Browser.




Bước 2: Audio Info​


Lệnh "audioinfo" hiển thị cho chúng ta thông tin có liên quan về tệp âm thanh mà chúng ta sẽ xử lý.
Mã:
>> info = audioinfo ('testing.ogg')


Bước 3: Đọc tệp âm thanh​


Trong hướng dẫn này, tôi sẽ đọc và sử dụng các tệp ogg mà có thể đọc các đặc điểm như lấy mẫu, loại âm thanh (âm thanh nổi hoặc đơn âm), số kênh, v.v. Tôi nên đề cập rằng đối với mục đích của hướng dẫn này, tất cả các lệnh được sử dụng sẽ được thực thi trong cửa sổ đầu cuối của Octave. Đầu tiên, chúng ta phải lưu tệp ogg trong một biến. Lưu ý: điều quan trọng là tệp phải nằm trong đường dẫn làm việc của Octave
Mã:
>> file='yourfile.ogg'
Mã:
>> [M, fs] = audioread(file)

Trong đó M là ma trận gồm một hoặc hai cột, tùy thuộc vào số kênh và fs là tần số lấy mẫu.







Có một số tùy chọn mà chúng ta có thể sử dụng để đọc tệp âm thanh, chẳng hạn như:
Mã:
>> [y, fs] = audioread (filename, samples)
Mã:
>> [y, fs] = audioread (filename, datatype)
Mã:
>> [y, fs] = audioread (tên tệp, mẫu, kiểu dữ liệu)

Trong đó mẫuchỉ định khung bắt đầu và kết thúc và datatype chỉ định kiểu dữ liệu để trả về. Chúng ta có thể gán giá trị cho bất kỳ biến nào:


Mã:
>> samples = [1, fs)
Mã:
>> [y, fs] = audioread (tên tệp, mẫu)

Và về kiểu dữ liệu:


Mã:
>> [y,Fs] = audioread(filename,'native')

Nếu giá trị là 'native' thì loại dữ liệu phụ thuộc vào cách dữ liệu được lưu trữ trong tệp âm thanh.


Bước 4: Viết tệp âm thanh​

Tạo tệp ogg:​

Với mục đích này, chúng ta sẽ tạo tệp ogg với các giá trị từ cosin. Tần số lấy mẫu mà tôi sẽ sử dụng là 44100 mẫu mỗi giây và tệp sẽ kéo dài trong 10 giây. Tần số của tín hiệu cosin là 440 Hz.
Mã:
>> filename='cosine.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> w=2*pi*440*t;
>> signal=cos(w);
>> audiowrite(filename, signal, fs);
Điều này tạo ra một tệp có tên 'cosine.ogg' trong không gian làm việc của chúng ta chứa tín hiệu cosin.



Nếu chúng ta phát tệp 'cosine.ogg' thì tệp này sẽ tái tạo âm thanh 440Hz tương đương với âm thanh nhạc 'A'. Nếu chúng ta muốn xem các giá trị được lưu trong tệp, chúng ta phải 'đọc' tệp bằng hàm 'audioread'. Trong hướng dẫn tiếp theo, chúng ta sẽ xem cách viết tệp âm thanh có hai kênh.


Bước 5: Phát tệp âm thanh​


Theo mặc định, Octave có trình phát âm thanh mà chúng ta có thể sử dụng cho mục đích thử nghiệm. Sử dụng các hàm sau làm ví dụ:
Mã:
>> [y,fs]=audioread('yourfile.ogg');
>> player=audioplayer(y, fs, 8)
 
 cấu trúc vô hướng chứa các trường:
 
 BitsPerSample = 8
 CurrentSample = 0
 DeviceID = -1
 NumberOfChannels = 1
 Running = off
 SampleRate = 44100
 TotalSamples = 236473
 Tag =
 Type = audioplayer
 UserData = [](0x0)
>> play(player);

Trong các phần tiếp theo của hướng dẫn, chúng ta sẽ xem các tính năng xử lý âm thanh nâng cao và các trường hợp sử dụng có thể có cho mục đích khoa học và thương mại.
 
Back
Bên trên