マイクから取り込んだオーディオをダウンサンプリングする際に問題が発生します。私は、次のコードで、マイクからサンプルを取るためにAVAudioEngineを使用しています:AVAudioEngineダウンサンプルの問題
assert(self.engine.inputNode != nil)
let input = self.engine.inputNode!
let audioFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 8000, channels: 1, interleaved: false)
let mixer = AVAudioMixerNode()
engine.attach(mixer)
engine.connect(input, to: mixer, format: input.inputFormat(forBus: 0))
do {
try engine.start()
mixer.installTap(onBus: 0, bufferSize: 1024, format: audioFormat, block: {
(buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in
//some code here
})
} catch let error {
print(error.localizedDescription)
}
マイク入力が8000Hzで、バッファは、マイクからのデータで埋めますので、このコードはiPhone 5Sに素晴らしい作品。
問題は、iPhone 6(以上)から16000Hzのマイクレコードを録音できるようにすることです。
engine.connect(mixer, to: mainMixer, format: audioFormat)
この実際には、動作し、私が手バッファは8000Hzと音のフォーマットが完全にダウンサンプリング出てきました。そして、私は(次のコードで)エンジンmainmixernodeとmixernodeを接続した場合といういただきまし奇妙です私が欲しくないスピーカーからも音が出てくるだけです(もし私が接続しなければ、バッファーは空です)。
誰でもこの問題を解決する方法を知っていますか?
ご意見、ご意見、ご感想をお待ちしております。
? –
かなり前に私はこのコードを書いていましたが、私はAVAudioEnginesメインミキサーノードであることを95%確信しています。 – nullforlife
このコードを使用すると、バッファにすべてゼロが与えられます。私が間違っていることを知っていますか?私は44100Hzのマイク入力サンプルレートを持つiPhone 7を使用しています。 –