本帖最后由 bqgup 于 2020-9-18 14:31 编辑
# 音频的左右声道信号差异探究
## 一、获取音频
#### 通过智能设备获取一段电影《扫毒》中经典的音频——“段坤我吃定了”,
段坤我吃定了音频.mp3
(164.49 KB, 下载次数: 7)
```
[y,Fs] = audioread('E:\8、matlab\回声变声处理\段坤我吃定了音频.mp3');
```
#### 在MATLAB中运行后,结果显示如下:
#### 其中,Fs代表采样率,为44100Hz,在信号的处理过程中,要想保持信号不失真,采样时就要满足奈奎斯特抽样定理,说的简单点,人说话的频率范围为300Hz-3400Hz,音频信号色频率范围为20Hz-20000Hz,我们日常音频信号的频率也就在20Hz-20000Hz,最大频率20000Hz,奈奎斯特采样定理就是采样频率至少要是最大频率的2倍,也就是说采样频率为
#### Fs=2*20000Hz=40000Hz,
#### 实际采样过程中会有一定的冗余量,抽样定理就是这个意思。现在这个Fs的结果也就一目了然了;结果生成的y是个46425行2列的数组,这个两列分别代表左右声道,第一列就是左声道,第二列是右声道,46425表示在FS的采样率下这段音频的数据点数。
#### 通过命令可以听一下音频的质量,通过电脑播放。
```
sound(y,Fs)
```
#### 如果改变Fs的大小,将会使声音发生变化,自己可以实验一下。
#### 为了处理掉音频的开头和结尾一些不需要的音频,我们可以通过命令将音频剪辑:
```
[y,Fs] = audioread('E:\8、matlab\回声变声处理\段坤我吃定了音频.mp3',[1000,420000]);
```
#### 剪辑完可以看出数据长度的确变小了一些:
#### 下面通过命令将剪辑后的音频保存到文件夹下:
```
audiowrite('E:\8、matlab\回声变声处理\段坤我吃定了截取.wav',y,Fs)
```
#### 文件夹下多了一个新命名的音频文件:
## 二、左右声道信号差异
#### 我试听了一下左右声道的声音,感觉没什么不一样,只能看一下左右声道信号的细节了。我们就对截取后的音频直接处理。
### 2.1 时域探究
```
%%%% 音频信号左右声道信号处理 %%%%
function Audio_LR_Pro()
[y,Fs] = audioread('E:\8、matlab\回声变声处理\段坤我吃定了截取.wav');
Length = length(y); %% 信号长度
y_left = y(:,1); %% 左声道信号
y_right = y(:,2); %% 右声道信号
m = 1 : 1 : Length;
subplot(211);
plot(m/Fs,y_left);
title('左声道时域变化');
xlabel('t');
ylabel('y_left')
subplot(212);
plot(m/Fs,y_right);
title('右声道时域变化');
xlabel('t');
ylabel('y_right')
```
#### 时域对比结果如下:
### 2.2 频域探究
```
%%%% 音频信号左右声道信号处理 %%%%
function Audio_LR_Pro_Freq()
[y,Fs] = audioread('E:\8、matlab\回声变声处理\段坤我吃定了截取.wav');
Length = length(y); %% 信号长度
y_left = y(:,1); %% 左声道信号
y_right = y(:,2); %% 右声道信号
m = 1 : 1 : Length;
subplot(211);
plot((m-1)*Fs/Length,abs(fft(y_left)));
title('左声道频域变化');
xlabel('f');
ylabel('A_y_left')
subplot(212);
plot((m-1)*Fs/Length,abs(fft(y_right)));
title('右声道频域变化');
xlabel('f');
ylabel('A_y_right')
```
#### 频域结果对比如下图:
### 2.3 时延探究
```
%%%% 音频信号左右声道信号处理 %%%%
function Audio_LR_Pro_Delay()
[y,Fs] = audioread('E:\8、matlab\回声变声处理\段坤我吃定了截取.wav');
Length = length(y); %% 信号长度
y_left = y(:,1); %% 左声道信号
y_right = y(:,2); %% 右声道信号
[c,lags]=xcorr(y_left,y_right);%% 互相关
subplot(211);
plot(lags/Fs,c,'r');
title('相关函数');
xlabel('时间(s)');ylabel('左右声道互相关');
grid on
[Am,Lm]=max(c);
d = Lm - (length(c)+1)/2;
phy=(2*10*d*180/Fs);
phy = rem(phy,360) %% 取余360
Delay=d/Fs
```
#### 相关结果如下图:
#### 左右声道相位差及时延结果运算如下:
## 三、结论
#### 1、左右声道的幅度、频率几乎相同;
#### 2、左右声道相位差及时延不同;