blitztext-app-linux/BlitztextMac/Services/TranscriptionQualityService.swift
2026-05-23 07:28:46 +02:00

36 lines
1.0 KiB
Swift

import Foundation
enum TranscriptionQualityService {
static let minimumRecordingDuration: TimeInterval = 0.3
static func shouldRejectRecording(duration: TimeInterval) -> Bool {
duration < minimumRecordingDuration
}
static func cleanedTranscript(_ text: String) -> String {
text.trimmingCharacters(in: .whitespacesAndNewlines)
}
static func isLikelyArtifact(_ text: String, recordingDuration: TimeInterval) -> Bool {
let cleaned = cleanedTranscript(text)
guard !cleaned.isEmpty else { return true }
let words = cleaned.split { $0.isWhitespace || $0.isNewline }
let letters = cleaned.unicodeScalars.filter { CharacterSet.letters.contains($0) }.count
if letters == 0 {
return true
}
if recordingDuration < 0.55 && (words.count >= 5 || cleaned.count >= 32) {
return true
}
if recordingDuration < 0.8 && cleaned.count >= 56 {
return true
}
return false
}
}