问题标签 [sample-rate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
55933 浏览

mp3 - 如何将任何 mp3 文件转换为 .wav 16khz mono 16bit

请帮助选择将任何 mp3 文件转换为特殊 .wav 的解决方案 - 我是 Linux 命令行工具的新手,所以现在对我来说很难。

我需要从任何 mp3 文件中获取具有 16khz 单声道 16 位声音属性的 wav。我在尝试

ffmpeg -i 111.mp3 -ab 16k out.wav,

但我得到的 wav 与 mp3 (22k) 的速率相同。

请帮助构建正确的命令行

0 投票
1 回答
897 浏览

ios - 采样率改变后声音失真

这个让我保持清醒:
我有一个 OS X 音频应用程序,如果用户更改设备的当前采样率,它必须做出反应。
为此,我在“kAudioDevicePropertyNominalSampleRate”上为输入和输出设备注册了一个回调。
因此,如果其中一个设备的采样率发生变化,我会收到回调并在设备上设置新的采样率,并将“AudioObjectSetPropertyData”和“kAudioDevicePropertyNominalSampleRate”作为选择器。
苹果邮件列表中提到了接下来的步骤,我遵循了它们:

  • 停止输入 AudioUnit 和由混音器和输出 AudioUnit 组成的 AUGraph
  • 取消初始化它们。
  • 检查节点数,越过它们并使用 AUGraphDisconnectNodeInput 断开混音器与输出的连接
  • 现在在输入单元的输出范围上设置新的采样率
  • 以及混音器单元的输入和输出范围
  • 将混音器节点重新连接到输出单元
  • 更新图表
  • 初始化输入和图形
  • 开始输入和图表

渲染和输出回调重新开始,但现在音频失真了。我相信是输入渲染回调负责信号,但我不确定。
我忘记了什么?
据我所知,采样率不会影响缓冲区大小。
如果我以其他采样率开始我的应用程序,一切都很好,这是导致信号失真的变化。
我看前后的流格式(kAudioUnitProperty_StreamFormat)。除了采样率当然会更改为新值之外,一切都保持不变。

正如我所说,我认为需要更改的是输入渲染回调。我是否必须通知回调需要更多样本?我检查了 44k 和 48k 的回调和缓冲区大小,没有什么不同。

我写了一个小测试应用程序,所以如果你想让我提供代码,我可以给你看。

编辑:我录制了失真的音频(正弦)并在 Audacity 中查看了它。
我发现,每 495 个样本后,音频会下降 17 个样本。我想你知道这是怎么回事:495 个样本 + 17 个样本 = 512 个样本。这是我设备的缓冲区大小。
但我仍然不知道我能用这个发现做什么。
我检查了我的输入和输出渲染过程以及它们对 RingBuffer 的访问(我使用的是固定版本的 CARingBuffer)
两者都存储和获取 512 帧,所以这里什么都没有......

0 投票
3 回答
70328 浏览

audio - 如何计算音频文件大小?

您有 30 秒的音频文件以 44.1 KHz 的速率采样并使用 8 位进行量化;计算此文件的单声道和立体声版本的比特率和大小 ؟؟

0 投票
2 回答
1071 浏览

audio - 如何将采样率频率除以 10 个频段以进行均衡

如何将采样率频率除以 10 个频段以进行均衡。例如,我有 44100 赫兹和每个样本 1 个字节的音频 pcm。我如何了解哪个样本与指定波段相关。以及如何将样本划分为波段。

你能给我解释或链接。

0 投票
1 回答
132 浏览

android - 采样率不起作用

我有这条线

其中 logTime = 300000000 微秒 = 5 分钟。

我正在尝试每 5 分钟记录一次,但通过此设置,它每秒左右记录一次。你知道什么可能是错的或如何解决这个问题吗?

我的经理是 SensorManager。

BR

0 投票
0 回答
836 浏览

macos - Unity 无法更改 Mac OS X 中扬声器的采样率

我正在开发一个项目,其中一些音频数据需要在 Unity 4 中播放。输入数据的采样率为 24000 Hz(24kHz),通常系统中扬声器的默认采样率为 44100(44.1kHz)。在 Windows 中,我可以使用 AudioSettings.outputSampleRate = 24000; 毫无问题地更改此设备的采样率。但我发现在 Mac OS 中这是不可能的。即使我更改了它,如果我打印该值,我仍然得到 44100。有时我什至收到一条错误消息:

尝试从未存储在磁盘上的磁盘重新加载资产

所以我怀疑 Mac OS 禁止用户在用户的应用程序中更改这个值。

根据这里的描述:http: //docs.unity3d.com/Documentation/ScriptReference/AudioSource.Play.html

我试图在 AudioSource.Play 中设置延迟值来解决它。由于 44100/24000*24000 = 44100,我所做的是:

但是运气不好,几乎一半的音频数据没有播放。有人遇到和我一样的问题吗?你的解决方案是什么?OnAudioFilterRead 以哪种方式播放?或 FixedUpdate + SetData?

非常感谢!!

0 投票
5 回答
2684 浏览

algorithm - 如何检测这些音频异常?

iOS 在通过某些 USB 音频设备进行录制时出现问题。它无法可靠地再现(在大约 2000-3000 条记录中每 1 条发生一次,然后默默地消失),我们目前手动检查我们的音频是否存在任何录制问题。它会导致少量样本(1-20)被移动一小部分,这听起来像是一种“噼啪声”。

它们看起来像这样:

异常波形

更接近:

在此处输入图像描述

更接近:

在此处输入图像描述

同一音频文件中其他地方的另一个单一样本错误:

在此处输入图像描述

问题是,如何在算法上检测到这些(假设直接访问样本),同时不会在具有如下波形的高频音频上触发误报:

在此处输入图像描述

加分项:在确定尽可能多的错误后,如何“修复”音频?

更多奖励点:iOS USB 音频驱动程序/硬件中可能导致此问题的原因(假设存在)。

0 投票
1 回答
484 浏览

android - 检查设备支持的 PCM 采样率

我想检查设备是否支持特定的采样率。

我已经尝试了以下(它应该根据http://developer.android.com/reference/android/media/AudioRecord.html#getMinBufferSize(int , int, int) 工作)但没有(它永远不会得到AudioRecord。 ERROR_BAD_VALUE):

0 投票
1 回答
1798 浏览

algorithm - 使用具有不同采样率的多个传感器的粒子过滤器

现在的情况:

我已经为室内定位系统实现了一个粒子过滤器。它使用磁场的指纹。粒子过滤器的实现非常简单:

  1. 我创建了均匀分布在整个区域的所有粒子
  2. 每个粒子都有一个速度(高斯分布,“正常”步行速度的平均值)和一个方向(均匀分布在所有方向上)
  3. 改变速度和方向(均为高斯分布)
  4. 在给定方向上移动所有粒子的速度乘以上一次和当前测量的时间差
  5. 找到每个粒子最近的指纹
  6. 通过比较最接近的指纹和给定的测量值来计算每个粒子的新权重
  7. 标准化
  8. 重采样
  9. 每次测量重复 #3 到 #9

问题:

现在我想做基本相同的事情,但在系统中添加另一个传感器(即 WiFi 测量)。如果测量值同时出现,就不会有问题。然后我只计算第一个传感器的概率并将其乘以第二个传感器的概率,得到我在#6 处的粒子重量。

但磁场传感器的采样率非常高(约 100 Hz),WiFi 测量值大约每秒出现一次。

我不知道处理这个问题的最佳方法是什么。

可能的解决方案:

  1. 我可以丢弃(或平均)所有磁场测量值,直到出现 WiFi 测量值,然后将最后一次磁场测量值(或平均值)和 WiFi 信号一起使用。所以基本上我将磁场传感器的采样率降低到 WiFi 传感器的采样率
  2. 对于每次磁场测量,我使用最后一次看到的 WiFi 测量
  3. 我使用分离的传感器。这意味着如果我测量一个传感器,我会执行所有步骤 #3 到 #9,而不使用另一个传感器的任何测量数据
  4. 我没有考虑过的任何其他解决方案;)

我不确定哪个是最好的解决方案。所有的解决方案似乎都不是很好。

对于#1,我会说我正在丢失信息。虽然我不确定为粒子滤波器使用大约 100 Hz 的采样率是否有意义。

在#2,我必须假设 WiFi 信号不会很快出现,这是我无法证明的。

如果我单独使用传感器,则磁场测量变得比 WiFi 测量更重要,因为所有步骤都将使用磁性数据发生 100 次,直到出现一次 WiFi 测量。

你知道处理这个问题的好论文吗?

是否已经有一个标准解决方案来处理粒子过滤器中具有不同样本大小的多个传感器?

100 Hz 的样本大小有意义吗?或者粒子过滤器的一个步骤的适当时间差是多少?

非常感谢您提供任何提示或解决方案:)

0 投票
1 回答
544 浏览

matlab - 为什么 MATLAB 在尝试采集数据时会更改采样率?

我正在使用带有 Data Acquisition 工具箱的 Matlab 32 位 DataQ 采集设备。

有时,当我将采样率设置为 300 时,它会告诉我:

警告:此硬件不支持 SampleRate 的请求值 300。SampleRate 已设置为 1000"

但是,如果我将 SampleRate 设置为 1000,它有时会将其设置回 300 并显示相同的错误消息。

此外,如果我设置程序以便在显示错误并且设备开始记录后返回 SampleRate,这始终是我设置的任何值,而不是程序声称将其更改为的值。

任何人都知道我如何找出实际的采样率是多少或阻止它重置我的?我需要知道每秒有多少样本以进行进一步计算。