A simple, elegant voice-to-text note-taking app for iOS that lets you quickly capture thoughts through speech and save them for later reference.
- ๐๏ธ Voice Recording - Tap the large microphone button to start/stop recording
- ๐ฃ๏ธ Speech-to-Text - Automatic transcription using Apple's Speech Recognition framework
- ๐พ Local Storage - Notes are saved securely on your device using SwiftData
- ๐ Notes Library - View all your saved notes sorted by most recent first
- ๐ Note Preview - See the first 2-3 lines of each note in the list
- โฐ Smart Timestamps - Relative time display (e.g., "2 hours ago", "Yesterday")
- Clean, Minimal UI - Focus on what matters: recording and reviewing notes
- Simple Workflow - Record โ Review โ Save or Redo
- No Distractions - No real-time transcription display while recording
- Native iOS Design - Follows Apple's Human Interface Guidelines
- iPad Support - Universal app works on both iPhone and iPad
Note: Add screenshots here showing:
- Main recording screen with microphone button
- Transcribed text with Save/Redo buttons
- Notes list view with timestamps
- Full note detail view
- Language: Swift 5.0
- UI Framework: SwiftUI
- Persistence: SwiftData
- Speech Recognition: Apple Speech Framework
- Audio Processing: AVFoundation
- Minimum iOS Version: iOS 17.5+
- Supported Devices: iPhone, iPad
- Xcode 15.4 or later
- iOS 17.5+ (Simulator or Device)
- macOS 14.0+ (for development)
- Apple Developer Account (for device testing)
-
Clone the repository
git clone https://github.com/yourusername/VTNotes.git cd VTNotes -
Open in Xcode
open VTNotes.xcodeproj
-
Build and Run
- Select a simulator or connected device
- Press
Cmd + Ror click the Run button - Grant microphone and speech recognition permissions when prompted
- Launch the app
- Grant permissions for:
- Microphone Access - Required to record audio
- Speech Recognition - Required to convert speech to text
- Tap the microphone button to start recording
- Speak your note
- Tap again to stop
- Review the transcription and tap Save or Redo
- Open the app to see the large blue microphone button
- Tap the button - it turns red to indicate recording
- Speak clearly into your device's microphone
- Tap the button again to stop recording
- Wait ~0.5 seconds for transcription to appear
After recording stops, you'll see:
- Full transcribed text in a scrollable view
- Redo button (orange) - Clear and record again if transcription is incorrect
- Save button (green) - Save the note to your library
- Tap the list icon (๐) in the top-right corner
- Browse your notes sorted by newest first
- Each note shows:
- First 2-3 lines of text
- Relative timestamp
- Tap any note to view the full content
- View complete note text (scrollable)
- See full creation date and time
- Text is selectable for copying
- Use back button to return to list
VTNotes/
โโโ VTNotesApp.swift # App entry point + SwiftData configuration
โโโ ContentView.swift # Main recording screen
โโโ NotesListView.swift # Notes library with list view
โโโ NoteDetailView.swift # Full note view
โโโ Note.swift # SwiftData model
โโโ VoiceRecorderViewModel.swift # Speech recognition & audio logic
โโโ Assets.xcassets/ # App icons and assets
- VoiceRecorderViewModel: Handles audio recording, speech recognition, and state management
- SwiftData Integration: Automatic persistence with type-safe queries
- Navigation: Clean NavigationStack-based navigation between screens
- Async Audio Processing: Background transcription with completion handlers
The app requires two permissions:
-
Microphone Access (
NSMicrophoneUsageDescription)- "VTNotes needs access to your microphone to record voice notes."
-
Speech Recognition (
NSSpeechRecognitionUsageDescription)- "VTNotes needs access to speech recognition to convert your voice to text."
All notes are stored locally on your device using SwiftData. No data is sent to external servers.
- Simplicity First: Minimal UI with focus on core functionality
- Native Experience: Follows iOS design patterns and conventions
- Accessibility: Uses system fonts and supports dynamic type
- Performance: Efficient database queries with automatic lazy loading
- Scalability: Architecture supports hundreds/thousands of notes
Potential features for future versions:
- Search notes by content
- Filter by date range
- Edit existing notes
- Delete notes (swipe to delete)
- Share/export notes
- Categories or tags
- iCloud sync
- Dark mode customization
- Custom voice models/languages
- Audio playback of original recordings
- Run the app in Simulator or on a device (press
Cmd + R) - Create and save notes
- Close and relaunch the app
- Verify notes are still there
The app includes console logging for debugging:
- โ Successful save operations with note details
- โ Error messages if save fails
- ๐ Note count when viewing the list
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions, issues, and feature requests are welcome!
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Your Name
- GitHub: @yourusername
- Built with SwiftUI and SwiftData
- Uses Apple's Speech Recognition framework
- Inspired by the need for quick, hands-free note-taking
If you have questions or need help:
- Check existing Issues
- Open a new issue with a clear description
- Provide device info and iOS version
Made with โค๏ธ and SwiftUI