Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 89 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,89 @@
# talk-easy
# Talk Easy

100% on-device voice dictation for iPhone. Speak naturally, get clean formatted text.

## What It Does

Talk Easy captures your voice, transcribes it in real-time using Apple's SpeechAnalyzer, then cleans and formats the text using the on-device Foundation Models LLM. No servers, no API keys, no subscriptions. Everything stays on your device.

## Requirements

- iPhone 15 Pro or later (Apple Intelligence required)
- iOS 26.0+
- Xcode 26+

## Architecture

```
Layer 3: Apple Foundation Models (~3B on-device LLM)
Text cleanup, tone adaptation, context-aware formatting

Layer 2: SpeechAnalyzer (iOS 26)
Real-time streaming transcription, voice activity detection

Layer 1: AVAudioEngine + UIPasteboard
Microphone input, copy-to-clipboard, share sheet
```

## Project Structure

```
TalkEasy/
├── TalkEasyApp.swift App entry point, SwiftData setup
├── ContentView.swift Tab-based navigation
├── Models/
│ ├── DictationMode.swift SwiftData model for dictation modes
│ ├── DictationRecord.swift SwiftData model for history
│ ├── FormattingRules.swift Codable formatting configuration
│ └── VocabularyEntry.swift SwiftData model for learned vocabulary
├── Services/
│ ├── AudioEngineService.swift AVAudioEngine microphone capture
│ ├── ClipboardService.swift UIPasteboard operations
│ ├── SpeechRecognitionService.swift SpeechAnalyzer wrapper
│ └── TextProcessingService.swift Foundation Models LLM pipeline
├── ViewModels/
│ └── RecordingViewModel.swift Recording flow orchestrator
├── Views/
│ ├── ActionBar.swift Copy/Share/New action buttons
│ ├── HistoryView.swift Past dictations with search
│ ├── ModeEditorView.swift Create/edit dictation modes
│ ├── ModeSelector.swift Horizontal mode chip selector
│ ├── ModesView.swift Modes list management
│ ├── RecordButton.swift Animated record/stop button
│ ├── RecordingView.swift Main recording screen
│ ├── SettingsView.swift Permissions, privacy, data management
│ └── TranscriptView.swift Live transcript display
├── Utilities/
│ ├── DefaultModes.swift Built-in mode definitions
│ ├── HapticManager.swift Haptic feedback
│ ├── PermissionsManager.swift Mic + speech permissions
│ └── TextChunker.swift Text splitting for LLM token limits
└── Resources/
└── Assets.xcassets/ App icon, accent color
```

## Built-in Modes

- **General** — Clean prose, neutral tone
- **Text Message** — Casual, short, conversational
- **Email** — Professional with greeting/sign-off
- **Notes** — Concise bullet points
- **Social Media** — Engaging, hashtag-friendly
- **Technical** — Preserves jargon and code terms
- **Creative** — Minimal cleanup, preserves voice

## Tech Stack

| Component | Framework |
|-----------|-----------|
| Speech-to-Text | SpeechAnalyzer (iOS 26) |
| Text Processing | Foundation Models (~3B LLM) |
| Structured Output | @Generable guided generation |
| UI | SwiftUI |
| Data | SwiftData |
| Audio | AVAudioEngine |
| Language | Swift 6 |

## Bundle ID

`com.idlefusion.talkeasy`
Loading