溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

linux中如何使用Octave對(duì)音頻文件進(jìn)行讀寫(xiě)操作

發(fā)布時(shí)間:2021-10-23 14:53:43 來(lái)源:億速云 閱讀:259 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹了linux中如何使用Octave對(duì)音頻文件進(jìn)行讀寫(xiě)操作,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Octave 是一個(gè) Linux 上類(lèi)似于 Matlab  的軟件,它擁有數(shù)量眾多的函數(shù)和命令,支持聲音采集、記錄、回放以及音頻信號(hào)的數(shù)字化處理,用于娛樂(lè)應(yīng)用、研究、醫(yī)學(xué)以及其它科學(xué)領(lǐng)域。在本教程中,我們會(huì)在  Ubuntu 上使用 Octave 的 4.0.0 版本讀取音頻文件,然后通過(guò)生成信號(hào)并且播放來(lái)模仿在各種情況下對(duì)音頻信號(hào)的使用。

環(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ò)單擊下拉式按鈕選擇工作路徑。

linux中如何使用Octave對(duì)音頻文件進(jìn)行讀寫(xiě)操作

步驟2:音頻信息

使用audioinfo命令查看要處理的音頻文件的相關(guān)信息。

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

linux中如何使用Octave對(duì)音頻文件進(jìn)行讀寫(xiě)操作

步驟3:讀取音頻文件

在本教程中我會(huì)使用 ogg 文件來(lái)讀取這種文件的屬性,比如采樣、音頻類(lèi)型(stereo 和  mono)、信道數(shù)量等。必須聲明的一點(diǎn)是教程中使用的所有的命令都是在 Octave 終端窗口中執(zhí)行的。首先,我們必須要把這個(gè) ogg  文件賦給一個(gè)變量。注意:文件必須在 Octave 的工作路徑中。

>> file='yourfile.ogg'
>> [M, fs] = audioread(file)

這里的 M 是一個(gè)一列或兩列的矩陣,取決于信道的數(shù)量,fs 是采樣率。

linux中如何使用Octave對(duì)音頻文件進(jìn)行讀寫(xiě)操作

 linux中如何使用Octave對(duì)音頻文件進(jìn)行讀寫(xiě)操作

linux中如何使用Octave對(duì)音頻文件進(jìn)行讀寫(xiě)操作

下面的操作都可以讀取音頻文件:

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

samples 指定開(kāi)始幀和結(jié)束幀,datatype 指定返回的數(shù)據(jù)類(lèi)型??梢詾樗凶兞吭O(shè)置值:

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

數(shù)據(jù)類(lèi)型:

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

如果值是“native”,那么它的數(shù)據(jù)類(lèi)型就依數(shù)據(jù)在音頻文件中的存儲(chǔ)情況而定。

步驟4:音頻文件的寫(xiě)操作

新建一個(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)。

linux中如何使用Octave對(duì)音頻文件進(jìn)行讀寫(xiě)操作

播放這個(gè) 'cosine.ogg' 文件就會(huì)產(chǎn)生一個(gè) 440Hz 的 音調(diào),這個(gè)音調(diào)正好是樂(lè)理中的 'A' 調(diào)。如果需要查看保存在文件中的值就必須使用  'audioread' 函數(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);

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“l(fā)inux中如何使用Octave對(duì)音頻文件進(jìn)行讀寫(xiě)操作”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI