Unified logging + fluidAudio's logging

This commit is contained in:
Beingpax 2025-10-08 11:30:50 +05:45
parent cba11cdc55
commit febd75cc39
12 changed files with 37 additions and 29 deletions

View File

@ -10,7 +10,7 @@ class ActiveWindowService: ObservableObject {
private var whisperState: WhisperState?
private let logger = Logger(
subsystem: "com.prakashjoshipax.VoiceInk",
subsystem: "com.prakashjoshipax.voiceink",
category: "browser.detection"
)

View File

@ -87,7 +87,7 @@ class BrowserURLService {
static let shared = BrowserURLService()
private let logger = Logger(
subsystem: "com.prakashjoshipax.VoiceInk",
subsystem: "com.prakashjoshipax.voiceink",
category: "browser.applescript"
)

View File

@ -9,7 +9,7 @@ enum EnhancementPrompt {
}
class AIEnhancementService: ObservableObject {
private let logger = Logger(subsystem: "com.voiceink.enhancement", category: "AIEnhancementService")
private let logger = Logger(subsystem: "com.prakashjoshipax.voiceink", category: "AIEnhancementService")
@Published var isEnhancementEnabled: Bool {
didSet {

View File

@ -2,7 +2,7 @@ import Foundation
import os
class DeepgramTranscriptionService {
private let logger = Logger(subsystem: "com.voiceink.transcription", category: "DeepgramService")
private let logger = Logger(subsystem: "com.prakashjoshipax.voiceink", category: "DeepgramService")
func transcribe(audioURL: URL, model: any TranscriptionModel) async throws -> String {
let config = try getAPIConfig(for: model)

View File

@ -2,7 +2,7 @@ import Foundation
import os
class GeminiTranscriptionService {
private let logger = Logger(subsystem: "com.voiceink.transcription", category: "GeminiService")
private let logger = Logger(subsystem: "com.prakashjoshipax.voiceink", category: "GeminiService")
func transcribe(audioURL: URL, model: any TranscriptionModel) async throws -> String {
let config = try getAPIConfig(for: model)

View File

@ -2,7 +2,7 @@ import Foundation
import os
class GroqTranscriptionService {
private let logger = Logger(subsystem: "com.voiceink.transcription", category: "GroqService")
private let logger = Logger(subsystem: "com.prakashjoshipax.voiceink", category: "GroqService")
func transcribe(audioURL: URL, model: any TranscriptionModel) async throws -> String {
let config = try getAPIConfig(for: model)

View File

@ -2,7 +2,7 @@ import Foundation
import os
class OpenAICompatibleTranscriptionService {
private let logger = Logger(subsystem: "com.voiceink.transcription", category: "OpenAICompatibleService")
private let logger = Logger(subsystem: "com.prakashjoshipax.voiceink", category: "OpenAICompatibleService")
func transcribe(audioURL: URL, model: CustomCloudModel) async throws -> String {
let config = APIConfig(

View File

@ -8,7 +8,7 @@ class ParakeetTranscriptionService: TranscriptionService {
private var asrManager: AsrManager?
private var vadManager: VadManager?
private let customModelsDirectory: URL?
private let logger = Logger(subsystem: "com.voiceink.app", category: "ParakeetTranscriptionService")
private let logger = Logger(subsystem: "com.prakashjoshipax.voiceink.parakeet", category: "ParakeetTranscriptionService")
init(customModelsDirectory: URL? = nil) {
self.customModelsDirectory = customModelsDirectory
@ -16,20 +16,25 @@ class ParakeetTranscriptionService: TranscriptionService {
func loadModel() async throws {
guard asrManager == nil else {
logger.notice("🦜 Parakeet models already loaded, skipping")
return
}
guard let customModelsDirectory else {
throw ASRError.modelLoadFailed
}
let manager = AsrManager(config: .default)
let models = try await AsrModels.load(from: customModelsDirectory)
try await manager.initialize(models: models)
self.asrManager = manager
logger.notice("🦜 Parakeet ASR models loaded successfully")
}
let models: AsrModels
if let customModelsDirectory = customModelsDirectory {
models = try await AsrModels.load(from: customModelsDirectory)
} else {
// Fallback to FluidAudio's default directory
logger.notice("🦜 Loading Parakeet models from FluidAudio default directory")
models = try await AsrModels.downloadAndLoad()
}
try await manager.initialize(models: models)
self.asrManager = manager
}
func transcribe(audioURL: URL, model: any TranscriptionModel) async throws -> String {
try await loadModel()
@ -73,7 +78,7 @@ class ParakeetTranscriptionService: TranscriptionService {
}
}
let result = try await asrManager.transcribe(speechAudio, source: .system)
let result = try await asrManager.transcribe(speechAudio)
logger.notice("🦜 Parakeet transcription result: \(result.text)")
@ -100,10 +105,9 @@ class ParakeetTranscriptionService: TranscriptionService {
}
}
func cleanup() {
asrManager?.cleanup()
asrManager = nil
vadManager = nil
logger.notice("🦜 Parakeet ASR models cleaned up from memory")
func cleanup() {
asrManager?.cleanup()
asrManager = nil
vadManager = nil
}
}
}

View File

@ -3,7 +3,7 @@ import os
class PromptDetectionService {
private let logger = Logger(
subsystem: "com.prakashjoshipax.VoiceInk",
subsystem: "com.prakashjoshipax.voiceink",
category: "promptdetection"
)

View File

@ -8,7 +8,7 @@ class ScreenCaptureService: ObservableObject {
@Published var lastCapturedText: String?
private let logger = Logger(
subsystem: "com.prakashjoshipax.VoiceInk",
subsystem: "com.prakashjoshipax.voiceink",
category: "aienhancement"
)

View File

@ -18,7 +18,7 @@ fileprivate typealias WhisperVADSegments = OpaquePointer
class VoiceActivityDetector {
private var vadContext: WhisperVADContext
private let logger = Logger(subsystem: "com.voiceink.app", category: "VoiceActivityDetector")
private let logger = Logger(subsystem: "com.prakashjoshipax.voiceink", category: "VoiceActivityDetector")
init?(modelPath: String) {
var contextParams = whisper_vad_default_context_params()

View File

@ -4,6 +4,7 @@ import Sparkle
import AppKit
import OSLog
import AppIntents
import FluidAudio
@main
struct VoiceInkApp: App {
@ -27,6 +28,9 @@ struct VoiceInkApp: App {
private let transcriptionAutoCleanupService = TranscriptionAutoCleanupService.shared
init() {
// Configure FluidAudio logging subsystem
AppLogger.defaultSubsystem = "com.prakashjoshipax.voiceink.parakeet"
do {
let schema = Schema([
Transcription.self