matlab实现音频信号的左右声道信号分离_立体声分离度与立体声相关系数
艺术为人而生,人类两个耳朵的生理构造,让我们的播音设备大多至少带有两个声道。
两个耳朵一起,就可以分辨声音的方位,而这又为艺术创作带来了无限的可能性。一个合理的立体声处理,可以带来听觉上的震撼。接下来我们就来谈谈与立体声相关的一个概念:立体声分离度,还有用于测量立体声的工具:相关系数表。
立体声分离度
一些宿主软件(如FL Studio)、音频处理插件(如iZotope Ozone Imager, Waves S1 Stereo Imager)都提供了用于处理立体声的工具,而其中有一个选项,就叫做立体声分离度(Stereo Separation),或立体声宽度(Stereo Width)。
转动这些旋钮,我们确实可以听到,声音“变宽了”。
而这样的效果,其实是这些效果器将输入的信号转换成M-S制式的信号之后,调整M通道和S通道信号的比例形成的。
Major:立体声就是左声道+右声道?不!M-S制式与铝带话筒zhuanlan.zhihu.com
但是,更进一步讲,S通道的信息是怎么来的,我们又要如何去衡量两个通道携带的信息,怎么去利用好两个声道?
分离度的衡量
让我们先从XY图说起。
可以用以下方程来描述XY图:
XY图需要两个输入的信号x(t)和y(t),然后将每个时刻的x与y的值在平面直角坐标系中显示出来。当两个输入均为正弦波时,就把它叫做利萨如图形。
如果两个分量完全一样,我们将会看到一条与x轴呈45度角的线段。
而当两个分量出现差异,这条线段就会变成一个有一定面积的图形。
我们可以看看这个gif来更好地理解XY图
当我们给出输入信号
参数方程可以化简为
也就是斜向上的直线
而若输入信号是
这时候,参数方程就变成了圆。
衡量xy坐标系中的数据的相关性,有一个简单粗暴的方法:将数据集用垂直的两条线尽量均分为四个部分,计算右上角和左下角区域的数据与数据总量的比值,大致就为数据的相关性。
于是我们从xy图的形状也可以大致知道两个通道的相关性是什么样的:图形越窄,相关性越大。
我们用-1到1之间的数值来描述事物的相关性。
当两个输入为频率相同的正弦波时,我们可以通过他们的相位差来定义它们的相关性。当相位差为0时,相关性为1,此时xy图中表现为一条斜向上的线段;相位差为90度时,xy图中为正圆,此时相关性为0;相位差为180度时,两个信号反相,xy图中为斜向下的线段,相关性为-1。
而推而广之,到一般性的信号上,为了衡量其相关系数,我们可以采用如下公式:
其中
分离度的意义
到人耳上来,相关性越弱的声音,听起来“越宽”,
接下来我们用正弦波作为例子,看看不同相关性下的两个声道叠加之后会出现什么样的结果。
当相关系数为1时,两个声道叠加后,合成的波形形状不变,但是振幅x2了。当相关系数为0时,合成波形振幅为原来的√2倍,并且移相45度。而当相关系数为-1的时候,叠加后的波形就消失了。
因此,在混音或制作母带的时候,应该注意不要让两个声道的相关性小于0,否则如果混合成单声道的音轨,有部分声音就会抵消掉了。
分离度的表示方法
这里以 iZotope 的 Ozone Imager 作为例子。插件提供了三种不同的仪表来让我们可以对立体声轨道进行观测,分别是:Polar Sample、 Polar Level 和 Lissajous。
1、Lissajous
莉萨如图就是上面讲到的,将两个声道的信号作为一个向量,然后在一个正交的平面内标识出每个采样点的位置。
不过在这里,它又把XY平面做了一个45度的旋转,这样一来,若声音的相关性为1,那么表现就是一条竖直的直线,若相关性为-1,就是一条水平的直线。
在图形的右侧还有一个示值范围为-1到1的表,则之间表示两个声道的相关系数。
2、Polar Sample
这个表把莉萨如图形映射到了一个半圆形里。但是这个图并不是极坐标图。它将莉萨如图形的四个坐标轴映射到两个四分之一圆。
这样做的好处是比起莉萨如图形,观察起来更加方便快捷。在半圆形中,处于倾斜的两根横线之间的采样点就表示相位相差90度以内,而在外面的采样点则会互相抵消。
3、Polar Level
该图形表示的是某个相位差上的声音的平均幅度。落在两根倾斜线中间的振幅正相关,两侧的负相关。
调整立体声宽度的方法
如果遇到两个声道相关性为1的情况,也就是两个声道的信息完全一样,此时S通道上不携带信息,S通道没有声音。那么我们就无法使用M-S分离的方法,来拓宽声场。
在这种情况下要对声场进行拓宽,有很多骚操作,但是大部分操作会引入失真。
延时器
在声道之间加入延时器,会对所有频率的声音造成一个相同时间的延迟,从而给不同频率的分量引入了不同的相位差。对于一些比较简单的声音,使用延时器来拓宽声场效果是很好的。
全通滤波器
在之前的文章里讲过的全通滤波器也可以用于拓宽声场不同于延时器,全通滤波器可以给相位产生一个群延时。它们造成的效果的区别也是比较微妙的。
比如由于全通滤波器给所有频率的信号都产生了相同的相位差,那么不管高频还是低频,都“变宽”了相同的程度。而延时器呢,当高频变宽了许多的时候,低频的相位差改变的程度还很小。
合唱效果器
合唱效果器通过复制声道,再引入一个微小的频率偏移和延时等操作,来给声音加上一个“合唱”的效果。如果将合唱的调制深度关掉,其实也就是引入了一个或多个延时。
至于不同的方法产生的微妙的区别,还得靠自己多尝试,去感受啦!
[1] Correlation meter -Stack Exchange
[2] What are my phase-correlation meters telling me? - SOS
matlab实现音频信号的左右声道信号分离_立体声分离度与立体声相关系数相关推荐
- 机器学习处理信号分离_[学习笔记]使用机器学习和深度学习处理信号基础知识...
参考学习:Signal Generation and Preprocessing 本人只是为了了解信号处理的基础知识而做的学习笔记,涉及深度可能不够,有理解错误的地方请大胆指出,感激不尽 一.信号生成 ...
- matlab怎么把音频变成信号_如何利用matlab处理音频信号
Matlab 处理音频信号 一. 问题的提出: 数字语音是信号的一种,我们处理数字语音信号,也就是对一 种信号的处理,那信号是什么呢? 信号是传递信息的函数. 一. 问题的提出: 数字语音是信号的一种 ...
- 语音跟踪:信号分解、锁相、鸡尾酒会效应、基于PR的信号分离
NLP中关于语音的部分,其中重要的一点是语音信号从背景噪音中分离.比如在一个办公室场景中,有白天的底噪-类似于白噪音的噪音.空调的声音.键盘的啪啪声.左手边45度7米元的地方同事讨论的声音.右手边1. ...
- 基于matlab的音频信号低通滤波实验
基于matlab的音频信号低通滤波实验 一.实验任务 录制语音信号,查看其时域频谱图. 加入高频噪声信号,并查看其时域频谱图. 设计低通滤波器,将带有高频噪声的语音信号经过低通滤波器,将噪声滤除,查看 ...
- 基于小波变换的信号分离
一.实验目的: 使用小波变换将信号进行分离.验证小波变换在信号处理中的有效性. 二.实验原理: 小波变换是一种非常重要的信号处理方法,可以将信号分解成不同频率的小波成分,从而进行信号的分析和处理.小波 ...
- 利用matlab实现POD分解(在一维信号或二维流场矢量中的应用)
利用matlab实现POD分解(在一维信号或二维流场矢量中的应用) 0 前言 0.1 matlab中特征值计算 0.2 matlab中SVD分解计算 0.3 信号的正交性 1 一维信号POD分解 1. ...
- 【Matlab】音频信号谱分析及椭圆滤波处理
前言 一个使用matlab对音频信号进行频谱分析及滤波处理的学习笔记,本文使用的是椭圆滤波器. 音频下载 demo.mp3 频谱分析 读取音频信号进行傅里叶变换 [x,fs]=audioread('D ...
- matlab数字音频处理实验报告,数字信号处理实践——基于matlab的音频信号分析即处理...
基于matlab的音频信号分析即处理 一直很多人都困惑,大学里学了数字信号能干嘛,很少又实践动手的机会(这都是看个人主动性的,从来不缺锻炼的机会,机会不会摆在你面前吧!).很多人也就是做做题目 pra ...
- 在Matlab平台上实现对语音信号的去噪研究和仿真
在Matlab平台上实现对语音信号的去噪研究和仿真 摘要 语音信号在数字信号处理中占有极其重要的地位,因此选择通过对语音信号的研究来巩固和掌握数字信号处理的基本能力十分具有代表性.对数字信号处理离不开 ...
最新文章
- 软件驱动安装在docker_docker 安装软件
- 6. 以下耦合度中最松散的耦合是_Spring Java中的依赖注入,它是如何工作的?- 知识铺...
- php 安装redis数据库,Linux下安装Redis以及phpredis模块
- 如何使用代码区分service contract和service contract quotation
- hadoop综述_Hadoop书籍赠品–综述
- Heroku运行Java
- Mongodb自带工具
- 【嵌入式Linux】嵌入式Linux应用开发基础知识之输入系统应用编程
- Java开源框架Netty
- 2022年NPS基准:NPS分数达到多少算好?
- Scrum master成长笔记:如何为Scrum团队设定愿景目标?
- 腾讯云播放器隐藏音频播放的按钮
- Overlaps的压盖计数规则
- Android:空气质量检测界面(布局嵌套),练手推荐。
- 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)...
- oracle显示上午下午,Oracle实现使用时间函数实现输出“上午好/...
- 剑指offer:数组
- C语言运算符号优先级
- 爱心表白代码HTML
- 影视后期学习,必须要掌握的软件有哪些?
热门文章
- SDK,NDK,ADT工具下载常用地址
- Oracle数据处理
- 检索数据_19_按照字符串对结果排序
- arch Linux 添加引导,ArchLinux 添加开机启动脚本, 亲测
- Linux性能监控命令——sar
- Eclipse 一直Building Workspace 的解决办法
- Android Studio 模拟器 不要皮肤,效果更好
- Swift 烧脑体操(三) - 高阶函数
- 使用DPM还原exchange 2013已删除邮箱数据
- 2014-03-09 Spring的学习(1)------Spring管理Bean(实例化Bean)