当前位置:网站首页>使用互相关进行音频对齐
使用互相关进行音频对齐
2022-07-31 16:04:00 【非典型废言】
在计算一些音频指标如SNR的时候,我们需要音频信号与参考信号对齐,但有时候我们处理后的或者录制的音频并不是与参考信号对齐的,这就需要找到一种方法将它们对齐。
I. 互相关函数
音频对齐可以转化为时延估计问题,我们以前有介绍过使用GCC-PHAT进行时延估计,这里我们采用一种更为简单的方式进行估计——互相关函数。我们在语音信号时域分析介绍过自相关函数,类似的对于离散时域信号互相关函数的计算公式为:

我们知道在频域互相关中我们对广义互相关进行了一个加权,PHAT起到了白化的结果使得其互相关函数峰值更加明显,类似的可以对公式(1)进行类似的操作来使得峰值更为明显:

互相关的计算其实和互相关类似,我找了个视频来解释这个计算过程。
II. Praat
很多编程语言都封装好了互相关函数,这里我们使用一个语音分析领域常用的软件叫Praat。由于语音长度是有限的Praat在互相关函数上进行了适当的修改,简单来说互相关序列的开始时间将是f 的开始时间减去g 的结束时间,结束时间将是f的结束时间减去g的开始时间,即第一个采样的时间是f 的第一个样本减去g的最后一个样本,最后一个样本的时间将是f的最后一个样本减去g 的第一个样本,自相关序列的长度是f和g的样本数之和减1。
我们下面来看下效果,首先我们有两个音频,如下图所示,可以明显看到两个轨道上的音频有明显的延迟。

我们通过Praat计算出两个音频的时间延迟大约是1.284s。

我们把第二个轨道的音频提前1.284s。

得到的结果如下,看起来两段音频基本对齐了。

本文相关代码,在公众号语音算法组菜单栏点击Code获取。
参考文献:
[1]. http://paulbourke.net/miscellaneous/correlate/
[2]. UCBS, Digital Speech Process
[3]. http://www.dsg-bielefeld.de/dsg_wp/wp-content/uploads/2014/10/video_syncing_fun.pdf
[4]. https://www.fon.hum.uva.nl/praat/manual/Sounds__Cross-correlate___.html
边栏推荐
- type of timer
- MySQL多表联合查询
- [7.28] Code Source - [Fence Painting] [Appropriate Pairs (Data Enhanced Version)]
- tensorflow2.0 cnn(layerwise)
- 【TypeScript】深入学习TypeScript类型操作
- org.apache.jasperException(could not initialize class org)
- 基于Redis(SETNX)实现分布式锁,案例:解决高并发下的订单超卖,秒杀
- Codeforces Round #796 (Div. 2) (A-D)
- 腾讯云部署----DevOps
- 2020 WeChat applet decompilation tutorial (can applet decompile source code be used)
猜你喜欢

EF Core 2.2中将ORM框架生成的SQL语句输出到控制台

tooltips使用教程(鼠标悬停时显示提示)

【C语言】LeetCode27.移除元素

2022年整理LeetCode最新刷题攻略分享(附中文详细题解)

MySQL基础篇【单行函数】

After Grafana is installed, the web opens and reports an error

二分查找的细节坑

Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具

复杂高维医学数据挖掘与疾病风险分类研究

Design and Implementation of Compiler Based on C Language
随机推荐
LevelSequence源码分析
WPF project - basic usage of controls entry, you must know XAML
Implementing distributed locks based on Redis (SETNX), case: Solving oversold orders under high concurrency
form 表单提交后,使页面不跳转[通俗易懂]
MySQL常用语句整理
js的toString方法
ASP.NET Core generates continuous Guid
研发过程中的文档管理与工具
Why don't you make a confession during the graduation season?
MySQL database operations
复制延迟案例(3)-单调读
入职一个月反思
6-22漏洞利用-postgresql数据库密码破解
字符指针赋值[通俗易懂]
How C programs run 01 - the composition of ordinary executable files
What is the difference between BI software in the domestic market?
MySQL multi-table union query
ansible学习笔记02
多主复制下处理写冲突(4)-多主复制拓扑
2022年整理LeetCode最新刷题攻略分享(附中文详细题解)