> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.jambonz.org/self-hosting/overview/krisp-turn-taking/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.jambonz.org/_mcp/server. # Krisp Turn-Taking The [agent](/verbs/verbs/agent) verb supports [Krisp](https://krisp.ai/) for two features: * **Turn detection** — Krisp's acoustic end-of-turn model analyzes speech patterns (not just silence) to determine when a user has finished speaking. This produces more natural conversations where users can pause mid-thought without the agent interrupting. * **Noise isolation** — Krisp's voice isolation removes background noise from the caller's audio, improving STT accuracy in noisy environments. ## Licensing Requirement > **Krisp API License Required** > > Krisp features require a **separate Krisp API license key** for self-hosted jambonz deployments. This license is **not included** with the jambonz software license and must be obtained separately. > > **This requirement does not apply to jambonz.cloud customers** — Krisp features are included with all jambonz.cloud plans at no additional cost. ## Obtaining a Krisp License Contact [support@jambonz.org](mailto:support@jambonz.org) to obtain a Krisp API key for your self-hosted deployment. We will provide: 1. Pricing information based on your expected usage 2. Your Krisp API key 3. Configuration instructions for your deployment ## Configuration Once you have obtained your Krisp API key, configure it on your jambonz system using one of the methods below. ### New Deployments When deploying jambonz via **AWS CloudFormation** or **Terraform**, provide your Krisp API key as a parameter or input variable during installation. The deployment scripts will configure the system automatically. ### Existing Deployments For systems already deployed, add the Krisp API key to the mediajam environment file on the feature-server or mini. As of jambonz 11, mediajam is the media server and reads its configuration from `/etc/default/mediajam` — the key no longer belongs in the FreeSWITCH systemd unit. 1. Edit the mediajam environment file: ```bash sudo vi /etc/default/mediajam ``` 2. Set the `KRISP_API_KEY` variable to your API key (the file ships with an empty value): ```ini KRISP_API_KEY=your-api-key-here ``` 3. Restart mediajam: ```bash sudo systemctl restart mediajam ``` > **Note** > > Krisp is initialized only when `KRISP_API_KEY` is non-empty at startup, and licensing is validated against `sdkapi.krisp.ai`, so the media server needs outbound HTTPS to that host. ### Verify Configuration Once configured, you can use Krisp features in the agent verb: ```js session.agent({ llm: { vendor: 'openai', model: 'gpt-4.1-mini', /* ... */ }, turnDetection: 'krisp', // Enable Krisp turn detection noiseIsolation: 'krisp', // Enable Krisp noise isolation // ... }).send(); ``` ## Alternatives Without Krisp If you don't have a Krisp license, you can still build effective voice agents using these alternatives: ### Turn Detection Alternatives | Option | Configuration | Notes | | ------------------- | ------------------------------------------------- | -------------------------------------------------------- | | STT-based (default) | `turnDetection: "stt"` | Uses your STT vendor's native end-of-utterance detection | | Deepgram Flux | Use `vendor: "deepgramflux"` for STT | Built-in acoustic + semantic turn detection | | AssemblyAI | Use `vendor: "assemblyai"` with `u3-rt-pro` model | Native turn-taking support | | Speechmatics | Use `vendor: "speechmatics"` for STT | Built-in turn detection | ### Noise Isolation Alternative | Option | Configuration | Notes | | ------- | --------------------------- | -------------------------------- | | RNNoise | `noiseIsolation: "rnnoise"` | Open-source, no license required | ## Usage in the Agent Verb ### Turn Detection ```js // Krisp turn detection with custom threshold session.agent({ turnDetection: { mode: 'krisp', threshold: 0.5 // 0.0-1.0, lower = more aggressive }, earlyGeneration: true, // Enable speculative LLM prompting // ... }).send(); ``` ### Noise Isolation ```js // Krisp noise isolation with custom settings session.agent({ noiseIsolation: { mode: 'krisp', level: 80, // 0-100, higher = more aggressive direction: 'read' // 'read' (caller audio) or 'write' (outbound) }, // ... }).send(); ``` See the [agent verb reference](/verbs/verbs/agent) for complete documentation of these parameters. > Configuring Krisp turn detection and noise isolation for self-hosted deployments