新聞中心
Octave 是一個(gè) Linux 上類似于 Matlab 的軟件,它擁有數(shù)量眾多的函數(shù)和命令,支持聲音采集、記錄、回放以及音頻信號(hào)的數(shù)字化處理,用于娛樂(lè)應(yīng)用、研究、醫(yī)學(xué)以及其它科學(xué)領(lǐng)域。在

創(chuàng)新互聯(lián)是一家專業(yè)提供同德企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為同德眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
環(huán)境準(zhǔn)備
首先是安裝 octave,在 Ubuntu 終端運(yùn)行下面的命令添加 Octave PPA,然后安裝 Octave 。
sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave
步驟1:打開(kāi) Octave
在這一步中我們單擊軟件圖標(biāo)打開(kāi) Octave,可以通過(guò)單擊下拉式按鈕選擇工作路徑。
步驟2:音頻信息
使用audioinfo命令查看要處理的音頻文件的相關(guān)信息。
>> info = audioinfo ('testing.ogg')
步驟3:讀取音頻文件
在本教程中我會(huì)使用 ogg 文件來(lái)讀取這種文件的屬性,比如采樣、音頻類型(stereo 和 mono)、信道數(shù)量等。必須聲明的一點(diǎn)是教程中使用的所有的命令都是在 Octave 終端窗口中執(zhí)行的。首先,我們必須要把這個(gè) ogg 文件賦給一個(gè)變量。注意:文件必須在 Octave 的工作路徑中。
>> file='yourfile.ogg'
>> [M, fs] = audioread(file)
這里的 M 是一個(gè)一列或兩列的矩陣,取決于信道的數(shù)量,fs 是采樣率。
下面的操作都可以讀取音頻文件:
>> [y, fs] = audioread (filename, samples)
>> [y, fs] = audioread (filename, datatype)
>> [y, fs] = audioread (filename, samples, datatype)
samples 指定開(kāi)始幀和結(jié)束幀,datatype 指定返回的數(shù)據(jù)類型??梢詾樗凶兞吭O(shè)置值:
>> samples = [1, fs)
>> [y, fs] = audioread (filename, samples)
數(shù)據(jù)類型:
>> [y,Fs] = audioread(filename,'native')
如果值是“native”,那么它的數(shù)據(jù)類型就依數(shù)據(jù)在音頻文件中的存儲(chǔ)情況而定。
步驟4:音頻文件的寫操作
新建一個(gè) ogg 文件:
我們會(huì)從一個(gè)余弦值創(chuàng)建一個(gè) ogg 文件。采樣率是每秒 44100 次,這個(gè)文件最少進(jìn)行 10 秒的采樣。余弦信號(hào)的頻率是 440 Hz。
>> filename='cosine.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> w=2*pi*440*t;
>> signal=cos(w);
>> audiowrite(filename, signal, fs);
這就在工作路徑中創(chuàng)建了一個(gè) ‘cosine.ogg’ 文件,這個(gè)文件中包含余弦信號(hào)。
播放這個(gè) ‘cosine.ogg’ 文件就會(huì)產(chǎn)生一個(gè) 440Hz 的 音調(diào),這個(gè)音調(diào)正好是樂(lè)理中的 ‘A’ 調(diào)。如果需要查看保存在文件中的值就必須使用 ‘a(chǎn)udioread’ 函數(shù)讀取文件。在后續(xù)的教程中,我們會(huì)看到怎樣在兩個(gè)信道中讀取一個(gè)音頻文件。
步驟5:播放音頻文件
Octave 有一個(gè)默認(rèn)的音頻播放器,可以用這個(gè)音頻播放器進(jìn)行測(cè)試。使用下面的函數(shù):
>> [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);
在這個(gè)教程的續(xù)篇,我們會(huì)進(jìn)入音頻處理的高級(jí)特性部分,可能會(huì)接觸到一些科學(xué)和商業(yè)應(yīng)用中的實(shí)例。
本文題目:Linux下使用Octave對(duì)文件進(jìn)行讀寫操作
轉(zhuǎn)載注明:http://www.dlmjj.cn/article/ccoshid.html


咨詢
建站咨詢
