我是 Core Audio 的新手,真的迷路了,我正在尝试录制音频,然后对该录音应用语音调制并播放。我查看了使用音频队列进行音频录制的示例 Speak Here。我被困在如何更改音频样本的部分。我知道可以在回调函数中使用 Audio Unit 来更改音频样本,但我不知道应该对这些样本应用什么来更改它们(改变音高会有帮助吗?)。
如果您可以将我引导到一些源代码或教程或任何解释目标 C 语音调制的站点,将真的对我有帮助。谢谢大家。
我是 Core Audio 的新手,真的迷路了,我正在尝试录制音频,然后对该录音应用语音调制并播放。我查看了使用音频队列进行音频录制的示例 Speak Here。我被困在如何更改音频样本的部分。我知道可以在回调函数中使用 Audio Unit 来更改音频样本,但我不知道应该对这些样本应用什么来更改它们(改变音高会有帮助吗?)。
如果您可以将我引导到一些源代码或教程或任何解释目标 C 语音调制的站点,将真的对我有帮助。谢谢大家。
首先,要实际回答您的问题:当您调用 AudioQueueNewInput() 函数时,您将向其传递每次数据可用时将调用的例程名称。您可能将其称为 MyInputBufferHandler() 或其他名称。它的第三个参数是保存传入数据的 AudioQueueBufferRef。
请注意,这并不像查看每个样本(幅度)并降低或提高它那么简单。您接收时域(时间)域中的样本作为幅度。没有可用的音高或频率信息。您需要做的是将传入的样本(波形)移动到频域中,其中该空间中的每个“点”都是一个频率,并且伴随着功率和相位。您可以使用 FFT(快速傅立叶变换)来做到这一点,但数学有些复杂。Apple 确实在 Acceleration 框架中提供了 FFT 例程,但请注意,您在这里涉水非常深。