- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个使用低级 OpenSL ES 编写的带有移动音频客户端的应用程序,以实现麦克风的低延迟输入。比我们向服务器发送封装在 UDP 数据报中的 10ms 帧。
在服务器上,我们正在做一些后期处理,这在很大程度上取决于来自移动客户端的帧以固定间隔(例如每帧 10 毫秒)出现的假设,因此我们可以对齐它们。
手机内部晶体频率似乎变化很大,正因为如此,我们在开始时得到了完美的对齐,但几分钟后对齐不佳。
我知道,Linux 上的 ALSA 可以告诉你晶体的确切频率——所以你可以根据这个来纠正你的计数。不幸的是,我不知道如何在 Android 中获取这些信息。
谢谢帮助
最佳答案
您面临的问题的本质是您在具有不同本地振荡器的不同系统上拥有一个 ADC 和一个 DAC。您可能正在根据第三个(也可能是第四个)CPU 时钟来计时您的数据包。
这个问题的正确解决方案是某种clock recovery算法。要正确执行此操作,您需要一些准确时间戳(例如,位精度)传输数据包的方法,然后使用 PLL 来驱动接收器采样时钟的时钟速率。这正是 IEEE1394 音频和 MPEG2 传输流使用的方法。
由于可能无法执行这些操作,因此您的方法很可能涉及定期丢弃或重复样本(甚至整个数据包),以防止接收缓冲区不足或溢出。
USB 音频同样缺乏对时钟恢复的硬件支持,并且那里使用的方法可能适用于您的情况。
依靠网络数据包的发送和接收时间是一个可怕的想法。交货时间的抖动是可怕的——尤其是在使用 Wifi 或蜂窝连接的情况下。建议您完全不要依赖它,而是像 IEEE1394 音频和 MPEG 2 TS 那样做,即使用模型 FIFO 将音频数据传输与消耗分离,其中数据以恒定速率消耗并以不可靠的时间包形式交付给它。
至于 ALSA,它所能做的(除非有准确的外部时序引用)就是测量音频接口(interface)的采样时钟和 CPU 时钟之间的漂移。这不会产生任何东西的“确切频率”,因为这两个振荡器都不可能是准确的,并且两者都可能随温度而漂移。
关于Android OpenSL ES 晶振频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17532520/
我有一个包含 34 个变量和大约 25,000 个观测值的数据集。每个观察都涉及一个特定事件。它的格式如下: no id date .... 1 363 006
我已将 R 连接到 Twitter 并使用 R 中的 searchTwitter 函数进行抓取,并清除标点符号、小写字母等结果数据。现在我正在尝试执行以下操作: 计算自 2015 年 1 月 至 20
我正在研究项目,需要可视化频谱分析以设置一些精确参数。现在,我将垃圾箱转换为屏幕空间,因为在线性空间中,较低频率的幅度被压缩在一起。这是我在C++中的代码: float windowSize = 64
我正在尝试使用MATLAB导入WAV文件并创建如下所示的图表类型。我基本上是在尝试获取频率信息并根据分贝对其进行绘制。这是我正在使用的代码,但似乎无法正确提取频率信息: [x fs]=wavread(
我有一个 GUI,可以计算字符串中第一个字母的出现次数。我希望它以列格式计算所有字母,例如: 这是我到目前为止所拥有的: import java.awt.BorderLayout; import ja
我有一个由许多变量组成的全国调查,就像这个(为了简单起见,我省略了一些变量): year id y.b sex income married pens weight 2002
我被要求报告我们客户的联系频率,即每周、每月、每季度或每年看到多少客户。 当在论坛中讨论“频率”时,它们通常是指某个值在表中存在的次数。 我可以获得客户的联系人数量:- select A.cl
我正在尝试制作一款游戏,当麦克风发出足够响亮的声音时,我的角色会射击(在 Unity 中)。但是我不知道如何开始。 感谢您的帮助! 最佳答案 您可以通过使用 AudioSource.GetOutput
尝试计算字符数并改进我的代码,我做了一些更改,而不是使用 while 循环。好奇是否有人对我如何改进我的代码以使其更专业且更便宜有任何建议? #include int countingCharact
我正在创建一个 MySQL 数据库,其中包含大量带有时间戳的条目。这些条目将附加到特定用户和另一个索引(例如博客作者和他的几个网站)。计算用户/全局每日条目图表的最佳方法是什么。 我的两种方法是使用
我创建了一项调查并将其发送出去。该调查要求用户提供电子邮件,然后要求他们从包含 8 个不同选项的下拉菜单中选择要吃哪顿饭。有些人使用同一封电子邮件多次填写调查,但食物选择不同。 我有一个如下所示的 M
我有一个 MySQL 数据库: Date Customer_ID 我怎样才能把它变成: Customer_ID | Count_Visits_Past_Week | Count_Visits_
对于非常大的数据集,如何使用 gnuplot 仅在第一个和最后一个数据点的 x 轴上放置标记/标签? 最佳答案 在 gnuplot 4.6 及更高版本中,您可以使用命令 stats 'data.dat
我正在寻找一种方法来为具有共同词根/含义的单个词生成数值概率值。 用户将使用“舞者”、“跳舞”、“跳舞”等词生成内容。 如果“dancer”被提交了 30 次,跳舞了 5 次,我只需要一个值“danc
给定一个包含如下内容的数据集: [2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75, 85, 86, 87,
我想将声音的音高绘制成图表。 目前我可以绘制幅度。下图是由 getUnscaledAmplitude() 返回的数据创建的: AudioInputStream audioInputStream = A
在 Javascript 中,我试图获取一个初始的数值数组并计算其中的元素。理想情况下,结果将是两个新数组,第一个指定每个唯一元素,第二个包含每个元素出现的次数。不过,我愿意接受有关输出格式的建议。
我正在编写一个多线程OpenMPI应用程序,使用来自多个线程的MPI_Isend和MPI_Irecv在InfiniBand RDMA的各个列之间每秒交换数百条消息。 传输量约为400-800KByte
这个站点上有很多问题,询问如何在给定频率下创建简单的正弦波。我想做的是获取阵列或列表或任何频率,然后连续连续播放它们(而不是和弦),听起来有点像旧PC扬声器。我尝试使用Console.Beep,但是它
我使用我的App捕获声音。假设此声音是正弦1 KHz声音,并且存在背景声音。如何识别此1 KHz声音出现在声音上? 我的意思是,我可以想象如何在图像中找到元素,例如,如果您要在图像上寻找黄色正方形,那
我是一名优秀的程序员,十分优秀!