科學音訊處理(二):如何使用 Octave 對音訊檔案進行基本數學訊號處理
在前一篇的指導教程中,我們看到了讀、寫以及重放音訊檔案的簡單步驟,我們甚至看到如何從一個周期函式比如餘弦函式合成一個音訊檔案。在這篇指導教程中,我們將會看到如何對訊號進行疊加和倍乘(調整),並應用一些基本的數學函式看看它們對原始訊號的影響。
訊號疊加
兩個訊號 S1(t)和 S2(t)相加形成一個新的訊號 R(t),這個訊號在任何瞬間的值等於構成它的兩個訊號在那個時刻的值之和。就像下面這樣:
R(t) = S1(t) + S2(t)
我們將用 Octave 重新產生兩個訊號的和並通過圖表看達到的效果。首先,我們生成兩個不同頻率的訊號,看一看它們的疊加訊號是什麼樣的。
第一步:產生兩個不同頻率的訊號(oog 檔案)
>> sig1='cos440.ogg'; %creating the audio file @440 Hz
>> sig2='cos880.ogg'; %creating the audio file @880 Hz
>> fs=44100; %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1,cos(w1),fs); %writing the function cos(w) on the files created
>> audiowrite(sig2,cos(w2),fs);
然後我們繪製出兩個訊號的影像。
訊號 1 的影像(440 赫茲)
>> [y1, fs] = audioread(sig1);
>> plot(y1)
訊號 2 的影像(880 赫茲)
>> [y2, fs] = audioread(sig2);
>> plot(y2)
第二步:把兩個訊號疊加
現在我們展示一下前面步驟中產生的兩個訊號的和。
>> sumres=y1+y2;
>> plot(sumres)
疊加訊號的影像
Octaver 中的效果
在 Octaver 中,這個效果產生的聲音是獨特的,因為它可以模擬音樂家彈奏的低八度或者高八度音符(取決於內部程式設計),模擬音符和原始音符成對,也就是兩個音符發出相同的聲音。
第三步:把兩個真實的訊號相加(比如兩首音樂歌曲)
為了實現這個目的,我們使用格列高利聖詠中的兩首歌曲(聲音取樣)。
聖母頌曲
首先,我們看一下聖母頌曲並繪出它的影像:
>> [y1,fs]=audioread('avemaria_.ogg');
>> plot(y1)
讚美詩曲
現在我們看一下讚美詩曲並繪出它的影像。
>> [y2,fs]=audioread('hymnus.ogg');
>> plot(y2)
聖母頌曲 + 讚美詩曲
>> y='avehymnus.ogg';
>> audiowrite(y, y1+y2, fs);
>> [y, fs]=audioread('avehymnus.ogg');
>> plot(y)
結果,從音訊的角度來看,兩個聲音訊號混合在了一起。
兩個訊號的乘積
對於求兩個訊號的乘積,我們可以使用類似求和的方法。我們使用之前生成的相同檔案。
R(t) = S1(t) * S2(t)
>> sig1='cos440.ogg'; %creating the audio file @440 Hz
>> sig2='cos880.ogg'; %creating the audio file @880 Hz
>> product='prod.ogg'; %creating the audio file for product
>> fs=44100; %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1, cos(w1), fs); %writing the function cos(w) on the files created
>> audiowrite(sig2, cos(w2), fs);>> [y1,fs]=audioread(sig1);>> [y2,fs]=audioread(sig2);
>> audiowrite(product, y1.*y2, fs); %performing the product
>> [yprod,fs]=audioread(product);
>> plot(yprod); %plotting the product
注意:我們必須使用操作符 ‘.*
’,因為在引數檔案中,這個乘積是值與值相乘。更多資訊,請參考 Octave 矩陣操作產品手冊。
乘積生成訊號的影像
兩個基本頻率相差很大的訊號相乘後的圖表效果(調製原理)
第一步:
生成兩個頻率為 220 赫茲的聲音訊號。
>> fs=44100;
>> t=0:1/fs:0.03;
>> w=2*pi*220*t;
>> y1=cos(w);
>> plot(y1);
第二步:
生成一個 22000 赫茲的高頻調製訊號。
>> y2=cos(100*w);
>> plot(y2);
第三步:
把兩個訊號相乘並繪出影像。
>> plot(y1.*y2);
一個訊號和一個標量相乘
一個函式和一個標量相乘的效果等於更改它的值域,在某些情況下,更改的是相標誌。給定一個標量 K ,一個函式 F(t) 和這個標量相乘定義為:
R(t) = K*F(t)
>> [y,fs]=audioread('cos440.ogg'); %creating the work files
>> res1='coslow.ogg';
>> res2='coshigh.ogg';>> res3='cosinverted.ogg';
>> K1=0.2; %values of the scalars
>> K2=0.5;>> K3=-1;
>> audiowrite(res1, K1*y, fs); %product function-scalar
>> audiowrite(res2, K2*y, fs);
>> audiowrite(res3, K3*y, fs);
原始訊號的影像
>> plot(y)
訊號振幅減為原始訊號振幅的 0.2 倍後的影像
>> plot(res1)
訊號振幅減為原始振幅的 0.5 倍後的影像
>> plot(res2)
倒相後的訊號影像
>> plot(res3)
結論
基本數學運算比如代數和、乘,以及函式與常量相乘是更多高階運算比如譜分析、振幅調製,角調製等的支柱和基礎。在下一個教程中,我們來看一看如何進行這樣的運算以及它們對聲音檔案產生的效果。
via: https://www.howtoforge.com/tutorial/octave-audio-signal-processing-ubuntu/
作者:David Duarte 譯者:ucasFL 校對:wxy
相關文章
- 使用Octave音訊處理(三):數學技術處理音訊檔案音訊
- 如何進行音訊修處理音訊
- 訊號處理基本引數
- 使用FFmpeg處理音視訊
- Python 音訊訊號處理庫 librosaPython音訊ROS
- 科學和工程中的訊號處理
- 風雲音訊處理大師提取視訊中的音訊檔案的方法音訊
- 語音訊號預處理——數字濾波器音訊
- 風雲音訊處理大師提取影片中的音訊檔案的方法音訊
- 音訊質量評估及音訊處理常用功能音訊
- Android音訊處理知識(一)MediaRecorder錄製音訊Android音訊
- 語音訊號處理入門系列(2)——訊號處理中的幾個關鍵概念音訊
- android音視訊指南-處理音訊輸出的變化Android音訊
- Android音視訊處理之MediaMuxerAndroidUX
- 我的 iOS 音訊處理總結iOS音訊
- 多功能的音訊處理軟體音訊
- MegaSeg Pro for Mac(音訊處理軟體)Mac音訊
- TwistedWave for mac(音訊處理軟體) 1.24.1Mac音訊
- Linux ALSA 音訊處理深入解析Linux音訊
- 網頁js版音訊數字訊號處理:H5錄音+特定頻率訊號的特徵分析和識別提取網頁JS音訊H5特徵
- 音訊特效SDK,滿足內容生產的音訊處理需求音訊特效
- Python語音訊號處理的一些kitPython音訊
- 通訊訊號處理的一些基本常識
- Python-OpenCV 處理視訊(二): 視訊處理PythonOpenCV
- H5音訊處理——踩坑之旅H5音訊
- Mic Drop for Mac 麥克風音訊處理Mac音訊
- Android音視訊處理之MediaCodecAndroid
- 訊號處理第二篇——接著談正弦訊號
- 語音訊號處理獲取 NFFT 的自定義函式音訊FFT函式
- HMS Core音訊編輯服務支援7種音訊特效,助力一站式音訊處理音訊特效
- 使用 scipy.fft 進行Fourier Transform:Python 訊號處理FFTORMPython
- 電腦如何安裝音訊裝置_電腦沒有音訊裝置怎麼處理音訊
- Linux訊號機制與訊號處理Linux
- 音訊處理開源庫webrtc(1)簡介音訊Web
- 唱吧 iOS 音視訊快取處理框架iOS快取框架
- Waves Complete 12 for mac 音訊訊號處理工具Mac音訊
- 大牛講解訊號與系統以及數字訊號處理
- linux 訊號與處理Linux