草庐IT

AvaudioEngine

全部标签

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

我正在尝试对我正在使用AVAudioEngine图播放的mp3文件的原始PCM样本进行一些计算。我每44100个样本就有一个闭包,提供AVAudioPCMBuffer.它有一个属性channelData类型UnsafePointer>?.我没有在Swift3中使用过指针,所以我不清楚如何访问这些Float值。我有下面的代码但是有很多问题:audioPlayerNode.installTap(onBus:0,bufferSize:1024,format:audioPlayerNode.outputFormat(forBus:0)){(pcmBuffer,time)inletnumChan

ios - 在 iOS Swift 中捕获具有特定采样率的音频样本,例如 Android

我是在IOS中使用声音和AVAudioEngine的初学者,我正在开发一个应用程序来捕获音频样本作为缓冲区并对其进行分析。此外,采样率必须为8000kHz,并且还必须编码为PCM16Bit,但AVAudioEngine中的默认inputNode为44.1kHz。在Android中,这个过程非常简单:AudioRecordaudioRecord=newAudioRecord(MediaRecorder.AudioSource.MIC,8000,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT,bufferSize);然后

ios - AVAudioEngine.connect 上的 CoreAudio 错误和崩溃

我正在尝试将AVAudioUnitEffect连接到AVAudioEngine的实例,如下所示:requiredinit(inputFormat:AVAudioFormat,outputFormat:AVAudioFormat,andAVAudioEngineavAudioEngine:AVAudioEngine){self.inputFormat=inputFormatself.outputFormat=outputFormatself.avAudioEngine=avAudioEngineself.myAudioUnit=MyAVAudioUnit()super.init()avA

swift - 带有 AVAudioConverterInputBlock 的 AVAudioConverter 在处理后会出现断断续续的音频

我正在尝试将音频缓冲区转换为不同的格式,并且我正在使用AVAudioConverter。当您具有相同的采样率并且您不需要使用AVAudioConverterInputBlock时,AVAudioConverter会完成这项工作。但如果我处理相同的采样率,我的音频数据就会出现奇怪的断断续续。我有一种感觉,我没有很好地处理输入block。输出有重复两到三遍的单词。以下是完整的方法:funcsendAudio(audioFile:URL,completionHandler:@escaping(Bool,Bool,Data?)->Void){createSession(){sessionUrl

ios - 建立一个简单的均衡器

我想使用AVAudioEngine制作一个5频段音频均衡器(60Hz、230Hz、910Hz、4kHz、14kHz)。我想让用户通过垂直slider输入每个频段的增益,并相应地调整正在播放的音频。我尝试使用AVAudioUnitEQ来执行此操作,但在播放音频时我听不出有什么不同。我尝试对值进行硬编码以指定每个频率的增益,但它仍然不起作用。这是我的代码:varaudioEngine:AVAudioEngine=AVAudioEngine()varequalizer:AVAudioUnitEQ!varaudioPlayerNode:AVAudioPlayerNode=AVAudioPlay

ios - AVAudioConverter float32/48khz -> int16/16khz 转换失败

此方法处理来自AVAudioEngine输入节点上installTap的回调。我已确认我正在获取单声道float32/48000hz缓冲区数据,我想将其转换为单声道int16/16000hz。varconverter:AVAudioConverter?=nilvarconvertBuffer:AVAudioPCMBuffer?=nillettargetFormat=AVAudioFormat(commonFormat:AVAudioCommonFormat.pcmFormatInt16,sampleRate:16000,channels:1,interleaved:false)func

SWIFT - 是否可以从 AVAudioEngine 或 AudioPlayerNode 保存音频?如果是,如何?

我一直在查看Swift文档以保存AVAudioEngine的音频输出,但我找不到任何有用的提示。有什么建议吗?解决方案由于马特的回答,我找到了解决方法。这是一个示例代码,说明如何在通过AVAudioEngine传递音频后保存音频(我认为从技术上讲它是之前)newAudio=AVAudioFile(forWriting:newAudio.url,settings:nil,error:NSErrorPointer())//Yournewfileonwhichyouwanttosavesomechangedaudio,andpreparedtobebufferdinsomenewdata..

ios - 重启录音时 AVAudioEngine inputNode installTap 崩溃

我正在我的应用中实现语音识别。当我第一次向ViewController展示语音识别逻辑时,一切正常。但是,当我再次尝试呈现ViewController时,出现以下崩溃:ERROR:[0x190bf000]>avae>AVAudioNode.mm:568:CreateRecordingTap:requiredconditionisfalse:IsFormatSampleRateAndChannelCountValid(format)***Terminatingappduetouncaughtexception'com.apple.coreaudio.avfaudio',reason:'r

ios - 重启录音时 AVAudioEngine inputNode installTap 崩溃

我正在我的应用中实现语音识别。当我第一次向ViewController展示语音识别逻辑时,一切正常。但是,当我再次尝试呈现ViewController时,出现以下崩溃:ERROR:[0x190bf000]>avae>AVAudioNode.mm:568:CreateRecordingTap:requiredconditionisfalse:IsFormatSampleRateAndChannelCountValid(format)***Terminatingappduetouncaughtexception'com.apple.coreaudio.avfaudio',reason:'r

ios - AVAudioPCMBuffer 的频谱图在 Swift 中使用 Accelerate 框架

我正在尝试从AVAudioPCMBuffer生成频谱图在swift。我在AVAudioMixerNode上安装了水龙头并接收带有音频缓冲区的回调。我想将缓冲区中的信号转换为[Float:Float]字典,其中键代表频率,值代表相应频率上的音频幅度。我尝试使用Apple的Accelerate框架,但我得到的结果似乎很可疑。我确定这只是我转换信号的方式。我看了thisblogpost除其他外,供引用。这是我的:self.audioEngine.mainMixerNode.installTapOnBus(0,bufferSize:1024,format:nil,block:{buffer,w