我想用AVAudioEngine和用户麦克风录制一些audio。 我已经有一个工作示例,但只是无法弄清楚如何指定我想要的输出格式… 我的要求是,我需要AVAudioPCMBuffer因为我现在正在说话… 我需要添加一个单独的节点,做一些转码? 我找不到有关这个问题的很多文档/样本。 而Audio-Stuff也是一个小菜鸟。 我知道我希望NSData包含PCM-16bit最高采样率16000(8000会更好) 这是我的工作示例: private var audioEngine = AVAudioEngine() func startRecording() { let format = audioEngine.inputNode!.inputFormatForBus(bus) audioEngine.inputNode!.installTapOnBus(bus, bufferSize: 1024, format: format) { (buffer: AVAudioPCMBuffer, time:AVAudioTime) -> Void in let audioFormat = PCMBuffer.format print("\(audioFormat)") } audioEngine.prepare() do { try audioEngine.start() } catch { /* Imagine some super awesome error handling here */ […]
例如,在iOS SDK下载页面上,有示例代码; 我正在使用计算器应用程序(iPhoneUnitTests)。 我想知道是否可以轻松地将声音添加到已经构build的应用程序的button上。
我已经创build了一个应用程序,logging和播放声音,我正在寻找一种方式来显示logging声音的简单波形表示,没有animation是必要的,只是一个简单的graphics。 这也将是很好的,有可能select一个波的一个子集,并且更好地演奏该部分。 总结一下,我在找什么: 一种以graphics方式将录制的声音表示为波形的方式(例如,如在大胆中所见) 一种用graphics方式select波形表示的子集的方法。 并进一步澄清我所寻找的东西: 如果有这样的lib我会疯狂快乐:) 提示哪些组件最适合处理graphics绘制。 提示如何处理graphics组件中的select。
有没有人下载EchoPrint演示iOS版本? 这是一个audio指纹开源软件。 我只是下载它,但似乎缺less框架…任何地方得到一个function的版本?
我有问题与iOS应用程序访问Library/Sounds目录中的文件。 我的iOS应用程序在主应用程序包中提供了不同的声音文件。 我写了一些代码,将选定的文件复制到Library/Sounds目录。 它在这个目录中总是有相同的名字( foo.caf )。 这样我就可以切换到不同的推送通知声音。 如果我这样做,第一次一切正常。 但是,如果我切换到另一个应用程序,我收到推送通知没有声音了。 此外,默认声音不播放。 但奇怪的是,如果我重新启动iPhone,我收到新的推送通知,我得到新select的声音.. iOS有一些caching或其他的东西,我必须先重置? 或者这是一个iOS的错误? 编辑: 我已经写了一个小的演示项目来重现这个问题。 它可以在: 源代码: https : //github.com/patricks/PushNotificationSoundSwitch/releases Git Repo: https : //github.com/patricks/PushNotificationSoundSwitch 自述文件: https : //github.com/patricks/PushNotificationSoundSwitch/blob/master/README.md
当我使用属性时收到以下错误 AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareSampleRate,&size, &myAudioDescription.mSampleRate) 上述语句产生的错误是 Error Domain=NSOSStatusErrorDomain Code=560557673 "The operation couldn't be completed. (OSStatus error 560557673.)" 现在,这里560557673是什么意思,我在哪里可以find它的解释? 文档只提供NSOSStatusErrorDomain作为错误之一。
我在后台使用AVAudioPlayer播放音乐。 问题是:如果有传入的呼叫中断播放器,它将永远不会恢复,除非切换到前景并手动执行。 代码很简单,在后台播放: [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil]; [[AVAudioSession sharedInstance] setActive: YES error: nil]; url = [[NSURL alloc] initFileURLWithPath:…]; audio_player = [[AVAudioPlayer alloc] initWithContentsOfURL: url error:NULL]; audio_player.delegate = self; bool ret = [audio_player play]; 委托来处理中断: -(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player { //tried this, not working [[AVAudioSession sharedInstance] setActive: NO error: nil]; NSLog(@"– interrupted –"); } //———– THIS […]
我想知道是否有人知道如何在iOS上执行两个audio信号之间的互相关 。 我想将我在接收器(我接收来自麦克风的信号)上获得的FFT窗口与发射器(它正在播放音轨)中的FFT窗口alignment,即确保每个窗口的第一个样本除了“同步”期间)发射机也将是接收机的第一个窗口。 我在每个传输的audio块中注入一个已知的波形(在频域中)。 我想通过已知波形和接收信号之间的互相关(通过几个连续的块)来估计延迟,但我不知道该怎么做。 看起来好像有vDSP_convD的方法来做,但我不知道如何使用它,以及我是否首先必须执行样本的真正的FFT(可能是的,因为我必须通过double [])。 void vDSP_convD ( const double __vDSP_signal[], vDSP_Stride __vDSP_signalStride, const double __vDSP_filter[], vDSP_Stride __vDSP_strideFilter, double __vDSP_result[], vDSP_Stride __vDSP_strideResult, vDSP_Length __vDSP_lenResult, vDSP_Length __vDSP_lenFilter )
问题陈述: 我在我的应用程序中存储了一系列以.m4a文件(AAC格式,48 KHz,16位)存储的声音效果,我希望以各种速度和音高播放,而无需预先生成所有变体文件。 虽然AVAudioPlayer对象的AVAudioPlayer属性可以改变播放速度,但它始终保持原始音高,这不是我想要的。 相反,我只是想要更快或更慢地播放声音样本,并使音高向上或向下匹配 – 就像加速或减慢旧式的卷轴式磁带录音机一样。 换句话说,我需要一些方法来改变audio采样率,如+2个半音(快12%),-5个半音(慢33%),+ 12个半音(快两倍)等等。 题: 有什么方法从AVAudioPlayer对象中获取线性PCMaudio数据,使用不同的iOS框架应用采样率转换,并将生成的audio数据填充到新的AVAudioPlayer对象中,然后可以正常播放? 可能的途径: 我正在读AudioConverterConvertComplexBuffer 。 特别是kAudioConverterSampleRateConverterComplexity_Mastering , kAudioConverterQuality_Max和AudioConverterFillComplexBuffer()引起了我的注意。 所以看起来这个audio转换框架是可能的。 这是我应该进一步探索的途径吗? 要求: 我其实不需要立即开始播放。 如果采样率转换稍微延迟,那没问题。 我所有的样品都是4秒或更less,所以我想可以快速进行任何即时重采样,大约在1/10秒或更短。 (尽pipe如此,超过1/2将会太多。) 如果有更简单的方法来使用iOS提供的转换框架,我真的宁愿不进入OpenAL或Core Audio等重量级的东西。 但是,如果使用OpenAL或Core Audio的这个问题有一个简单的解决scheme,我很乐意考虑这个问题。 我所说的“简单”是指可以用50-100行代码实现的东西,并且不需要启动额外的线程将数据传送到声音设备。 我宁愿将所有的东西都自动处理 – 这就是为什么我愿意在播放前转换audio剪辑。 我想在这里避免任何第三方库,因为这不是火箭科学,我知道它本来可以在iOS框架下实现。 再次,我需要一起调整音高和播放速度,而不是分开 。 所以,如果播放速度减慢了2倍,人声就会变得非常深沉而缓慢。 如果播放速度加快2-3倍,人声就像一个快速通话的花栗鼠。 换句话说,我绝对不希望在保持audio持续时间不变的情况下改变音调,因为当向上弯曲音高超过几个半音时,该操作导致不希望的“细小”的声音。 我只是想加快整个过程,把音调作为一个自然的副作用,就像老式的录音机以前那样。 需要在iOS 6或更高版本上工作,但iOS 5支持将是一个不错的奖励。
我正在学习核心audio。 出于某种原因,处理graphics的声音只能通过弱耳机扬声器(当您将设备固定在耳朵上)播放,而不能通过iPhone的常规扬声器。 这是设置audio会话的代码,但是我看不到configurationaudio路由的位置: – (void) setupAudioSession { AVAudioSession *mySession = [AVAudioSession sharedInstance]; // Specify that this object is the delegate of the audio session, so that // this object's endInterruption method will be invoked when needed. [mySession setDelegate: self]; // Assign the Playback category to the audio session. NSError *audioSessionError = nil; [mySession setCategory: AVAudioSessionCategoryPlayAndRecord//AVAudioSessionCategoryPlayback […]