36 lines
1.2 KiB
Swift
36 lines
1.2 KiB
Swift
import Foundation
|
|
import SstWhisper
|
|
|
|
func runTranscribeProbe() async {
|
|
print("Model laden (eerste keer: download ≈1.5 GB)…")
|
|
let transcriber = WhisperKitTranscriber()
|
|
do {
|
|
try await transcriber.load()
|
|
} catch {
|
|
print("mislukt:", error.localizedDescription)
|
|
return
|
|
}
|
|
print("Model klaar.")
|
|
for i in [3, 2, 1] {
|
|
print("\(i)...")
|
|
try? await Task.sleep(for: .seconds(1))
|
|
}
|
|
guard let samples = await recordSamples(seconds: 8) else { return }
|
|
let peak = samples.map { abs($0) }.max() ?? 0
|
|
print("samples: \(samples.count), piek: \(peak)")
|
|
let perSecond = stride(from: 0, to: samples.count, by: 16_000).map { start -> String in
|
|
let chunk = samples[start..<min(start + 16_000, samples.count)]
|
|
let rms = (chunk.reduce(0) { $0 + $1 * $1 } / Float(chunk.count)).squareRoot()
|
|
return String(format: "%.3f", rms)
|
|
}
|
|
print("RMS per seconde:", perSecond.joined(separator: " "))
|
|
do {
|
|
let started = Date.now
|
|
let text = try await transcriber.transcribe(samples)
|
|
let elapsed = Date.now.timeIntervalSince(started)
|
|
print(String(format: "(%.2f s) ", elapsed) + text)
|
|
} catch {
|
|
print("mislukt:", error.localizedDescription)
|
|
}
|
|
}
|