voice is written by set voice.*, or its greeting by the wizard when the project has a number. It becomes spec.voice in .telnyx/index.ts, and four functions in managed/voice.ts read it:
answerOptionsis what the voice class passes to thevoice()mixin’sanswerwhen the media socket opens, as The Call Webhook shows.speechOptionsForfeedsspeechProvidersFor, which builds the STT and TTS providers.defaultGreetingis returned by the voice class’sgreeting, and spoken when the call is answered.harnessOnCallschooses the turn engine, the direct engine inmanaged/direct-turn.tsby default and the harness whenvoice.harnessis true.
answerOptions(spec) sets the mixin’s call options.
eageris on unlessvoice.eageris false. A turn then starts on STT’s first guess that the caller has finished, and its audio is held until the guess is confirmed.bargeInandkeypressInterruptsare passed only whenvoicesets them, and the mixin’s own defaults apply otherwise.
speechProvidersFor hands the speech options to the runtime SDK:
telnyxSpeechProviders(options) is the Telnyx STT and TTS pair from @telnyx/edge-runtime/voice. Its recognizer option tunes STT and its synthesizer option tunes TTS. Both reach Telnyx over the runtime’s own connection, with no credential in the class.
A fifth, fillerOptions in managed/filler.ts, reads voice.filler:
fillerOptions is what the voice class’s reply uses to say one short phrase when the model is slow to start. DEFAULT_FILLER_AFTER_MS is 700, and the default phrases are “One moment.”, “Let me check that for you.” and “Sure, just a second.”. The Voice Loop is where the phrase is spoken.
Voice is the user-facing side of the same fields.