问题描述
我在 Mac OS X 应用程序中使用谷歌语音转文本。在所有低于 11.0 的 Mac OS 中,它的工作正常。但是在 Apple Silicon Mac 中,当我启动 Google Speech to Text 时,它会在扬声器中产生一些噪音。我在苹果网站上读到我们需要为 Apple Silicon 移植音频代码。在我的代码中,audiobufferlist 使用的是 Core Audio,它必须迁移到其他不使用核心音频系列的地方。
var callbackStruct = AURenderCallbackStruct()
callbackStruct.inputProc = recordingCallback
callbackStruct.inputProcRefCon = nil//UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque())
status = AudioUnitSetProperty(inputUnit,//neh - remoteIoUnit
kAudioOutputUnitProperty_SetInputCallback,kAudioUnitScope_Global,bus1,&callbackStruct,UInt32(MemoryLayout<AURenderCallbackStruct>.size));
if (status != noErr) {
return status
}
func recordingCallback(
inRefCon:UnsafeMutableRawPointer,ioActionFlags:UnsafeMutablePointer<AudioUnitRenderActionFlags>,inTimeStamp:UnsafePointer<AudioTimeStamp>,inBusNumber:UInt32,inNumberFrames:UInt32,ioData:UnsafeMutablePointer<audiobufferlist>?) -> Osstatus {
var status = noErr
let channelCount : UInt32 = 1
var bufferList = audiobufferlist()
bufferList.mNumberBuffers = channelCount
let buffers = UnsafeMutableBufferPointer<AudioBuffer>(start: &bufferList.mBuffers,count: Int(bufferList.mNumberBuffers))
buffers[0].mNumberChannels = 1
buffers[0].mDataByteSize = inNumberFrames * 2
buffers[0].mData = nil
// get the recorded samples
status = AudioUnitRender(AudioController.sharedInstance.audioEngine.inputNode.audioUnit!,//neh - remoteIoUnit
ioActionFlags,inTimeStamp,inBusNumber,inNumberFrames,UnsafeMutablePointer<audiobufferlist>(&bufferList))
if (status != noErr) {
return status;
}
let data = Data(bytes: buffers[0].mData!,count: Int(buffers[0].mDataByteSize))
dispatchQueue.main.async {
AudioController.sharedInstance.delegate.processSampleData(data)
}
return noErr
}
所以我的问题是什么相当于这段代码?哪个从现场录音中生成音频缓冲区?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)