For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
CommunitySign Up
HomeGuidesVerbsAPI ReferenceSelf-HostingClient SDKsTutorialsChangelog
HomeGuidesVerbsAPI ReferenceSelf-HostingClient SDKsTutorialsChangelog
  • Get Started
    • jambonz Overview
    • Developer Quickstart
    • Deployment Options
    • Support Plans
    • jambonz.cloud
  • Using the jambonz portal
  • Features
    • Voice Agents
    • Using OpenAI STT
    • Custom STT providers
    • Custom TTS providers
    • Answering machine detection
    • Conferencing "coach" mode
    • Continous ASR
    • Handling ActionHook Delays
    • Managing media anchors
    • Call Recording
    • SIPREC Server
    • TTS Streaming
    • Dub tracks
    • Filler Noise
    • Securing HTTP Endpoints
    • API Rate Limits
    • Application Environment Variables
LogoLogo
CommunitySign Up
Features

Using Filler Noise

Was this page helpful?
Edit this page
Previous

Securing HTTP Endpoints

Next
Built with

Filter noise is a special case of the more general actionhook delay feature. We generally recommend using the more powerful and flexible actionhook delay feature.

Sometimes in conversational AI scenarios there may be significant latency while the remote application processes a user response and is determing the next action to take. In these scenarios it is common to play a typing sound or other audio to provide an audio cue to the caller that the system is processing the response, that the agent is thinking or retrieving, etc.

Support for “filler noise” can enabled either at the session level using the config.fillerNoise property or at the individual gather level using the same property. In the example below, we set a session-wide setting for filler noise (in the form of a typing sound) to kick in after waiting 2 seconds for the remote app to respond to user input.

1/* websocket application */
2session
3 .config({
4 fillerNoise: {
5 enable: true,
6 url: 'https://dygys.xyz/keyboard-typing.mp3',
7 startDelaySecs: 2
8 }
9 })
10 .gather({
11 say: {text: 'How can I help you today.'},
12 input: ['speech'],
13 ...
14 })
15 .send();

Later in the app, we may decide to start the filler noise immediately because we know that processing this particular user response could be time-consuming.

1/* websocket application */
2session
3 .config({
4 fillerNoise: {
5 enable: true,
6 url: 'https://dygys.xyz/keyboard-typing.mp3',
7 startDelaySecs: 2
8 }
9 })
10 .gather({
11 say: {text: 'OK, would you like me to go ahead and book the flight for you?'},
12 input: ['speech'],
13 fillerNoise: {
14 enable: true,
15 startDelaySecs: 0
16 }
17 ...
18 })
19 .send();

Note that I could have also overridden the url to play at that gather level, but in this case I chose to only override the delay (setting it to zero) and use the session-level typing sound.