PUB:20160620 Part II - How to make basic Mathematical Signal Processing in Audio files using Ubuntu with Octave 4.0

@ucasFL 居然选这么专业的选题,居然还有人能翻译好 @oska874
This commit is contained in:
wxy 2016-09-30 14:27:07 +08:00
parent 0fafa87fce
commit 586c4d8ebb

View File

@ -1,17 +1,17 @@
科学音频处理(二):如何使用 Octave 对音频文件进行基本数学信号处理
=========
# 科学音频处理,第二节 - 如何用 Ubuntu 上的 Octave 4.0 软件对音频文件进行基本数学信号处理
在[前一篇的指导教程][1]中,我们看到了读、写以及重放音频文件的简单步骤,我们甚至看到如何从一个周期函数比如余弦函数合成一个音频文件。在这篇指导教程中,我们将会看到如何对信号进行叠加和倍乘(调整),并应用一些基本的数学函数看看它们对原始信号的影响。
在过去的指导教程中【previous tutorial】(https://www.howtoforge.com/tutorial/how-to-read-and-write-audio-files-with-octave-4-in-ubuntu/) 我们看到了读写以及重放音频文件的简单步骤我们甚至看到如何从一个周期函数比如余弦函数合成一个音频文件。在这个指导教程中【tutorial】我们将会看到如何对信号进行相加和调整并看一看基本数学函数它们对原始信号的影响。
### 信号叠加
### 信号相加
两个信号 S1t 和 S2t 相加形成一个新的信号 R(t), 这个信号在任何瞬间的值等于构成它的两个信号在那个时刻的值之和。就像下面这样:
两个信号 S1t和 S2t相加形成一个新的信号 R(t),这个信号在任何瞬间的值等于构成它的两个信号在那个时刻的值之和。就像下面这样:
```
R(t) = S1(t) + S2(t)
```
我们将用 Octave 重新产生两个信号的和并通过图表看达到的效果。首先,我们生成两个不同频率的信号,看一看它们的信号是什么样的。
我们将用 Octave 重新产生两个信号的和并通过图表看达到的效果。首先,我们生成两个不同频率的信号,看一看它们的叠加信号是什么样的。
#### 第一步产生两个不同频率的信号oog 文件)
@ -28,7 +28,7 @@ R(t) = S1(t) + S2(t)
然后我们绘制出两个信号的图像。
信号 1 的图像(440 赫兹)
**信号 1 的图像440 赫兹)**
```
>> [y1, fs] = audioread(sig1);
@ -37,7 +37,7 @@ R(t) = S1(t) + S2(t)
[![信号 1 的图像](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/plotsignal1.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/plotsignal1.png)
信号 2 的图像(880 赫兹)
**信号 2 的图像880 赫兹)**
```
>> [y2, fs] = audioread(sig2);
@ -46,7 +46,7 @@ R(t) = S1(t) + S2(t)
[![信号 2 的图像](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/plotsignal2.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/plotsignal2.png)
#### 第二部:把两个信号相
#### 第二步:把两个信号叠
现在我们展示一下前面步骤中产生的两个信号的和。
@ -55,19 +55,19 @@ R(t) = S1(t) + S2(t)
>> plot(sumres)
```
信号的图像
叠加信号的图像
[![和信号的图像](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/plotsum.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/plotsum.png)
八度器Octaver)的效果
**Octaver 中的效果**
八度器Octaver)中,八度器的效果产生的声音是典型化的,因为它可以仿真音乐家弹奏的低八度或者高八度音符(取决于内部程序设计),仿真音符和原始音符成对,也就是两个音符发出相同的声音。
Octaver 中,这个效果产生的声音是独特的,因为它可以仿真音乐家弹奏的低八度或者高八度音符(取决于内部程序设计),仿真音符和原始音符成对,也就是两个音符发出相同的声音。
#### 第三步:把两个真实的信号相加(比如两首音乐歌曲)
为了实现这个目的我们使用格列高利圣咏Gregorian Chants)中的两首歌曲(声音采样)。
为了实现这个目的我们使用格列高利圣咏Gregorian Chants中的两首歌曲(声音采样)。
圣母颂曲Avemaria Track)
**圣母颂曲Avemaria Track**
首先,我们看一下圣母颂曲并绘出它的图像:
@ -78,9 +78,9 @@ R(t) = S1(t) + S2(t)
[![圣母歌曲](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/avemaria.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/avemaria.png)
赞美诗曲Hymnus Track)
**赞美诗曲Hymnus Track**
现在我们看一下赞美诗曲并绘出它的图像
现在我们看一下赞美诗曲并绘出它的图像
```
>> [y2,fs]=audioread('hymnus.ogg');
@ -89,7 +89,7 @@ R(t) = S1(t) + S2(t)
[![赞美诗曲](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/hymnus.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/hymnus.png)
圣母颂曲 + 赞美诗曲
**圣母颂曲 + 赞美诗曲**
```
>> y='avehymnus.ogg';
@ -98,11 +98,13 @@ R(t) = S1(t) + S2(t)
>> plot(y)
```
[![圣母歌曲 + 赞美诗曲](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/avehymnus.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/avehymnus.png)结果,从音频的角度来看,两个声音信号混合在了一起。
[![圣母歌曲 + 赞美诗曲](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/avehymnus.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/avehymnus.png)
### 两个信号的乘
结果,从音频的角度来看,两个声音信号混合在了一起。
对于求两个信号的乘,我们可以使用类似求它们和的方法。我们使用之前生成的相同文件。
### 两个信号的乘积
对于求两个信号的乘积,我们可以使用类似求和的方法。我们使用之前生成的相同文件。
```
R(t) = S1(t) * S2(t)
@ -124,15 +126,15 @@ R(t) = S1(t) * S2(t)
```
注意:我们必须使用操作符 .*’,因为在参数文件中,这个乘积是值与值相乘。更多信息,请参考【八度矩阵操作产品手册】
注意:我们必须使用操作符 .*’,因为在参数文件中,这个乘积是值与值相乘。更多信息,请参考 Octave 矩阵操作产品手册
#### 乘积生成信号的图像
[![乘积信号的图像](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/plotprod.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/plotprod.png)
#### 两个基本频率相差很大的信号相乘后的图表效果(调制原理
#### 两个基本频率相差很大的信号相乘后的图表效果(调制原理
##### 第一步:
**第一步:**
生成两个频率为 220 赫兹的声音信号。
@ -146,7 +148,7 @@ R(t) = S1(t) * S2(t)
[![载波](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/carrier.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/carrier.png)
##### 第二步:
**第二步:**
生成一个 22000 赫兹的高频调制信号。
@ -157,7 +159,7 @@ R(t) = S1(t) * S2(t)
[![调制中](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/modulating.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/modulating.png)
##### 第三步:
**第三步:**
把两个信号相乘并绘出图像。
@ -169,7 +171,7 @@ R(t) = S1(t) * S2(t)
### 一个信号和一个标量相乘
一个函数和一个标量相乘的效果等于更改它的值域,在某些情况下,更改的是相标志。给定一个标量 K ,一个函数 Ft 和这个标量相乘定义为:
一个函数和一个标量相乘的效果等于更改它的值域,在某些情况下,更改的是相标志。给定一个标量 K ,一个函数 F(t) 和这个标量相乘定义为:
```
R(t) = K*F(t)
@ -186,7 +188,7 @@ R(t) = K*F(t)
>> audiowrite(res3, K3*y, fs);
```
#### 原始信号的图像
**原始信号的图像**
```
>> plot(y)
@ -194,7 +196,7 @@ R(t) = K*F(t)
[![](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/originalsignal.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/originalsignal.png)
信号振幅减为原始信号振幅的 0.2 倍后的图像
**信号振幅减为原始信号振幅的 0.2 倍后的图像**
```
>> plot(res1)
@ -202,7 +204,7 @@ R(t) = K*F(t)
[![低余弦](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/coslow.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/coslow.png)
信号振幅减为原始振幅的 0.5 倍后的图像
**信号振幅减为原始振幅的 0.5 倍后的图像**
```
>> plot(res2)
@ -210,7 +212,7 @@ R(t) = K*F(t)
[![高余弦](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/coshigh.png)](https://www.howtoforge.com/images/octave-audio-signal-processing-ubuntu/big/coshigh.png)
倒相后的信号图像
**倒相后的信号图像**
```
>> plot(res3)
@ -228,8 +230,10 @@ via: https://www.howtoforge.com/tutorial/octave-audio-signal-processing-ubuntu/
作者:[David Duarte][a]
译者:[ucasFL](https://github.com/ucasFL)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.howtoforge.com/tutorial/octave-audio-signal-processing-ubuntu/
[1]: https://linux.cn/article-7755-1.html