AVAudioConverter 的 channelMap 导致音调较低

AVAudioConverter's channelMap results in lower pitch

提问人:Leo 提问时间:9/2/2023 最后编辑:Leo 更新时间:9/4/2023 访问量:49

问:

我曾经在格式之间转换音频,我遇到了一个问题,即在特定条件下我的音频音调会变低。AVAudioConverter

输入格式为未压缩的双声道音频:

采样率: 48000.0 Hz, 通道: 2, 格式: int16, 交错, 非标准, AudioFormatID: kAudioFormatLinearPCM (1819304813), Settings: [“AVLinearPCMBitDepthKey”: 16, “AVFormatIDKey”: 1819304813, “AVLinearPCMIsNonInterleaved”: 0, “AVNumberOfChannelsKey”: 2, “AVSampleRateKey”: 48000, “AVLinearPCMIsFloatKey”: 0, “AVLinearPCMIsBigEndianKey”: 0]

输出格式为压缩双声道音频:

采样率: 48000.0 Hz, 通道: 2, 格式: 其他, 交错, 非标准, AudioFormatID: kAudioFormatMPEG4AAC (1633772320), Settings: [“AVSampleRateKey”: 48000, “AVFormatIDKey”: 1633772320, “AVNumberOfChannelsKey”: 2]

当我将转换器设置为对两个输出通道使用相同的输入通道时,生成的音频的音高会受到影响。这是我所看到的:channelMap

  • converter.channelMap = [0, -1]:听起来不错,但只有左耳音频
  • converter.channelMap = [-1, 1]:听起来不错,但只有右耳音频
  • converter.channelMap = [0, 0]:导致音调降低

有趣的是,当我将通道映射用于单声道输出格式时,它工作得很好。我的目标是对立体声格式做同样的事情。我需要保留两个输出通道,以防用户将通道映射更改为 [0, 1]。

在立体声中对两个输出通道使用相同的输入通道时,什么原因可能导致音高变化?

iOS Swift 音频 AVFOUNDATION Core-Audio

评论

0赞 soundflix 9/4/2023
音高变化是否发生在任何输入文件/信号上?
0赞 Leo 9/5/2023
是的,我从 iPhone 的麦克风获得输入
0赞 soundflix 9/6/2023
在转换之前,我会首先检查信号是否符合您的期望。“iOS 设备的内置麦克风输入由一系列物理麦克风和波束成形器组成”,您需要选择立体声作为“PolarPattern”。
3赞 soundflix 9/6/2023
也许你应该发布你的代码,否则它只是猜测..
0赞 fdcpp 9/6/2023
只是轻微的音高下降还是大约一半音高?(即,就像您选择的播放速度为 0.5 一样)

答: 暂无答案