A minimal iOS demo that runs Supertonic (ONNX Runtime) on-device. The app shows:
- Multiline text input
- NFE (denoising steps) slider
- Voice toggle (M/F)
- Generate & Play buttons
- RTF display (Elapsed / Audio seconds)
All ONNX models/configs are reused from Supertonic/assets/onnx, and voice style JSON files from Supertonic/assets/voice_styles.
- macOS 13+, Xcode 15+
- Swift 5.9+
- iOS 15+ device (recommended)
- Homebrew, XcodeGen
Install tools (if needed):
brew install xcodegen- Prepare assets next to the iOS target (one-time)
cd ios/ExampleiOSApp
mkdir -p onnx voice_styles
rsync -a ../../assets/onnx/ onnx/
rsync -a ../../assets/voice_styles/ voice_styles/- Generate the Xcode project with XcodeGen
xcodegen generate
open ExampleiOSApp.xcodeproj- Open in Xcode and select your iPhone as the run destination
- Targets → ExampleiOSApp → Signing & Capabilities: Select your Team
- iOS Deployment Target: 15.0+
- Build & Run on device
- Type text → adjust NFE/Voice → Tap Generate → Audio plays automatically
- An RTF line shows like:
RTF 0.30x · 3.04s / 10.11s
- SwiftUI app files:
App.swift,ContentView.swift,TTSViewModel.swift,AudioPlayer.swift - Runtime wrapper:
TTSService.swift(includes TTS inference logic) - Resources (local, vendored in
ios/ExampleiOSApp/onnxandios/ExampleiOSApp/voice_stylesafter step 0)
These references are defined in project.yml and added to the app bundle by XcodeGen.
- Text: Multiline
TextEditor - NFE: Denoising steps (default 5)
- Voice: M1/M2/F1/F2 voice style selector (4 pre-extracted styles)
- Generate: Runs end-to-end synthesis
- Play/Stop: Controls playback of the last output
- RTF: Shows Elapsed / Audio seconds for quick performance intuition