31f5937a7f
Reduce extension memory pressure and delivery races while adding richer candidates, tactile feedback, and safer two-level creative polishing.
29 lines
759 B
Swift
29 lines
759 B
Swift
// ASRChunkTranscribing.swift
|
|
// OSGKeyboard · Shared
|
|
//
|
|
// Minimal ASR surface for pipelined utterance chunking. Keeps
|
|
// `ChunkedUtterancePipeline` independent of iOS-only `SpeechAnalyzer`.
|
|
|
|
import Foundation
|
|
#if canImport(OSGKeyboardShared)
|
|
import OSGKeyboardShared
|
|
#endif
|
|
|
|
public enum ASRChunkResult: Sendable, Equatable {
|
|
case success(String)
|
|
case failure(String)
|
|
case cancelled
|
|
}
|
|
|
|
/// One-shot chunk transcription used by `ChunkedUtterancePipeline`.
|
|
public protocol ASRChunkTranscribing: Sendable {
|
|
func transcribeChunk(samples: [Float], locale: Locale) async -> ASRChunkResult
|
|
func cancel()
|
|
func resetForNewUtterance()
|
|
}
|
|
|
|
extension ASRChunkTranscribing {
|
|
public func cancel() {}
|
|
public func resetForNewUtterance() {}
|
|
}
|