我刚接触Core Audio,真的迷路了,我正试着录制一段音频,然后将语音调制应用于该录音并播放它。我已经看过使用Audio Queue进行音频录制的示例Speak。我被困在如何改变音频样本的部分。我知道可以使用回调函数中的音频单元来更改音频样本,但我不知道如何应用这些样本来更改它们(更改音高是否有帮助?)。
如果你能给我一些源代码或教程,或者任何解释objective C语音调制的网站,这对我真的很有帮助。提前感谢大家。
发布于 2010-08-30 15:03:10
您在这里要做的事情并不是那么简单。基本上,你必须实现一个声码器(“语音编码器”)来改变声音。在这一点上,Wikipedia links应该能帮到你。
然后,您仍然需要在CoreAudio中操作这些示例。您可以使用Audio Queue Services来实现这一点,但这并不是一个易于使用的API。实际上,使用更简单的CoreAudio API之一并将声码器包装在音频单元中可能会减少麻烦。
你有一些音频处理的经验吗?在没有一些关于音频处理的先验知识的情况下,实现声码器通常是一项艰巨的任务。
发布于 2010-12-02 04:47:24
首先,实际回答您的问题:当您调用AudioQueueNewInput()函数时,向它传递一个例程的名称,该例程将在每次有数据可用时被调用。您可能将其称为MyInputBufferHandler()或其他什么。它的第三个参数是一个保存传入数据的AudioQueueBufferRef。
请注意,这并不像查看每个样本(振幅)并降低或提高它那么简单。您可以在时间(时间)域中接收振幅形式的样本。没有可用的音高或频率信息。您需要做的是将输入样本(波形)移动到频域中,其中该空间中的每个“点”都是一个频率及其伴随的功率和相位。你可以用FFT (快速傅立叶变换)来做这件事,但是数学有点复杂。Apple确实在加速框架中提供了FFT例程,但请注意,在这里您正在涉足非常深的水。
https://stackoverflow.com/questions/3513634
复制相似问题