Swift helpers for ElevenLabs TTS on Apple platforms (iOS/macOS).
- ElevenLabs TTS client + voice listing
- Streaming HTTP support
- MP3 streaming playback (AudioQueue)
- PCM streaming playback (AVAudioEngine + AVAudioPlayerNode)
- Validation helpers for model-specific settings
- Swift 6.2 (SwiftPM
swift-tools-version: 6.2) - iOS 17+
- macOS 15+
https://github.com/steipete/ElevenLabsKit.git
import ElevenLabsKit
let client = ElevenLabsTTSClient(apiKey: "<api-key>")
let request = ElevenLabsTTSRequest(
text: "Hello",
modelId: "eleven_v3",
outputFormat: "pcm_44100")
let stream = client.streamSynthesize(voiceId: "<voice-id>", request: request)
let sampleRate = TalkTTSValidation.pcmSampleRate(from: request.outputFormat) ?? 44_100
let result = await PCMStreamingAudioPlayer.shared.play(stream: stream, sampleRate: sampleRate)let data = try await client.synthesize(voiceId: "<voice-id>", request: request)pcm_44100: lowest latency on Apple platforms.mp3_44100_128: MP3 streaming when needed.
- MP3:
StreamingAudioPlayer.shared.play(stream:) - PCM:
PCMStreamingAudioPlayer.shared.play(stream:sampleRate:)
stabilityforeleven_v3is restricted to0.0,0.5, or1.0.latencyTieris validated to0..4.
- Run:
cd Examples/ElevenLabsKitExample && swift run - Or open
Examples/ElevenLabsKitExample/Package.swiftin Xcode and runElevenLabsKitExample. - Toggle
StreamingvsFetchto compare streaming vs non-streaming requests.
- Run:
cd Examples/ElevenLabsKitCLI && swift run ElevenLabsKitCLI --help - Requires
ELEVENLABS_API_KEY(or pass--api-key).
- Tests:
swift test - Format:
swiftformat Sources Tests Examples - Lint:
swiftlint lint --strict --config .swiftlint.yml
MIT