【问题标题】:External clock source with usb audio device in iOSiOS 中带有 USB 音频设备的外部时钟源
【发布时间】:2016-10-20 08:48:52
【问题描述】:

我的应用使用带有非常精确的热补偿石英振荡器 (TCXO) 的外部 USB 麦克风。采样率为 48KHz。 我通过相机套件连接器将其插入 iOS。 我正在使用 EZAudio 库,一切正常,只是 iOS 似乎保留了自己的内部时钟源进行音频采样,而不是我准确的 48KHz。

我阅读了有关 CoreAudio 的所有文档,但在使用闪电音频时没有找到任何与时钟源相关的内容。

有没有办法在内部或外部时钟源之间进行选择?

谢谢!

var audioFormatIn = AudioStreamBasicDescription(mSampleRate: Float64(48000),
                                                mFormatID: AudioFormatID(kAudioFormatLinearPCM),
                                                mFormatFlags: AudioFormatFlags(kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked),
                                                mBytesPerPacket: 2,
                                                mFramesPerPacket: 1,
                                                mBytesPerFrame: 2,
                                                mChannelsPerFrame: 1,
                                                mBitsPerChannel: 16,
                                                mReserved: 0)

func initAudio()
{       
    let session : AVAudioSession = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
        try session.setMode(AVAudioSessionModeMeasurement)
        try session.setActive(true)
    }
    catch {
        print("Error Audio")
    }
    self.microphone = EZMicrophone(microphoneDelegate: self, withAudioStreamBasicDescription: audioFormatIn)
}

更新: 感谢@Rhythmic Fistman,设置首选采样率部分解决了这个问题。不再从 iOS 重新采样,TCXO 仍然是主时钟源。 但是信号现在很快被缓冲区中的空样本破坏了。这个问题随着录音长度越来越严重。当然,因为我需要Lightning端口来插硬件,所以我很难轻松调试!

7分钟后的波形截图:

15分钟后的波形截图:

【问题讨论】:

    标签: ios audio usb core-audio ezaudio


    【解决方案1】:

    在激活之前将音频会话的首选采样率设置为 48kHz 是否有帮助?

    session.setPreferredSampleRate(48000)
    

    我不知道它是否会对时钟源产生任何影响,或者它是否会影响输入(或输出)采样率,但值得一试。

    【讨论】:

    • 我刚刚尝试过(因为它没有在 EZAudio 中实现)但不幸的是它不起作用。
    • 因为我显然能够将采样率设置为低于我的 48KHz,这确实意味着 iOS 会重新采样传入的音频数据,这绝对是我想要避免的。
    • 在设置麦克风之前session.sampleRate 会报告什么?你能通过EZMicrophone 看看inputFormat 发生了什么github.com/syedhali/EZAudio/blob/master/EZAudio/… 吗?
    • 我对 GPS 时间戳信号进行了更深入的测试。事实上,'setPreferredSampleRate' 解决了我的问题。我的第一条评论是错误的。但是现在我遇到了另一个问题:信号很快就被缓冲区中的空样本破坏了,而且变得越来越糟。这真的很奇怪。
    • 您正在录制到文件吗?你能显示损坏波形的屏幕截图吗?您是指卫星意义上的 GPS 吗?
    猜你喜欢
    • 2023-03-14
    • 2012-10-04
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2011-02-23
    相关资源
    最近更新 更多