diff --git a/ios/Classes/SwiftFlutterTtsPlugin.swift b/ios/Classes/SwiftFlutterTtsPlugin.swift index 3387b34..baa590a 100644 --- a/ios/Classes/SwiftFlutterTtsPlugin.swift +++ b/ios/Classes/SwiftFlutterTtsPlugin.swift @@ -193,19 +193,25 @@ public class SwiftFlutterTtsPlugin: NSObject, FlutterPlugin, AVSpeechSynthesizer let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent(fileName) NSLog("Saving utterance to file: \(fileURL.absoluteString)") - if output == nil { - do { - output = try AVAudioFile( - forWriting: fileURL, - settings: pcmBuffer.format.settings, - commonFormat: .pcmFormatInt16, - interleaved: false) - } catch { - NSLog(error.localizedDescription) + if output == nil { + do { + if #available(iOS 17.0, *) { + guard let audioFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: Double(22050), channels: 1, interleaved: false) else { + NSLog("Error creating audio format for iOS 17+") failed = true return + } + output = try AVAudioFile(forWriting: fileURL, settings: audioFormat.settings) + } else { + output = try AVAudioFile(forWriting: fileURL, settings: pcmBuffer.format.settings, commonFormat: .pcmFormatInt16, interleaved: false) } + } catch { + NSLog("Error creating AVAudioFile: \(error.localizedDescription)") + failed = true + return } + } + try! output!.write(from: pcmBuffer) }