问题标签 [avaudiopcmbuffer]

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 投票
0 回答
249 浏览

objective-c - 如何保存改变音高的音频?

我正在录制声音,然后更改音频的音高并保存。我在录制语音后调用此方法并单击按钮更改音高然后新文件也被创建但无法收听音频生成的音频没有语音可能是什么错误?

}

0 投票
2 回答
2259 浏览

ios - 关于从 AVAudioPCMBuffer 中提取声压级

我对信号处理几乎一无所知,目前我正在尝试在 Swift 中实现一个函数,当声压级增加时(例如,当人类尖叫时)触发一个事件。

我正在使用这样的回调进入 AVAudioEngine 的输入节点:

将其转换为浮点数组后,我尝试通过计算平均值来粗略估计声压级。

但这给了我很多波动的值,即使 iPad 只是坐在一个安静的房间里:

如果我在麦克风附近拍手,这个值确实会显着增加。

所以我可以做一些事情,比如在准备阶段首先计算这些体积的平均值,然后比较在事件触发阶段差异是否显着增加:

其中 averageVolume 在从准备阶段到触发事件阶段的过渡期间计算:meanVolume = volumeSum / Float(volumeCount)

……

但是,如果我在麦克风之外播放响亮的音乐,似乎没有显着增加。并且在极少数情况下,即使在环境没有显着增加的情况下(人耳可以听到),它的音量也会volume更大。meanVolume

那么从 AVAudioPCMBuffer 中提取声压级的正确方法是什么?

维基百科给出了这样的公式

math!

p 为均方根声压,p0 为参考声压。

但我不知道浮点值AVAudioPCMBuffer.floatChannelData代表什么。苹果页面只说

缓冲区的音频样本作为浮点值。

我应该如何与他们合作?

0 投票
2 回答
797 浏览

swift - Swift 3:获取 AVAudioPCMBuffer 的长度作为 TimeInterval?

我想做的只是标题所说的,但我似乎做不到。我尝试执行以下操作:

但这给出了一个巨大的数字,这似乎不是我所追求的。我已经尝试寻找答案,但似乎没有人问这个问题,所以我可能遗漏了一些明显的东西。有人知道吗?

编辑:我将代码更改为:

这似乎有效,但似乎有点复杂。还有其他方法吗?

0 投票
1 回答
1369 浏览

ios - Swift:如何在中断时停止调用 scheduleBuffer 完成处理程序?

我有一个 AVAudioPlayerNode ,我正在使用以下内容安排大量缓冲区:

但我有一点问题。如果我播放另一个缓冲区以中断当前正在播放的缓冲区,则仍在调用缓冲区被中断的完成处理程序。我想这是有道理的,但我似乎无法找到一种方法来检查文件是否真正完成播放或是否被中断。有没有办法我可以做到这一点?

任何答案都会有所帮助!

0 投票
1 回答
1645 浏览

swift - 不安全可变指针到 UnsafeMutablePointer<_>

我真的为一个愚蠢且看似简单的问题而发疯......我必须将 a 转换DataAVAudioPCMBuffer.

看着这个问题似乎很容易,但是 Swift 3 改变了一切。这种被诅咒的语言不断变化(抱歉爆发)!

我有这段代码

但是最后一行给了我这个错误:

有人可以解决这个问题吗?

0 投票
0 回答
263 浏览

ios - AVAudioPCMBuffer 被压缩了吗?如果不是怎么压缩呢?

我正在使用 AVAudioEngine 录制音频。代码如下所示:

我对生成的 audioPCMBuffer 的问题是,它被压缩了吗?如果没有,如何使用 AVAudioConverter 进行压缩?

另外,我发现生成的audioFile必须有后缀“.aac”。这是否意味着它已经被压缩了?

谢谢!

0 投票
1 回答
1904 浏览

swift - 访问 AVAudioPCMBuffer 的浮点样本进行处理

我正在尝试对我正在使用 AVAudioEngine 图播放的 mp3 文件的原始 PCM 样本进行一些计算。我每 44100 个样本都有一个闭包,提供AVAudioPCMBuffer. 它有一个channelData类型的属性UnsafePointer<UnsafeMutablePointer<Float>>?。我没有在 Swift 3 中使用过指针,所以我不清楚如何访问这些 Float 值。

我有以下代码,但有很多问题:

例如,我如何遍历作为浮点指针的UnsafeMutablePointer<Floats,其中缓冲区中的通道数是多少。我在此类的 Apple Docs 中找不到有关访问缓冲区样本的讨论。NN

我认为主要问题是let samples = chans[a]。Xcode 说chans是 type UnsafeMutablePointer<Float>。但这应该是这些指针的 N​​umChannels 价值。这就是为什么我用a in 0..<numChans它来下标。然而,Float当我这样做时,我得到了。

编辑:

嗯,似乎使用chans.advanced(by: a)而不是下标固定的东西

0 投票
1 回答
760 浏览

swift3 - 通过麦克风查找平均语音频率/范围(AVAudioPCMBuffer 和 FFT)

我试图找出一个人对着麦克风说话时声音的平均频率或范围。它不必是实时的。到目前为止,我的方法是使用 AVAudioEngine 和 AVAudioPCMBuffer,获取缓冲区数据并将其转换为 FFT。

我想我正在返回正确的 FFT 数据,打印如下所示:

在此处输入图像描述

然而,这不可能是正确的赫兹。是我说话,平均男性声音的范围是 85 到 180 Hz。我只是不确定从这里去哪里。

目标是找到用户通过麦克风讲话时的频率平均值或范围。非常感谢您的帮助!!!

0 投票
1 回答
637 浏览

ios - 监听 AVAudioPCMBuffer

我已经实现installTap了方法,它为我提供了音频缓冲区浮点样本。我已经通过我的 C++ DSP 库过滤了它们。我想将此缓冲区“发送”到耳机/扬声器。我AVAudioPCMBuffer又从样品中做了一次。有谁知道该怎么做?

代码:

谢谢

0 投票
1 回答
567 浏览

swift - AVAudioPlayerNode 多声道音频控制

我已经成功地用来AVAudioPlayerNode播放立体声和单声道文件。我想使用具有 3 个以上通道的文件(环绕文件),并且能够以非线性方式路由音频。例如,我可以将文件通道 0 分配给输出通道 2,将文件通道 4 分配给输出通道 1。

音频接口的输出数量是未知的(2-40),这就是为什么我需要能够允许用户按照他们认为合适的方式路由音频。WWDC 2015 507中让用户在 Audio Midi Setup 中更改路由的解决方案不是可行的解决方案。

我能想到的只有一种可能性(我对其他人持开放态度):每个频道创建一个播放器,并为每个播放器加载一个频道的缓冲区,类似于这篇文章。但即使通过海报承认,也存在问题。

所以我正在寻找一种将文件的每个通道复制到 AudioBuffer 中的方法,例如: