Give your words a voice.
Ovrino is a small, local-first text-to-speech mobile app built with React Native and Expo. It makes the voices already installed on your device easier to discover, control, and use for reading.
Write or paste text → choose an installed device voice → adjust speed/pitch → speak.
Reading Mode can split text into sentences and speak them sequentially. History, favorites, and speech settings are stored locally on the device.
The MVP uses the device's native TTS engine through expo-speech. There is no API key, backend, account, cloud voice provider, or generated-audio service required.
- React Native
- Expo SDK 54
- TypeScript
- expo-speech
- Vazirmatn + Young Serif
- Vitest for pure utility tests
Ovrino
├── Text input + Reading Mode
├── Installed device voices
│ ↓
│ expo-speech
│ ↓
│ Native device TTS engine
└── Local file storage
├── history
├── favorites
└── speech settings
A future provider/backend is optional and should only be added if device TTS cannot satisfy a concrete product requirement.
Requirements: Node.js + npm, plus an Android device/emulator or supported iOS environment.
npm install
npm start
npm test- Local device TTS
- Installed voice discovery
- Voice search/filtering and previews
- Speed/pitch controls and presets
- Local history and favorites
- Local speech settings
- Sentence-by-sentence Reading Mode
- Honest device-TTS playback UI
- Pure utility tests
- Accessibility review
- Performance/device compatibility testing
- Production Android/iOS builds
Generated audio files, cloud TTS, backend/API, authentication, cloud sync, audio export from generated files, and advanced creator features.
Ovrino is being built one voice at a time. 🔊