Требуется что-то похожее на это приложение
https://apps.apple.com/us/app/chatable-clear-conversation/id1494968908
Я пытаюсь передать звук со встроенного микрофона iPhone на bluetooth-гарнитуру, подключенную к тому же самому iPhone, в настоящее время я пытаюсь удачи, используя AVAudioEngine. Ниже приведен код, который я реализовал до сих пор
let audioEngine = AVAudioEngine()
func setupAudioEngine(){
// Configure the audio session for the app.
let audioSession = AVAudioSession.sharedInstance()
do{
try audioSession.setCategory(.record, mode: .spokenAudio, options: .mixWithOthers)}catch{}
do{try audioSession.setActive(true, options: .notifyOthersOnDeactivation)}catch{}
let inputNode = audioEngine.inputNode
let recordingFormat = inputNode.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer: AVAudioPCMBuffer, when: AVAudioTime) in
let data = self.audioBufferToNSData(PCMBuffer: buffer)
print(data.bytes)
*** PLAY THE AUDIO DATA SYNCHRONOUSLY HERE ***
}
audioEngine.prepare()
do{
try audioEngine.start()
}catch{}
}
func audioBufferToNSData(PCMBuffer: AVAudioPCMBuffer) -> NSData {
let channelCount = 1 // given PCMBuffer channel count is 1
let channels = UnsafeBufferPointer(start: PCMBuffer.floatChannelData, count: channelCount)
let data = NSData(bytes: channels[0], length:Int(PCMBuffer.frameLength * PCMBuffer.format.streamDescription.pointee.mBytesPerFrame))
return data
}
Я понятия не имею, можно ли достичь требуемого сценария с помощью вышеуказанных методов или нет, вот я получение аудиоданных, которые я сейчас пытаюсь воспроизвести.
ЕСЛИ описанный выше метод является правильным способом, мне сложно воспроизводить аудиоданные. И если есть какой-то другой способ добиться того же, любая помощь была бы замечательной .. !!!