@@ -79,8 +79,15 @@ struct ParakeetSidecar {
7979 guard !trimmed. isEmpty else { continue }
8080
8181 do {
82- let data = trimmed. data ( using: . utf8) !
83- let json = try JSONSerialization . jsonObject ( with: data) as! [ String : Any ]
82+ guard let data = trimmed. data ( using: . utf8) else {
83+ sendError ( " invalid_encoding " , message: " Failed to parse command payload " , encoder: encoder)
84+ continue
85+ }
86+
87+ guard let json = try JSONSerialization . jsonObject ( with: data) as? [ String : Any ] else {
88+ sendError ( " invalid_payload " , message: " Command payload must be a JSON object " , encoder: encoder)
89+ continue
90+ }
8491
8592 switch json [ " type " ] as? String {
8693 case " load_model " , " download_model " :
@@ -153,8 +160,9 @@ struct ParakeetSidecar {
153160 isModelDownloaded = true
154161
155162 // Initialize ASR manager with downloaded models
156- asrManager = AsrManager ( config: . default)
157- try await asrManager!. initialize ( models: models)
163+ let manager = AsrManager ( config: . default)
164+ try await manager. initialize ( models: models)
165+ asrManager = manager
158166
159167 log ( " ✅ ASR manager initialized, model ready for use! " )
160168 isModelLoaded = true
@@ -216,9 +224,14 @@ struct ParakeetSidecar {
216224 return
217225 }
218226
227+ guard let manager = asrManager else {
228+ sendError ( " model_not_loaded " , message: " Parakeet engine is not initialized " , encoder: encoder)
229+ return
230+ }
231+
219232 do {
220233 // Transcribe the audio file (returns ASRResult)
221- let result = try await asrManager! . transcribe ( fileURL)
234+ let result = try await manager . transcribe ( fileURL)
222235
223236 // Send transcription response
224237 let response = TranscriptionResponse (
0 commit comments