Smart Turn v3 (Apple Silicon)

On-Device Apple SDK

TheStage Apple SDK

Original model: pipecat-ai/smart-turn-v3 (Pipecat)

On-device end-of-turn classifier for voice agents, packaged by TheStage AI for Apple Silicon. At each VAD pause, scores whether the user has finished speaking (vs mid-sentence hesitation).

Runtime TheStage Apple SDK (TheStageVoiceAgent, turn_detection_mode: .dnn)
Architecture mel front-end + int8 Whisper-Tiny encoder + completion head
HF engines TheStageAI/smart-turn-v3

Overview


VAD is the cheap gate (onset + pause). Smart-turn is the semantic check run only at pauses, single-flight, with a hard silence floor so it cannot hang. The model sees the continuous waveform from onset through the pause — never VAD-filtered audio.

System Requirements


Property Value
Hardware Apple Silicon Mac, or physical iPhone / iPad
macOS 15.0+
iOS 18.0+
Xcode 16.0+
Swift 6.0+
Flutter (optional) 3.24+

Simulator is not supported — run on real Apple Silicon hardware.

TheStage AI Access Token


Create a token at app.thestage.ai and pass it to the SDK:

try await TheStageAI.shared.initialize(apiToken: "th_…")
await TheStageFlutterSDK.initialize(api_token: 'th_…');

Token is checked online in initialize (once per app process when reachable). Inference runs fully on-device. Offline initialize fails — reconnect and call initialize again.

TheStage Apple SDK


Docs: TheStage Apple SDK · Voice Agent

Installation (SwiftPM)

In Xcode: File → Add Package Dependencies…, paste https://github.com/TheStageAI/AppleSDK.git, and add the TheStageSDK product. Or in Package.swift:

.package(
    url: "https://github.com/TheStageAI/AppleSDK.git",
    exact: Version(1, 1, 0)
)

Installation (Flutter / iOS)

# pubspec.yaml
dependencies:
  thestage_apple_sdk:
    git:
      url: https://github.com/TheStageAI/AppleSDK.git
      path: plugin/thestage_apple_sdk
      ref: 1.1.0

Swift — via voice agent

import TheStageSDK

try await TheStageAI.shared.initialize(apiToken: "th_…")

var config = TheStageAgentConfig(
    vad: "TheStageAI/silero-vad",
    stt: "TheStageAI/thewhisper-large-v3-turbo",
    tts: "TheStageAI/neutts-nano-multilingual",
    llm: "TheStageAI/Qwen3-0.6B"
)
config.turn_detection_mode = .dnn
config.turn_detector = "TheStageAI/smart-turn-v3"
config.turn_eot_threshold = 0.85
config.turn_eot_confirm_count = 2   // debounce mid-sentence spikes

let agent = try await TheStageVoiceAgent(config: config)

Key knobs

Field Default Meaning
turn_eot_threshold 0.85 Completion prob that counts as "done"
turn_eot_confirm_count 2 Consecutive "done" verdicts before commit
turn_pause_trigger_ms 256 Trailing silence before first model call
turn_reeval_interval_ms 120 Re-run cadence on a sustained pause
turn_max_silence_ms 2000 Hard fallback silence
turn_window_ms 8000 Trailing audio window fed to the model

Knobs hot-apply at runtime via agent.update_turn_config(...).

Acknowledgments


This work builds on smart-turn-v3 by Pipecat: pipecat-ai/smart-turn-v3.

This Apple Silicon package is produced by TheStage AI; it is not an official Pipecat release.

Links


Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for TheStageAI/smart-turn-v3

Quantized
(3)
this model

Collection including TheStageAI/smart-turn-v3