两个音频信号之间的时间延迟估计

2024-03-01

我有两个不同麦克风对同一信号进行的两段音频录音(例如,以 WAV 格式),但其中之一的录制有延迟,例如几秒钟。

在某种波形查看器中查看这些信号时,很容易通过视觉识别这种延迟 - 即只需发现每个信号中的第一个可见峰值并确保它们具有相同的形状:


(source: greycat.ru http://www.greycat.ru/temp/time-delay-peaks.png)

但我该如何以编程方式做到这一点 - 找出这个延迟 (t) 是什么?两个数字化信号略有不同(因为麦克风不同、位置不同、ADC 设置等)。

我仔细研究了一下,发现这个问题通常被称为“时间延迟估计”,并且有多种解决方法 - 例如,其中之一 https://cnx.org/contents/88b5bdec-22fa-4e68-ad0b-488c66da1a86@5.

但是是否有任何简单且现成的解决方案,例如可用的命令行实用程序、库或直接算法?

结论:我发现没有简单的实现,并且自己做了一个简单的命令行实用程序 - 可以在https://bitbucket.org/GreyCat/calc-sound-delay https://bitbucket.org/GreyCat/calc-sound-delay(GPLv3 许可)。它实现了一个非常简单的搜索最大值算法,描述于维基百科 https://en.wikipedia.org/wiki/Cross-correlation.


您正在寻找的技术称为互相关 http://en.wikipedia.org/wiki/Cross-correlation。这是一种非常简单的计算密集型技术,可用于解决各种问题,包括测量时间差(又名lag)在两个相似信号之间(信号不需要相同)。

如果您对滞后值(或至少是预期的滞后值的范围)有一个合理的了解,那么您可以大大减少总计算量。如果您可以对所需的准确度设置明确的限制,则同上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个音频信号之间的时间延迟估计 的相关文章

  • 加密成本高,解密成本低

    我希望该用户 攻击者加密数据并发送给服务器 现在我想要一种与标准算法完全相反的算法 使用快 难以解密 即很难使用服务器发送的密钥来加密密码等数据 以防止随机攻击 但很容易解密这样服务器在验证用户时消耗的时间非常少 但是对于攻击者来说 每次使
  • 基于时间的算法评分

    我们希望创建一种评分算法 在更短的时间内获得更高的分数 在更长的时间内获得更少的分数 需要注意的是 没有实际范围 因此时间范围可以从 100 毫秒到长达 10 分钟或更长时间 点范围为 0 到 50 谢谢你的帮助 你可以简单地把它变成一个线
  • 如何从二叉搜索树中均匀随机地返回节点?

    给定一个 BST 可能平衡也可能不平衡 如何能够均匀地随机返回 任何 节点 一个限制是您不能使用外部索引数据结构 您必须以每个节点都有平等被访问的机会的方式遍历树 这个问题让我困惑了好一阵子 如果我们确实可以使用外部哈希表 指针 我们可以对
  • cordova 使用什么 js“引擎”?

    Cordova 使用什么 JS 引擎 它是特定于平台的还是跨所有平台的一个标准 意味着 iOS 的 safari 和 Android 的 chrome 以及 Windows 可能的 IE 标准 或者跨所有平台的 Cordova JS 引擎
  • Python 给定 k 个分区的整数分区

    我正在尝试寻找或开发Python 的整数分区代码 仅供参考 整数分区将给定整数 n 表示为小于 n 的整数之和 例如 整数5可以表示为4 1 3 2 3 1 1 2 2 1 2 1 1 1 1 1 1 1 1 我为此找到了许多解决方案 ht
  • 字符串排序真的是 O(n^2logn) 吗? [复制]

    这个问题在这里已经有答案了 我读了以下内容 排序需要 O NlogN 那么它怎么是 O N 2logN 我们在这里想念的是 两个字符串的比较不是 O 1 在最坏的情况下 需要 在 所以最终的复杂度是O N 2logN 它是否正确 我一直认为
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 确定解决迷宫问题的最小线段数

    我有一个问题 我需要定义一个具有最少数量的顶点的多边形 该多边形与不透明的图像中的每个像素相交或包含每个像素 令 N 为图像中的像素数 我唯一的假设是图像的边界 孔 内不能包含透明像素 并且至少有两个像素是不透明的 举个例子 假设我有以下图
  • 检索受“rowspan”影响的行的列索引的最有效方法是什么?

    考虑下表 table thead tr th th th A th th B th th C th tr thead tbody tr th 1 th td Apples td td Oranges td td Pears td tr tb
  • 高维最近邻搜索的最佳数据结构

    我实际上正在处理高维数据 50 000 100 000 个特征 并且必须对其执行最近邻搜索 我知道随着维度的增长 KD 树的性能很差 而且我还了解到 一般来说 所有空间分区数据结构都倾向于对高维数据执行详尽的搜索 此外 还有两个重要事实需要
  • 固定大小集以包含给定集的最大数量

    我有大约 1000 组尺寸 1 4 1 3 3 5 6 4 5 6 7 5 25 42 67 100 是否有可能找到包含最大数量的给定集合的大小为 20 的集合 检查每一个100 80 20 集 效率低下 我不太确定这是 NP 完全的 考虑
  • 寻找将集合映射到整数的双射函数

    对于任意两个序列 a b 其中 a a1 a2 an 且 b b1 b2 bn 0a b具有相同的元素 而不关心它们的顺序 例如 如果 a 1 1 2 3 b 2 1 3 1 c 3 2 1 3 则 f a f b f a f b 我知道有
  • 从图像坐标获取对象的世界坐标

    I have been following this http docs opencv org modules calib3d doc camera calibration and 3d reconstruction html docume
  • 由周期表元素形成的最大单词的算法

    我想为以下问题场景编写一个算法 根据元素周期表元素的名称 找到可以组成的最大单词 符号如Na Ne等应被视为单个元素 这是在一家知名公司的求职面试中被问到的 有人可以帮我解决这个问题吗 我认为更好的方法是检查字典中的每个单词 看看是否可以从
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • 带路径压缩算法的加权 Quick-Union

    有一种 带路径压缩的加权快速联合 算法 代码 public class WeightedQU private int id private int iz public WeightedQU int N id new int N iz new
  • 快速约会算法

    我在一家咨询公司工作 大部分时间都在客户所在地 正因为如此 我很少见到同事 为了更好地了解彼此 我们将安排一个晚宴 会有很多小桌子 方便人们聊天 为了在聚会期间与尽可能多的不同的人交谈 每个人都必须每隔一段时间 比如每小时 换一张桌子 如何
  • jQuery 动画延迟

    如何使用 jQuery 延迟动画 我需要获得一个导航来扩大宽度 然后扩大高度 然后反转以获得反向动画 Code function nav li not logo nav li ul li hover function this animat
  • 如何检查是否存在可能的路径?

    我正在开发一个基于 javascript 的实验性游戏 玩家必须在二维平铺地图上移动才能退出 请随意检查这个小提琴并演奏 http jsfiddle net moonlife 74vLd 我只是随机放置障碍物 但有时障碍物会挡住玩家和出口之
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个

随机推荐

  • 是否可以同时使用JSP和PHP?

    一个函数是用Java编写的 而另一个函数的API是用PHP编写的 那么 JSP和PHP是否可以同时使用呢 我想说你可以打电话 来自您的Java代码 一种不同的进程来执行 PHP 脚本 然后在 Java 代码中使用该 PHP 脚本的输出 但这
  • 快速排序 - 使其稳定的条件

    如果排序算法保留具有 equals 键的任意两个元素的相对顺序 则该算法是稳定的 快速排序在什么条件下稳定 当没有项被传递时 快速排序是稳定的 除非它具有较小的键 还有哪些条件可以使其稳定 嗯 使用 O N 空间而不是就地不稳定实现使用的
  • 为什么函数体内定义的内置类型的未初始化对象具有未定义的值?

    问题 为什么定义内置类型的未初始化对象inside函数体具有未定义的值 而内置类型的对象已定义outside任何函数的初始化为0 or 举个例子 include
  • 如何将 Makefile 中的警告视为错误?

    是否可以将警告视为 Makefile 中的错误 从而在 Makefile 继续之前退出 此外 是否可以过滤掉哪个警告会产生错误 我的用例 我想使用 warn undefined variables与此结合 当变量未定义时 Makefile
  • 在 Bluehost 上部署 Ruby on Rails

    这里有人知道如何在 Bluehost 上部署 Ruby 应用程序吗 我对此有很大的问题 每次我将文件放入域名指向的文件夹中时 当我尝试访问该网站时 它总是会出现 403 错误 太痛苦了 这指示 https my bluehost com c
  • 在处理发生时动态刷新 JTextArea?

    我正在尝试创建一个非常简单的 Swing UI 当处理在后台进行时 该 UI 通过 JTextArea 将信息记录到屏幕上 当用户单击按钮时 我希望每次调用 textArea append someString n 立即显示在 UI 中 目
  • python 2.x 中的 textinput() 等效项

    我需要在 python 的海龟中接受用户的信息 但是 turtle textinput 函数仅适用于 3 x 及更高版本 我可以在 2 X 版本中使用替代方案吗 这是什么textinput实际上是 import tkSimpleDialog
  • Jetty - 设置系统属性[重复]

    这个问题在这里已经有答案了 我在 Jetty 上运行 webapp 应用程序的配置来自运行 Jetty 的同一服务器上的文件 在应用程序内部 我依靠系统属性来获取文件的路径 以便我可以解析它 例如 final String loc Syst
  • 如何在任何 Web 服务器(Apache 或 Mongrel 或任何其他服务器)中运行简单的 ruby​​ 脚本

    我觉得很有趣的是 当我搜索与 Ruby 相关的内容时 所有与 Ruby on Rails 相关的结果都会弹出 那么没人再使用原始红宝石了吗 然而 我是红宝石新手 今天早上我只是想在网络服务器中运行一个简单的 hello world ruby
  • 仅当 varchar 包含有效日期时,如何将其转换为日期?

    我正在寻找有关 SQL Server Management Studio 的我认为非常有用的信息 我有一个带有 type 列的表varchar存储日期 数字和字符串 这些日期以以下格式存储 dd mm aaaa 我有一个搜索匹配行的查询 一
  • 使用 Bash 脚本构建 SQL 更新语句

    对于最近的项目 我需要循环遍历 3 列的 csv ignore csv 行 acctnum errcode date 按此顺序 列命名在这里并不重要 它只是为了上下文 并使用这些变量来构建 SQL 语句 CSV 可能有 500 行 也可能有
  • android twitter outh教程回调问题

    尝试以下教程 http www androidsdkforum com android sdk development 3 oauth twitter html http www androidsdkforum com android sd
  • 如何将 Windows 窗体窗体的大小调整为小于 132x38? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 当我将无边框表单调整为较小的宽度和高
  • 填充滚动 Flex 容器的 100% 宽度

    我有一个水平滚动元素 overflow x scroll 与包含弹性项目的弹性容器 我正在尝试将背景应用于弹性容器 但正如您在下面的示例中看到的 尝试向左 向右滚动 背景仅应用于视口的可见部分 橙色 有没有什么方法可以将其扩展到全宽 而不必
  • 如何在创建多维数组后立即为其分配多个值 - 在 C 中?

    我正在用 C 进行编程 想知道是否可以一次将多个值分配给多维数组 我尝试过一些技术 但都失败了 我不感兴趣循环遍历数组来分配值 我想要快速的方式为数组中的所有索引分配新值 我正在使用的数组 ary 4 4 来自另一个的 memcpy 将覆盖
  • 有人在 php 5.6 上测试过 Codeigniter 2.2 吗?

    只是想知道 有人在 PHP 5 6 上测试过 CodeIgniter 应用程序吗 我们正在将服务器从 5 3 3 升级到 5 6 当前运行的是 CodeIgniter 2 2 这样可以吗 如果是 如果您发布反馈意见 我将非常感激您遇到了哪些
  • 无法访问 wp-admin

    我意识到这个问题过去曾出现过 但我一直无法找到解决我的问题的方法 我的 wp admin 在我的本地主机上工作正常 但是 当我迁移到实时服务器时 我无法再访问它 如果我确实访问 mysite wp admin 则会收到 404 错误 我尝试
  • cassandra 中 TTL 的最大值

    我们可以分配给 TTL 的最大值是多少 在 cassandra 的 java 驱动程序中 TTL 设置为 int 这是否意味着它仅限于 Integer MAX 2 147 483 647 秒 最大 TTL 实际上是 20 年 从org ap
  • as.Date() 不考虑 POSIXct 时区

    好吧 这里有一个微妙的 怪癖 在 r as Date 函数中从带有时区的 POSIXct 转换而来 我想知道这是否是一个错误 gt as POSIXct 2013 03 29 tz Europe London 1 2013 03 29 GM
  • 两个音频信号之间的时间延迟估计

    我有两个不同麦克风对同一信号进行的两段音频录音 例如 以 WAV 格式 但其中之一的录制有延迟 例如几秒钟 在某种波形查看器中查看这些信号时 很容易通过视觉识别这种延迟 即只需发现每个信号中的第一个可见峰值并确保它们具有相同的形状 sour