Use 320ms streaming chunks and fix bundle ID

- Switch from 160ms to 320ms chunk size for better streaming accuracy
- Fix corrupted bundle identifier (was "--com.jakeshore.VoiceInk-com.jakeshore.VoiceInk")

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Jake Shore 2026-02-13 05:24:30 -05:00
parent de1c1e51aa
commit f6a613e8ef
2 changed files with 9 additions and 9 deletions

View File

@ -488,7 +488,7 @@
);
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 1.69;
PRODUCT_BUNDLE_IDENTIFIER = "--com.jakeshore.VoiceInk-com.jakeshore.VoiceInk";
PRODUCT_BUNDLE_IDENTIFIER = "com.jakeshore.VoiceInk";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG ENABLE_NATIVE_SPEECH_ANALYZER $(inherited)";
SWIFT_EMIT_LOC_STRINGS = YES;
@ -525,7 +525,7 @@
);
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 1.69;
PRODUCT_BUNDLE_IDENTIFIER = "--com.jakeshore.VoiceInk-com.jakeshore.VoiceInk";
PRODUCT_BUNDLE_IDENTIFIER = "com.jakeshore.VoiceInk";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "ENABLE_NATIVE_SPEECH_ANALYZER $(inherited)";
SWIFT_EMIT_LOC_STRINGS = YES;

View File

@ -141,7 +141,7 @@ class ParakeetTranscriptionService: TranscriptionService {
for: .applicationSupportDirectory, in: .userDomainMask
).first!
let appDirectory = applicationSupportURL.appendingPathComponent("FluidAudio", isDirectory: true)
return appDirectory.appendingPathComponent("Models/parakeet-eou-streaming/160ms", isDirectory: true)
return appDirectory.appendingPathComponent("Models/parakeet-eou-streaming/320ms", isDirectory: true)
}
/// Downloads EOU models if not already present
@ -150,10 +150,10 @@ class ParakeetTranscriptionService: TranscriptionService {
let encoderPath = modelsDir.appendingPathComponent("streaming_encoder.mlmodelc")
if !FileManager.default.fileExists(atPath: encoderPath.path) {
logger.notice("🎙️ Downloading Parakeet EOU 160ms models for streaming preview...")
logger.notice("🎙️ Downloading Parakeet EOU 320ms models for streaming preview...")
let baseDir = modelsDir.deletingLastPathComponent().deletingLastPathComponent()
try await DownloadUtils.downloadRepo(.parakeetEou160, to: baseDir)
logger.notice("🎙️ EOU 160ms models downloaded successfully")
try await DownloadUtils.downloadRepo(.parakeetEou320, to: baseDir)
logger.notice("🎙️ EOU 320ms models downloaded successfully")
}
return modelsDir
@ -172,10 +172,10 @@ class ParakeetTranscriptionService: TranscriptionService {
// Download EOU models if needed
let modelsDir = try await ensureEouModelsDownloaded()
// Create StreamingEouAsrManager with 160ms chunks for lowest latency preview
// In HYBRID mode: streaming is just for visual feedback, batch provides accuracy
// Create StreamingEouAsrManager with 320ms chunks for accuracy
// In HYBRID mode: streaming provides visual feedback, batch provides final accuracy
// EOU debounce of 1280ms means end-of-utterance detection after ~1.3s of silence
let manager = StreamingEouAsrManager(chunkSize: .ms160, eouDebounceMs: 1280)
let manager = StreamingEouAsrManager(chunkSize: .ms320, eouDebounceMs: 1280)
streamingEouManager = manager
// Load Parakeet EOU models