如何使用Octave 在Ubuntu上科學處理音頻

如何使用Octave 在Ubuntu上科學處理音頻如何使用Octave 在Ubuntu上科學處理音頻

本教程中關注的不是安裝和學習使用安裝好的音頻處理軟件,而是從設計和音頻工程的角度理解它是如何工做的。linux

環境準備函數

首先是安裝 octave,在 Ubuntu 終端運行下面的命令添加 Octave PPA,而後安裝 Octave 。學習

sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave

步驟1:打開 Octave測試

在這一步中咱們單擊軟件圖標打開 Octave,能夠經過單擊下拉式按鈕選擇工做路徑。scala

如何使用Octave 在Ubuntu上科學處理音頻如何使用Octave 在Ubuntu上科學處理音頻

步驟2:音頻信息設計

使用 audioinfo 命令查看要處理的音頻文件的相關信息。教程

>> info = audioinfo ('testing.ogg')

如何使用Octave 在Ubuntu上科學處理音頻如何使用Octave 在Ubuntu上科學處理音頻

步驟3:讀取音頻文件get

在本教程中我會使用 ogg 文件來讀取這種文件的屬性,好比採樣、音頻類型(stereo 和 mono)、信道數量等。必須聲明的一點是教程中使用的全部的命令都是在 Octave 終端窗口中執行的。首先,咱們必需要把這個 ogg 文件賦給一個變量。注意:文件必須在 Octave 的工做路徑中。it

>> file='yourfile.ogg'

>> [M, fs] = audioread(file)

這裏的 M 是一個一列或兩列的矩陣,取決於信道的數量,fs 是採樣率。io

如何使用Octave 在Ubuntu上科學處理音頻如何使用Octave 在Ubuntu上科學處理音頻

 

如何使用Octave 在Ubuntu上科學處理音頻如何使用Octave 在Ubuntu上科學處理音頻

 

如何使用Octave 在Ubuntu上科學處理音頻如何使用Octave 在Ubuntu上科學處理音頻

下面的操做均可以讀取音頻文件:

>> [y, fs] = audioread (filename, samples)

>> [y, fs] = audioread (filename, datatype)

>> [y, fs] = audioread (filename, samples, datatype)

samples 指定開始幀和結束幀,datatype 指定返回的數據類型。能夠爲全部變量設置值:

>> samples = [1, fs)

>> [y, fs] = audioread (filename, samples)

數據類型:

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

若是值是「native」,那麼它的數據類型就依數據在音頻文件中的存儲狀況而定。

步驟4:音頻文件的寫操做

新建一個 ogg 文件:

咱們會從一個餘弦值建立一個 ogg 文件。採樣率是每秒 44100 次,這個文件最少進行 10 秒的採樣。餘弦信號的頻率是 440 Hz。

>> filename='cosine.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> w=2*pi*440*t;
>> signal=cos(w);
>> audiowrite(filename, signal, fs);

這就在工做路徑中建立了一個 'cosine.ogg' 文件,這個文件中包含餘弦信號。

如何使用Octave 在Ubuntu上科學處理音頻如何使用Octave 在Ubuntu上科學處理音頻

播放這個 'cosine.ogg' 文件就會產生一個 440Hz 的 音調,這個音調正好是樂理中的 'A' 調。若是須要查看保存在文件中的值就必須使用 'audioread' 函數讀取文件。在後續的教程中,咱們會看到怎樣在兩個信道中讀取一個音頻文件。

步驟5:播放音頻文件

Octave 有一個默認的音頻播放器,能夠用這個音頻播放器進行測試。使用下面的函數:

>> [y,fs]=audioread('yourfile.ogg');
>> player=audioplayer(y, fs, 8)

  scalar structure containing the fields:

    BitsPerSample =  8
    CurrentSample = 0
    DeviceID = -1
    NumberOfChannels =  1
    Running = off
    SampleRate =  44100
    TotalSamples =  236473
    Tag =
    Type = audioplayer
    UserData = [](0x0)
>> play(player);

在這個教程的續篇,咱們會進入音頻處理的高級特性部分,可能會接觸到一些科學和商業應用中的實例。

免費提供最新Linux技術教程書籍,爲開源技術愛好者努力作得更多更好:http://www.linuxprobe.com/

相關文章
相關標籤/搜索