32 lines
No EOL
1.1 KiB
Swift
32 lines
No EOL
1.1 KiB
Swift
import Foundation
|
|
import CoreUtils
|
|
|
|
public protocol STTEngine {
|
|
func transcribe(audioData: Data, language: String?) async throws -> String
|
|
func isModelLoaded() -> Bool
|
|
func loadModel(at path: URL) async throws
|
|
func unloadModel()
|
|
}
|
|
|
|
public enum STTError: Error, LocalizedError {
|
|
case modelNotFound
|
|
case modelLoadFailed(String)
|
|
case transcriptionFailed(String)
|
|
case unsupportedFormat
|
|
case invalidAudioData
|
|
|
|
public var errorDescription: String? {
|
|
switch self {
|
|
case .modelNotFound:
|
|
return NSLocalizedString("error.model.not_found", comment: "Model not found error")
|
|
case .modelLoadFailed(let reason):
|
|
return NSLocalizedString("error.model.load_failed", comment: "Model load failed error") + ": \(reason)"
|
|
case .transcriptionFailed(let reason):
|
|
return NSLocalizedString("error.transcription.failed", comment: "Transcription failed error") + ": \(reason)"
|
|
case .unsupportedFormat:
|
|
return "Unsupported audio format"
|
|
case .invalidAudioData:
|
|
return "Invalid audio data"
|
|
}
|
|
}
|
|
} |