如何解决当使用谷歌语音到文本时,音频移植到苹果芯片
我在 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 举报,一经查实,本站将立刻删除。