Files
voicediary/VoiceDiary/Models/VoiceMemo.swift
Felix Förtsch dca03214b0 initial VoiceDiary iOS app setup
SwiftUI + SwiftData + iCloud, Apple Speech transcription (German),
audio recording, summarization service protocol (LLM-ready),
localization scaffolding (EN/DE/ES/FR), basic tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 22:57:41 +01:00

38 lines
970 B
Swift

import Foundation
import SwiftData
@Model
final class VoiceMemo {
var audioFileName: String
var transcript: String?
var isTranscribing: Bool
var duration: TimeInterval
var recordedAt: Date
var entry: DiaryEntry?
init(audioFileName: String, duration: TimeInterval) {
self.audioFileName = audioFileName
self.transcript = nil
self.isTranscribing = false
self.duration = duration
self.recordedAt = .now
}
var audioURL: URL {
Self.audioDirectory.appendingPathComponent(audioFileName)
}
var formattedDuration: String {
let minutes = Int(duration) / 60
let seconds = Int(duration) % 60
return String(format: "%d:%02d", minutes, seconds)
}
static var audioDirectory: URL {
let directory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
.appendingPathComponent("VoiceMemos", isDirectory: true)
try? FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true)
return directory
}
}