问题标签 [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 回答
3076 浏览

macos - 在 AUHAL 上设置采样率

我正在使用音频单元框架在 mac os x 上开发一个 VOIP 应用程序。在我的程序中,我设置了一个输入 AUHAL 并使用默认的流格式(44.1kHz,32bit/channel)从麦克风捕获音频。在这种情况下,我的程序运行良好。

这是代码:

由于我正在开发一个 VOIP 应用程序,默认格式(44.1kHz,32bits/Channel)不适合我的程序,所以我想将采样率更改为 8kHz。我编写了这段代码来更改程序中的格式:

在这种情况下,程序运行良好,直到我的程序调用AudioUnitRender回调函数中的 它无法使用文档中AudioUnitRender的错误代码-10876调用 kAudioUnitErr_NoConnection。错误代码让我很困惑,所以我用谷歌搜索了它,但找不到任何有用的信息。有人可以告诉我错误的实际含义吗?

这还没有结束,我通过这段代码再次更改了格式:

在这种情况下,程序AudioUnitRender再次调用失败并返回另一个错误代码-10863(kAudioUnitErr_CannotDoInCurrentContext)。我用谷歌搜索了它,但我发现 了一些有用的东西。阅读那里的信息后,我猜我在 AUHAL 上设置的采样率或格式可能不受硬件支持。

所以我写了一些代码来检查默认输入设备上的可用采样率:

然后我发现可用的采样率是 8000、16000、32000、44100、48000、88200 和 96000。

8000的采样率是我刚才设置的,但是调用得到错误码AudioUnitRender,我只想说,为什么?

google了这么多,也看了很多文档,都没有得到答案,有没有人能解决我遇到的这个问题?</p>

换句话说; 如何在仅输入的 AUHAL 上更改采样率或格式?</p>

0 投票
1 回答
1512 浏览

c++ - 从 44100 到 96000 Hz 的音频上采样和线性插值

我正在尝试将 44100 Hz 上采样到 96000 Hz,我已经尝试过了。

mOffset 是一个双精度值,包含递增的步进因子以在 44100 Hz 样本文件中移动并使其变为 96000 Hz。这个线性插值取自两个已知点的 Wiki Linear Interpolation但这并没有给我想要的结果,这听起来很糟糕。

我在这里用错了吗,或者如果这不是使用它的方法,我应该用这个公式做什么?

问候,摩根

0 投票
2 回答
2782 浏览

matlab - 匹配两组具有不同记录开始时间和结束时间的测量数据

问题

我有两个数组(XaXb),它们包含相同物理信号的测量值,但它们是以不同的采样率进行的。最后,Xa数据的物理记录开始于与Xb不同的时间。数据的记录也会在不同的时间停止。

IE

(以下只是重要语句的总结,不是代码。)

客观的

找到最能排列这些数据集的索引的必要变化。

方法

使用fmincon查找最小化版本XaXb之间的均方误差 (MSE)的索引,这些版本被编辑为具有相同的采样率(可能使用插值函数)。

我曾尝试过这样做,但似乎我总是有太多的自由度。有没有人可以阐明可能促进该过程的过程?

0 投票
2 回答
1644 浏览

algorithm - 采样率变化之间的音频淡出功能

我正在尝试创建一个简单的函数,该函数将在每次通过缓冲区迭代时降低缓冲区中的音频音量(如淡出)。这是我的简单功能。

当设置为 44100 kHz 采样率时,这可以正常工作,但我遇到的问题是,如果示例将采样率更改为 88200 kHz,它应该每次只将音量降低一半,因为采样率是两倍,并且会否则在中场休息时结束“淡出”,我尝试使用像 44100 / 88200 = 0.5 这样的因子,但这不会以任何方式使它成为一半。

我被这个简单的问题困住了,需要一个指南来引导我完成,如果在程序期间更改了采样率,我该怎么做才能在每次迭代中使它成为半步,因为这个函数会被调用?

问候,摩根

0 投票
1 回答
293 浏览

signal-processing - 为什么 NAudio ReadOnly 中 WaveFormat 类中的属性 SampleRate 是只读的?

在 NAudio 中使用 signalGenerator 时,我尝试更改 sampleRate。但是是只读的,有理由吗?
我可以毫不费力地覆盖它吗?

0 投票
2 回答
8112 浏览

android - Android - 录音 - 采样率

我为 android 开发了一个游戏,它使用 Audio Record 来获取麦克风输入。

你可以看看https://play.google.com/store/apps/details?id=fixappmedia.micro

问题是我正在使用以下函数来获取手机上可用的采样率:

我最初在我的手机(Samsung Galaxy Vibrant)上对其进行了测试,效果很好……但今天我在三星 Galaxy Ace 上对其进行了测试,但采样率不起作用……

关于为什么的任何想法?

0 投票
0 回答
1481 浏览

audio - 使用 LibAV API (libavresample) 进行采样率和格式转换

我正在编写一个代码,它将合并多个音频(具有不同格式)并创建一个音频。当我将编码器sample_ratesample_fmt设置为与输入视频相同时,合并音频没有问题。但是很明显,所有输入音频格式都与输出格式不同,所以我必须进行格式转换。我尝试为此目的使用“avresample”,但是当输入和输出的sample_ratesample_fmt不同时,无法对输出帧进行编码。

它可以手动手动完成(通过样本丢弃、插值等),但由于 libav 提供了一个转换 api,我认为这可以(并且可能应该为了整洁)自动完成。

这是我设置编码器和重新采样上下文参数的方式:

这是我读取和编码帧的方式

似乎我无法正确使用 avresample,但我不知道如何解决这个问题。任何帮助将不胜感激。

0 投票
0 回答
250 浏览

audio - USB 音频混乱 - 可能的数据速率是多少?

我是 USB 开发的新手,我对什么数据速率是现实的感到很困惑。

我正在尝试开发连接在 AVR32 处理器上的外部声卡,它支持 USB 全速(12 Mb/s)。我将使用 USB 音频类 1 将音频数据发送到 PC。我需要将 24 位、48kHz、2 通道作为输入发送到计算机,还需要从计算机发送 24 位、48kHz、1 通道输出。双向流式传输。

这给了我一个数据速率:24 位 * 48kHz * 3 个通道 = 3,5 Mb/s,这应该可以通过使用 USB 全速来实现吗?

我知道音频类通过同步传输发送数据,但我对在一帧中可以进行多少事务(例如 IN = 256 字节)感到困惑?根据 USB 规范(http://www.usb.org/developers/docs/usb20_docs/#usb20spec -> 表 5-4),每帧似乎可以发送多个事务?

是否可以在一帧内同时发送 IN 和 OUT 数据包?

提前致谢!

0 投票
2 回答
400 浏览

c# - 如何通过 Windows API 设置 .wav 文件的位深度?(C#)

mciSendString()我正在使用API 函数从我的麦克风录制声音。我的代码与此链接中编写的代码非常相似:http: //blog.hansentech.com/mhblog_2011_02_26.html

不幸的是,当我收听输出记录时(我将输出保存在 .wav 文件中),我可以听到干扰收听记录本身的噪音。

我在互联网上搜索了这个问题,我发现了这个问题,这个问题过去在这个网站上被问过。(链接:流式音频中的降噪和压缩)从这个链接中,我了解到问题在于位深度(8 位)。我也明白了,如果我将位深改为16位,问题应该就解决了。

有人知道如何通过 API 函数更改记录的位深度吗?哪个功能可以完成这项工作?

0 投票
2 回答
848 浏览

javascript - 发布工作草案时,网络音频 api 会更改采样率吗?

我尝试使用网络音频 API 和 js 开发一个基于谐波检测的简单吉他调音器。 https://github.com/lontafara/El-audio-en-la-web

我一直使用 48000 Hz 的采样率。允许我在频域中有一些分辨率。但是,每当发布 Web Audio API 的工作草案时,该值会自动更改为 44100 一段时间。

我在 12 月 13 日的版本中第一次意识到,现在是 4 月 25 日。

.samplerate 属性是一个只读常量,我无法更改它。

我的问题是,我可以继续使用 48000 的采样率,还是必须更改为 44100?这种变化是暂时的吗,因为上周的默认采样率仍然是 48000?

谢谢!!!