cai/ref/voice/model/index.html

4791 lines
133 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="../../../assets/imago.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.11">
<title>Model - CAI</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.4af4bdda.min.css">
<link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../../assets/_mkdocstrings.css">
<link rel="stylesheet" href="../../../stylesheets/extra.css">
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#model" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../../.." title="CAI" class="md-header__button md-logo" aria-label="CAI" data-md-component="logo">
<img src="../../../assets/imago.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
CAI
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Model
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/aliasrobotics/cai" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
aliasrobotics/cai
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../.." title="CAI" class="md-nav__button md-logo" aria-label="CAI" data-md-component="logo">
<img src="../../../assets/imago.png" alt="logo">
</a>
CAI
</label>
<div class="md-nav__source">
<a href="https://github.com/aliasrobotics/cai" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
aliasrobotics/cai
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1" >
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
Getting Started
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
Getting Started
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../.." class="md-nav__link">
<span class="md-ellipsis">
Welcome
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../cai_installation/" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../cai_quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../cai_list_of_models/" class="md-nav__link">
<span class="md-ellipsis">
Available Models
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1_5" >
<label class="md-nav__link" for="__nav_1_5" id="__nav_1_5_label" tabindex="0">
<span class="md-ellipsis">
Model Providers
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_1_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_1_5">
<span class="md-nav__icon md-icon"></span>
Model Providers
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../providers/openrouter.md" class="md-nav__link">
<span class="md-ellipsis">
OpenRouter
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../providers/ollama/" class="md-nav__link">
<span class="md-ellipsis">
Ollama
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../providers/azure.md" class="md-nav__link">
<span class="md-ellipsis">
Azure OpenAI
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../cai_pro/" class="md-nav__link">
<span class="md-ellipsis">
🚀 CAI PRO
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Core Concepts
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Core Concepts
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../cai_architecture/" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/" class="md-nav__link">
<span class="md-ellipsis">
Agents
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tools/" class="md-nav__link">
<span class="md-ellipsis">
Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../handoffs/" class="md-nav__link">
<span class="md-ellipsis">
Handoffs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../multi_agent/" class="md-nav__link">
<span class="md-ellipsis">
Multi-Agent Systems
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-ellipsis">
Benchmarking
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Benchmarking
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../benchmarking/overview/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../benchmarking/running_benchmarks/" class="md-nav__link">
<span class="md-ellipsis">
Running Benchmarks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../benchmarking/attack_defense/" class="md-nav__link">
<span class="md-ellipsis">
Attack & Defense CTFs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../benchmarking/jeopardy_ctfs/" class="md-nav__link">
<span class="md-ellipsis">
Jeopardy CTFs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../benchmarking/cyber_ranges/" class="md-nav__link">
<span class="md-ellipsis">
Cyber Ranges
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../benchmarking/knowledge_benchmarks/" class="md-nav__link">
<span class="md-ellipsis">
Knowledge Benchmarks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../benchmarking/privacy_benchmarks/" class="md-nav__link">
<span class="md-ellipsis">
Privacy Benchmarks
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
<span class="md-ellipsis">
Guides
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Guides
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../running_agents/" class="md-nav__link">
<span class="md-ellipsis">
Running Agents
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../continue_mode/" class="md-nav__link">
<span class="md-ellipsis">
Continue Mode
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../results/" class="md-nav__link">
<span class="md-ellipsis">
Working with Results
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../streaming/" class="md-nav__link">
<span class="md-ellipsis">
Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tracing/" class="md-nav__link">
<span class="md-ellipsis">
Tracing & Debugging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../context/" class="md-nav__link">
<span class="md-ellipsis">
Context Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../guardrails/" class="md-nav__link">
<span class="md-ellipsis">
Guardrails & Security
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../environment_variables/" class="md-nav__link">
<span class="md-ellipsis">
Environment Variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../cai/getting-started/packet_capture_wsl/" class="md-nav__link">
<span class="md-ellipsis">
Packet Capture on WSL2
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="">
<span class="md-ellipsis">
Troubleshooting
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Troubleshooting
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../cai/troubleshooting/operator_feedback_reproduction/" class="md-nav__link">
<span class="md-ellipsis">
Operator Feedback Reproduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../cai/troubleshooting/platform_limitations/" class="md-nav__link">
<span class="md-ellipsis">
Platform Limitations
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="">
<span class="md-ellipsis">
Case Studies
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Case Studies
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../cai/case-studies/operator-artifact-evidence/" class="md-nav__link">
<span class="md-ellipsis">
Operator Artifact Evidence
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="">
<span class="md-ellipsis">
Mobile UI (iOS)
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Mobile UI (iOS)
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../mui/mui_index/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../mui/getting_started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../mui/user_interface/" class="md-nav__link">
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../mui/gestures_shortcuts/" class="md-nav__link">
<span class="md-ellipsis">
Gestures & Shortcuts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../mui/chat_features/" class="md-nav__link">
<span class="md-ellipsis">
Chat Features
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="">
<span class="md-ellipsis">
Terminal UI (TUI) - Deprecated
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Terminal UI (TUI) - Deprecated
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../tui/tui_index/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tui/getting_started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tui/user_interface/" class="md-nav__link">
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tui/terminals_management/" class="md-nav__link">
<span class="md-ellipsis">
Terminals Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tui/teams_and_parallel_execution/" class="md-nav__link">
<span class="md-ellipsis">
Teams & Parallel Execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tui/sidebar_features/" class="md-nav__link">
<span class="md-ellipsis">
Sidebar Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tui/keyboard_shortcuts/" class="md-nav__link">
<span class="md-ellipsis">
Keyboard Shortcuts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tui/commands_reference/" class="md-nav__link">
<span class="md-ellipsis">
Commands Reference
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tui/advanced_features/" class="md-nav__link">
<span class="md-ellipsis">
Advanced Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tui/troubleshooting/" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="">
<span class="md-ellipsis">
API Reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
API Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_10_1" >
<label class="md-nav__link" for="__nav_10_1" id="__nav_10_1_label" tabindex="0">
<span class="md-ellipsis">
Agents
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10_1">
<span class="md-nav__icon md-icon"></span>
Agents
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../agent/" class="md-nav__link">
<span class="md-ellipsis">
Agent
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../run/" class="md-nav__link">
<span class="md-ellipsis">
Runner
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../tool/" class="md-nav__link">
<span class="md-ellipsis">
Tool
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../result/" class="md-nav__link">
<span class="md-ellipsis">
Result
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../stream_events/" class="md-nav__link">
<span class="md-ellipsis">
Stream Events
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../handoffs/" class="md-nav__link">
<span class="md-ellipsis">
Handoffs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../lifecycle/" class="md-nav__link">
<span class="md-ellipsis">
Lifecycle
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../items/" class="md-nav__link">
<span class="md-ellipsis">
Items
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../run_context/" class="md-nav__link">
<span class="md-ellipsis">
Run Context
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../usage/" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../exceptions/" class="md-nav__link">
<span class="md-ellipsis">
Exceptions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../guardrail/" class="md-nav__link">
<span class="md-ellipsis">
Guardrail
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../model_settings/" class="md-nav__link">
<span class="md-ellipsis">
Model Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../agent_output/" class="md-nav__link">
<span class="md-ellipsis">
Agent Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../function_schema/" class="md-nav__link">
<span class="md-ellipsis">
Function Schema
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_10_2" >
<label class="md-nav__link" for="__nav_10_2" id="__nav_10_2_label" tabindex="0">
<span class="md-ellipsis">
Models
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10_2">
<span class="md-nav__icon md-icon"></span>
Models
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../models/interface/" class="md-nav__link">
<span class="md-ellipsis">
Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../models/openai_chatcompletions/" class="md-nav__link">
<span class="md-ellipsis">
OpenAI Chat Completions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../models/openai_responses/" class="md-nav__link">
<span class="md-ellipsis">
OpenAI Responses
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_10_3" >
<label class="md-nav__link" for="__nav_10_3" id="__nav_10_3_label" tabindex="0">
<span class="md-ellipsis">
Extensions
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10_3">
<span class="md-nav__icon md-icon"></span>
Extensions
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../extensions/handoff_filters/" class="md-nav__link">
<span class="md-ellipsis">
Handoff Filters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../extensions/handoff_prompt/" class="md-nav__link">
<span class="md-ellipsis">
Handoff Prompt
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_11" >
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="">
<span class="md-ellipsis">
Advanced
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
Advanced
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../cai_development/" class="md-nav__link">
<span class="md-ellipsis">
Development
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_12" >
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="">
<span class="md-ellipsis">
Research
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_12">
<span class="md-nav__icon md-icon"></span>
Research
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../research/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_13" >
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="">
<span class="md-ellipsis">
Resources
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_13">
<span class="md-nav__icon md-icon"></span>
Resources
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../cai_faq/" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../cai_find_us/" class="md-nav__link">
<span class="md-ellipsis">
Find Us
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../cai_citation_and_acknowledgments/" class="md-nav__link">
<span class="md-ellipsis">
Citation & Acknowledgments
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model" class="md-nav__link">
<span class="md-ellipsis">
model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModelSettings" class="md-nav__link">
<span class="md-ellipsis">
TTSModelSettings
</span>
</a>
<nav class="md-nav" aria-label="TTSModelSettings">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModelSettings.voice" class="md-nav__link">
<span class="md-ellipsis">
voice
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModelSettings.buffer_size" class="md-nav__link">
<span class="md-ellipsis">
buffer_size
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModelSettings.dtype" class="md-nav__link">
<span class="md-ellipsis">
dtype
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModelSettings.transform_data" class="md-nav__link">
<span class="md-ellipsis">
transform_data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModelSettings.instructions" class="md-nav__link">
<span class="md-ellipsis">
instructions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModelSettings.text_splitter" class="md-nav__link">
<span class="md-ellipsis">
text_splitter
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModelSettings.speed" class="md-nav__link">
<span class="md-ellipsis">
speed
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModel" class="md-nav__link">
<span class="md-ellipsis">
TTSModel
</span>
</a>
<nav class="md-nav" aria-label="TTSModel">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModel.model_name" class="md-nav__link">
<span class="md-ellipsis">
model_name
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.TTSModel.run" class="md-nav__link">
<span class="md-ellipsis">
run
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.StreamedTranscriptionSession" class="md-nav__link">
<span class="md-ellipsis">
StreamedTranscriptionSession
</span>
</a>
<nav class="md-nav" aria-label="StreamedTranscriptionSession">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.StreamedTranscriptionSession.transcribe_turns" class="md-nav__link">
<span class="md-ellipsis">
transcribe_turns
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.StreamedTranscriptionSession.close" class="md-nav__link">
<span class="md-ellipsis">
close
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.STTModelSettings" class="md-nav__link">
<span class="md-ellipsis">
STTModelSettings
</span>
</a>
<nav class="md-nav" aria-label="STTModelSettings">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.STTModelSettings.prompt" class="md-nav__link">
<span class="md-ellipsis">
prompt
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.STTModelSettings.language" class="md-nav__link">
<span class="md-ellipsis">
language
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.STTModelSettings.temperature" class="md-nav__link">
<span class="md-ellipsis">
temperature
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.STTModelSettings.turn_detection" class="md-nav__link">
<span class="md-ellipsis">
turn_detection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.STTModel" class="md-nav__link">
<span class="md-ellipsis">
STTModel
</span>
</a>
<nav class="md-nav" aria-label="STTModel">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.STTModel.model_name" class="md-nav__link">
<span class="md-ellipsis">
model_name
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.STTModel.transcribe" class="md-nav__link">
<span class="md-ellipsis">
transcribe
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.STTModel.create_session" class="md-nav__link">
<span class="md-ellipsis">
create_session
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.VoiceModelProvider" class="md-nav__link">
<span class="md-ellipsis">
VoiceModelProvider
</span>
</a>
<nav class="md-nav" aria-label="VoiceModelProvider">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.VoiceModelProvider.get_stt_model" class="md-nav__link">
<span class="md-ellipsis">
get_stt_model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cai.sdk.agents.voice.model.VoiceModelProvider.get_tts_model" class="md-nav__link">
<span class="md-ellipsis">
get_tts_model
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="model"><code>Model</code></h1>
<div class="doc doc-object doc-module">
<a id="cai.sdk.agents.voice.model"></a>
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-class">
<h3 id="cai.sdk.agents.voice.model.TTSModelSettings" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">TTSModelSettings</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small>
</span>
</h3>
<div class="doc doc-contents ">
<p>Settings for a TTS model.</p>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span>
<span class="normal">35</span>
<span class="normal">36</span>
<span class="normal">37</span>
<span class="normal">38</span>
<span class="normal">39</span>
<span class="normal">40</span>
<span class="normal">41</span>
<span class="normal">42</span>
<span class="normal">43</span>
<span class="normal">44</span>
<span class="normal">45</span>
<span class="normal">46</span>
<span class="normal">47</span>
<span class="normal">48</span>
<span class="normal">49</span>
<span class="normal">50</span>
<span class="normal">51</span>
<span class="normal">52</span>
<span class="normal">53</span>
<span class="normal">54</span>
<span class="normal">55</span>
<span class="normal">56</span>
<span class="normal">57</span>
<span class="normal">58</span>
<span class="normal">59</span>
<span class="normal">60</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-18"><span class="nd">@dataclass</span>
</span><span id="__span-0-19"><span class="k">class</span><span class="w"> </span><span class="nc">TTSModelSettings</span><span class="p">:</span>
</span><span id="__span-0-20"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Settings for a TTS model.&quot;&quot;&quot;</span>
</span><span id="__span-0-21">
</span><span id="__span-0-22"> <span class="n">voice</span><span class="p">:</span> <span class="p">(</span>
</span><span id="__span-0-23"> <span class="n">Literal</span><span class="p">[</span><span class="s2">&quot;alloy&quot;</span><span class="p">,</span> <span class="s2">&quot;ash&quot;</span><span class="p">,</span> <span class="s2">&quot;coral&quot;</span><span class="p">,</span> <span class="s2">&quot;echo&quot;</span><span class="p">,</span> <span class="s2">&quot;fable&quot;</span><span class="p">,</span> <span class="s2">&quot;onyx&quot;</span><span class="p">,</span> <span class="s2">&quot;nova&quot;</span><span class="p">,</span> <span class="s2">&quot;sage&quot;</span><span class="p">,</span> <span class="s2">&quot;shimmer&quot;</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span>
</span><span id="__span-0-24"> <span class="p">)</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-0-25"><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="__span-0-26"><span class="sd"> The voice to use for the TTS model. If not provided, the default voice for the respective model</span>
</span><span id="__span-0-27"><span class="sd"> will be used.</span>
</span><span id="__span-0-28"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-29">
</span><span id="__span-0-30"> <span class="n">buffer_size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">120</span>
</span><span id="__span-0-31"><span class="w"> </span><span class="sd">&quot;&quot;&quot;The minimal size of the chunks of audio data that are being streamed out.&quot;&quot;&quot;</span>
</span><span id="__span-0-32">
</span><span id="__span-0-33"> <span class="n">dtype</span><span class="p">:</span> <span class="n">npt</span><span class="o">.</span><span class="n">DTypeLike</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">int16</span>
</span><span id="__span-0-34"><span class="w"> </span><span class="sd">&quot;&quot;&quot;The data type for the audio data to be returned in.&quot;&quot;&quot;</span>
</span><span id="__span-0-35">
</span><span id="__span-0-36"> <span class="n">transform_data</span><span class="p">:</span> <span class="p">(</span>
</span><span id="__span-0-37"> <span class="n">Callable</span><span class="p">[[</span><span class="n">npt</span><span class="o">.</span><span class="n">NDArray</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">int16</span> <span class="o">|</span> <span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">]],</span> <span class="n">npt</span><span class="o">.</span><span class="n">NDArray</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">int16</span> <span class="o">|</span> <span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span>
</span><span id="__span-0-38"> <span class="p">)</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-0-39"><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="__span-0-40"><span class="sd"> A function to transform the data from the TTS model. This is useful if you want the resulting</span>
</span><span id="__span-0-41"><span class="sd"> audio stream to have the data in a specific shape already.</span>
</span><span id="__span-0-42"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-43">
</span><span id="__span-0-44"> <span class="n">instructions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="__span-0-45"> <span class="s2">&quot;You will receive partial sentences. Do not complete the sentence just read out the text.&quot;</span>
</span><span id="__span-0-46"> <span class="p">)</span>
</span><span id="__span-0-47"><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="__span-0-48"><span class="sd"> The instructions to use for the TTS model. This is useful if you want to control the tone of the</span>
</span><span id="__span-0-49"><span class="sd"> audio output.</span>
</span><span id="__span-0-50"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-51">
</span><span id="__span-0-52"> <span class="n">text_splitter</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[[</span><span class="nb">str</span><span class="p">],</span> <span class="nb">tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="n">get_sentence_based_splitter</span><span class="p">()</span>
</span><span id="__span-0-53"><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="__span-0-54"><span class="sd"> A function to split the text into chunks. This is useful if you want to split the text into</span>
</span><span id="__span-0-55"><span class="sd"> chunks before sending it to the TTS model rather than waiting for the whole text to be</span>
</span><span id="__span-0-56"><span class="sd"> processed.</span>
</span><span id="__span-0-57"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-58">
</span><span id="__span-0-59"> <span class="n">speed</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-0-60"><span class="w"> </span><span class="sd">&quot;&quot;&quot;The speed with which the TTS model will read the text. Between 0.25 and 4.0.&quot;&quot;&quot;</span>
</span></code></pre></div></td></tr></table></div>
</details>
<div class="doc doc-children">
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.TTSModelSettings.voice" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">voice</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">voice</span><span class="p">:</span> <span class="p">(</span>
</span><span id="__span-0-2"> <span class="n"><span title="typing.Literal">Literal</span></span><span class="p">[</span>
</span><span id="__span-0-3"> <span class="s2">&quot;alloy&quot;</span><span class="p">,</span>
</span><span id="__span-0-4"> <span class="s2">&quot;ash&quot;</span><span class="p">,</span>
</span><span id="__span-0-5"> <span class="s2">&quot;coral&quot;</span><span class="p">,</span>
</span><span id="__span-0-6"> <span class="s2">&quot;echo&quot;</span><span class="p">,</span>
</span><span id="__span-0-7"> <span class="s2">&quot;fable&quot;</span><span class="p">,</span>
</span><span id="__span-0-8"> <span class="s2">&quot;onyx&quot;</span><span class="p">,</span>
</span><span id="__span-0-9"> <span class="s2">&quot;nova&quot;</span><span class="p">,</span>
</span><span id="__span-0-10"> <span class="s2">&quot;sage&quot;</span><span class="p">,</span>
</span><span id="__span-0-11"> <span class="s2">&quot;shimmer&quot;</span><span class="p">,</span>
</span><span id="__span-0-12"> <span class="p">]</span>
</span><span id="__span-0-13"> <span class="o">|</span> <span class="kc">None</span>
</span><span id="__span-0-14"><span class="p">)</span> <span class="o">=</span> <span class="kc">None</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The voice to use for the TTS model. If not provided, the default voice for the respective model
will be used.</p>
</div>
</div>
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.TTSModelSettings.buffer_size" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">buffer_size</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">buffer_size</span><span class="p">:</span> <span class="n"><span title="int">int</span></span> <span class="o">=</span> <span class="mi">120</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The minimal size of the chunks of audio data that are being streamed out.</p>
</div>
</div>
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.TTSModelSettings.dtype" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">dtype</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">dtype</span><span class="p">:</span> <span class="n"><span title="cai.sdk.agents.voice.imports.npt.DTypeLike">DTypeLike</span></span> <span class="o">=</span> <span class="n"><span title="cai.sdk.agents.voice.imports.np.int16">int16</span></span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The data type for the audio data to be returned in.</p>
</div>
</div>
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.TTSModelSettings.transform_data" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">transform_data</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">transform_data</span><span class="p">:</span> <span class="p">(</span>
</span><span id="__span-0-2"> <span class="n"><span title="typing.Callable">Callable</span></span><span class="p">[</span>
</span><span id="__span-0-3"> <span class="p">[</span><span class="n"><span title="cai.sdk.agents.voice.imports.npt.NDArray">NDArray</span></span><span class="p">[</span><span class="n"><span title="cai.sdk.agents.voice.imports.np.int16">int16</span></span> <span class="o">|</span> <span class="n"><span title="cai.sdk.agents.voice.imports.np.float32">float32</span></span><span class="p">]],</span> <span class="n"><span title="cai.sdk.agents.voice.imports.npt.NDArray">NDArray</span></span><span class="p">[</span><span class="n"><span title="cai.sdk.agents.voice.imports.np.int16">int16</span></span> <span class="o">|</span> <span class="n"><span title="cai.sdk.agents.voice.imports.np.float32">float32</span></span><span class="p">]</span>
</span><span id="__span-0-4"> <span class="p">]</span>
</span><span id="__span-0-5"> <span class="o">|</span> <span class="kc">None</span>
</span><span id="__span-0-6"><span class="p">)</span> <span class="o">=</span> <span class="kc">None</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>A function to transform the data from the TTS model. This is useful if you want the resulting
audio stream to have the data in a specific shape already.</p>
</div>
</div>
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.TTSModelSettings.instructions" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">instructions</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">instructions</span><span class="p">:</span> <span class="n"><span title="str">str</span></span> <span class="o">=</span> <span class="s2">&quot;You will receive partial sentences. Do not complete the sentence just read out the text.&quot;</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The instructions to use for the TTS model. This is useful if you want to control the tone of the
audio output.</p>
</div>
</div>
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.TTSModelSettings.text_splitter" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">text_splitter</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">text_splitter</span><span class="p">:</span> <span class="n"><span title="typing.Callable">Callable</span></span><span class="p">[[</span><span class="n"><span title="str">str</span></span><span class="p">],</span> <span class="n"><span title="tuple">tuple</span></span><span class="p">[</span><span class="n"><span title="str">str</span></span><span class="p">,</span> <span class="n"><span title="str">str</span></span><span class="p">]]</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="__span-0-2"> <span class="n"><a class="autorefs autorefs-internal" title="get_sentence_based_splitter (cai.sdk.agents.voice.utils.get_sentence_based_splitter)" href="../utils/#cai.sdk.agents.voice.utils.get_sentence_based_splitter">get_sentence_based_splitter</a></span><span class="p">()</span>
</span><span id="__span-0-3"><span class="p">)</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>A function to split the text into chunks. This is useful if you want to split the text into
chunks before sending it to the TTS model rather than waiting for the whole text to be
processed.</p>
</div>
</div>
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.TTSModelSettings.speed" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">speed</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">speed</span><span class="p">:</span> <span class="n"><span title="float">float</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The speed with which the TTS model will read the text. Between 0.25 and 4.0.</p>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h3 id="cai.sdk.agents.voice.model.TTSModel" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">TTSModel</span>
</h3>
<div class="doc doc-contents ">
<p class="doc doc-class-bases">
Bases: <code><span title="abc.ABC">ABC</span></code></p>
<p>A text-to-speech model that can convert text into audio output.</p>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">63</span>
<span class="normal">64</span>
<span class="normal">65</span>
<span class="normal">66</span>
<span class="normal">67</span>
<span class="normal">68</span>
<span class="normal">69</span>
<span class="normal">70</span>
<span class="normal">71</span>
<span class="normal">72</span>
<span class="normal">73</span>
<span class="normal">74</span>
<span class="normal">75</span>
<span class="normal">76</span>
<span class="normal">77</span>
<span class="normal">78</span>
<span class="normal">79</span>
<span class="normal">80</span>
<span class="normal">81</span>
<span class="normal">82</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-63"><span class="k">class</span><span class="w"> </span><span class="nc">TTSModel</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABC</span><span class="p">):</span>
</span><span id="__span-0-64"><span class="w"> </span><span class="sd">&quot;&quot;&quot;A text-to-speech model that can convert text into audio output.&quot;&quot;&quot;</span>
</span><span id="__span-0-65">
</span><span id="__span-0-66"> <span class="nd">@property</span>
</span><span id="__span-0-67"> <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-68"> <span class="k">def</span><span class="w"> </span><span class="nf">model_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="__span-0-69"><span class="w"> </span><span class="sd">&quot;&quot;&quot;The name of the TTS model.&quot;&quot;&quot;</span>
</span><span id="__span-0-70"> <span class="k">pass</span>
</span><span id="__span-0-71">
</span><span id="__span-0-72"> <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-73"> <span class="k">def</span><span class="w"> </span><span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">settings</span><span class="p">:</span> <span class="n">TTSModelSettings</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">AsyncIterator</span><span class="p">[</span><span class="nb">bytes</span><span class="p">]:</span>
</span><span id="__span-0-74"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Given a text string, produces a stream of audio bytes, in PCM format.</span>
</span><span id="__span-0-75">
</span><span id="__span-0-76"><span class="sd"> Args:</span>
</span><span id="__span-0-77"><span class="sd"> text: The text to convert to audio.</span>
</span><span id="__span-0-78">
</span><span id="__span-0-79"><span class="sd"> Returns:</span>
</span><span id="__span-0-80"><span class="sd"> An async iterator of audio bytes, in PCM format.</span>
</span><span id="__span-0-81"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-82"> <span class="k">pass</span>
</span></code></pre></div></td></tr></table></div>
</details>
<div class="doc doc-children">
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.TTSModel.model_name" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">model_name</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
<small class="doc doc-label doc-label-property"><code>property</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">model_name</span><span class="p">:</span> <span class="n"><span title="str">str</span></span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The name of the TTS model.</p>
</div>
</div>
<div class="doc doc-object doc-function">
<h4 id="cai.sdk.agents.voice.model.TTSModel.run" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">run</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="nf">run</span><span class="p">(</span>
</span><span id="__span-0-2"> <span class="n">text</span><span class="p">:</span> <span class="n"><span title="str">str</span></span><span class="p">,</span> <span class="n">settings</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="TTSModelSettings
dataclass
(cai.sdk.agents.voice.model.TTSModelSettings)" href="#cai.sdk.agents.voice.model.TTSModelSettings">TTSModelSettings</a></span>
</span><span id="__span-0-3"><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="collections.abc.AsyncIterator">AsyncIterator</span></span><span class="p">[</span><span class="n"><span title="bytes">bytes</span></span><span class="p">]</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Given a text string, produces a stream of audio bytes, in PCM format.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>text</code>
</td>
<td>
<code><span title="str">str</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The text to convert to audio.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="collections.abc.AsyncIterator">AsyncIterator</span>[<span title="bytes">bytes</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>An async iterator of audio bytes, in PCM format.</p>
</div>
</td>
</tr>
</tbody>
</table>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">72</span>
<span class="normal">73</span>
<span class="normal">74</span>
<span class="normal">75</span>
<span class="normal">76</span>
<span class="normal">77</span>
<span class="normal">78</span>
<span class="normal">79</span>
<span class="normal">80</span>
<span class="normal">81</span>
<span class="normal">82</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-72"><span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-73"><span class="k">def</span><span class="w"> </span><span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">settings</span><span class="p">:</span> <span class="n">TTSModelSettings</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">AsyncIterator</span><span class="p">[</span><span class="nb">bytes</span><span class="p">]:</span>
</span><span id="__span-0-74"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Given a text string, produces a stream of audio bytes, in PCM format.</span>
</span><span id="__span-0-75">
</span><span id="__span-0-76"><span class="sd"> Args:</span>
</span><span id="__span-0-77"><span class="sd"> text: The text to convert to audio.</span>
</span><span id="__span-0-78">
</span><span id="__span-0-79"><span class="sd"> Returns:</span>
</span><span id="__span-0-80"><span class="sd"> An async iterator of audio bytes, in PCM format.</span>
</span><span id="__span-0-81"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-82"> <span class="k">pass</span>
</span></code></pre></div></td></tr></table></div>
</details>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h3 id="cai.sdk.agents.voice.model.StreamedTranscriptionSession" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">StreamedTranscriptionSession</span>
</h3>
<div class="doc doc-contents ">
<p class="doc doc-class-bases">
Bases: <code><span title="abc.ABC">ABC</span></code></p>
<p>A streamed transcription of audio input.</p>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">85</span>
<span class="normal">86</span>
<span class="normal">87</span>
<span class="normal">88</span>
<span class="normal">89</span>
<span class="normal">90</span>
<span class="normal">91</span>
<span class="normal">92</span>
<span class="normal">93</span>
<span class="normal">94</span>
<span class="normal">95</span>
<span class="normal">96</span>
<span class="normal">97</span>
<span class="normal">98</span>
<span class="normal">99</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-85"><span class="k">class</span><span class="w"> </span><span class="nc">StreamedTranscriptionSession</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABC</span><span class="p">):</span>
</span><span id="__span-0-86"><span class="w"> </span><span class="sd">&quot;&quot;&quot;A streamed transcription of audio input.&quot;&quot;&quot;</span>
</span><span id="__span-0-87">
</span><span id="__span-0-88"> <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-89"> <span class="k">def</span><span class="w"> </span><span class="nf">transcribe_turns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">AsyncIterator</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
</span><span id="__span-0-90"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Yields a stream of text transcriptions. Each transcription is a turn in the conversation.</span>
</span><span id="__span-0-91">
</span><span id="__span-0-92"><span class="sd"> This method is expected to return only after `close()` is called.</span>
</span><span id="__span-0-93"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-94"> <span class="k">pass</span>
</span><span id="__span-0-95">
</span><span id="__span-0-96"> <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-97"> <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="__span-0-98"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Closes the session.&quot;&quot;&quot;</span>
</span><span id="__span-0-99"> <span class="k">pass</span>
</span></code></pre></div></td></tr></table></div>
</details>
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h4 id="cai.sdk.agents.voice.model.StreamedTranscriptionSession.transcribe_turns" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">transcribe_turns</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="nf">transcribe_turns</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n"><span title="collections.abc.AsyncIterator">AsyncIterator</span></span><span class="p">[</span><span class="n"><span title="str">str</span></span><span class="p">]</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Yields a stream of text transcriptions. Each transcription is a turn in the conversation.</p>
<p>This method is expected to return only after <code>close()</code> is called.</p>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">88</span>
<span class="normal">89</span>
<span class="normal">90</span>
<span class="normal">91</span>
<span class="normal">92</span>
<span class="normal">93</span>
<span class="normal">94</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-88"><span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-89"><span class="k">def</span><span class="w"> </span><span class="nf">transcribe_turns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">AsyncIterator</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
</span><span id="__span-0-90"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Yields a stream of text transcriptions. Each transcription is a turn in the conversation.</span>
</span><span id="__span-0-91">
</span><span id="__span-0-92"><span class="sd"> This method is expected to return only after `close()` is called.</span>
</span><span id="__span-0-93"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-94"> <span class="k">pass</span>
</span></code></pre></div></td></tr></table></div>
</details>
</div>
</div>
<div class="doc doc-object doc-function">
<h4 id="cai.sdk.agents.voice.model.StreamedTranscriptionSession.close" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">close</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="nf">close</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="kc">None</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Closes the session.</p>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">96</span>
<span class="normal">97</span>
<span class="normal">98</span>
<span class="normal">99</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-96"><span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-97"><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="__span-0-98"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Closes the session.&quot;&quot;&quot;</span>
</span><span id="__span-0-99"> <span class="k">pass</span>
</span></code></pre></div></td></tr></table></div>
</details>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h3 id="cai.sdk.agents.voice.model.STTModelSettings" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">STTModelSettings</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small>
</span>
</h3>
<div class="doc doc-contents ">
<p>Settings for a speech-to-text model.</p>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">102</span>
<span class="normal">103</span>
<span class="normal">104</span>
<span class="normal">105</span>
<span class="normal">106</span>
<span class="normal">107</span>
<span class="normal">108</span>
<span class="normal">109</span>
<span class="normal">110</span>
<span class="normal">111</span>
<span class="normal">112</span>
<span class="normal">113</span>
<span class="normal">114</span>
<span class="normal">115</span>
<span class="normal">116</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-102"><span class="nd">@dataclass</span>
</span><span id="__span-0-103"><span class="k">class</span><span class="w"> </span><span class="nc">STTModelSettings</span><span class="p">:</span>
</span><span id="__span-0-104"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Settings for a speech-to-text model.&quot;&quot;&quot;</span>
</span><span id="__span-0-105">
</span><span id="__span-0-106"> <span class="n">prompt</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-0-107"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Instructions for the model to follow.&quot;&quot;&quot;</span>
</span><span id="__span-0-108">
</span><span id="__span-0-109"> <span class="n">language</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-0-110"><span class="w"> </span><span class="sd">&quot;&quot;&quot;The language of the audio input.&quot;&quot;&quot;</span>
</span><span id="__span-0-111">
</span><span id="__span-0-112"> <span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-0-113"><span class="w"> </span><span class="sd">&quot;&quot;&quot;The temperature of the model.&quot;&quot;&quot;</span>
</span><span id="__span-0-114">
</span><span id="__span-0-115"> <span class="n">turn_detection</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-0-116"><span class="w"> </span><span class="sd">&quot;&quot;&quot;The turn detection settings for the model when using streamed audio input.&quot;&quot;&quot;</span>
</span></code></pre></div></td></tr></table></div>
</details>
<div class="doc doc-children">
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.STTModelSettings.prompt" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">prompt</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">prompt</span><span class="p">:</span> <span class="n"><span title="str">str</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Instructions for the model to follow.</p>
</div>
</div>
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.STTModelSettings.language" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">language</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">language</span><span class="p">:</span> <span class="n"><span title="str">str</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The language of the audio input.</p>
</div>
</div>
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.STTModelSettings.temperature" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">temperature</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">temperature</span><span class="p">:</span> <span class="n"><span title="float">float</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The temperature of the model.</p>
</div>
</div>
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.STTModelSettings.turn_detection" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">turn_detection</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">turn_detection</span><span class="p">:</span> <span class="n"><span title="dict">dict</span></span><span class="p">[</span><span class="n"><span title="str">str</span></span><span class="p">,</span> <span class="n"><span title="typing.Any">Any</span></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The turn detection settings for the model when using streamed audio input.</p>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h3 id="cai.sdk.agents.voice.model.STTModel" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">STTModel</span>
</h3>
<div class="doc doc-contents ">
<p class="doc doc-class-bases">
Bases: <code><span title="abc.ABC">ABC</span></code></p>
<p>A speech-to-text model that can convert audio input into text.</p>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">119</span>
<span class="normal">120</span>
<span class="normal">121</span>
<span class="normal">122</span>
<span class="normal">123</span>
<span class="normal">124</span>
<span class="normal">125</span>
<span class="normal">126</span>
<span class="normal">127</span>
<span class="normal">128</span>
<span class="normal">129</span>
<span class="normal">130</span>
<span class="normal">131</span>
<span class="normal">132</span>
<span class="normal">133</span>
<span class="normal">134</span>
<span class="normal">135</span>
<span class="normal">136</span>
<span class="normal">137</span>
<span class="normal">138</span>
<span class="normal">139</span>
<span class="normal">140</span>
<span class="normal">141</span>
<span class="normal">142</span>
<span class="normal">143</span>
<span class="normal">144</span>
<span class="normal">145</span>
<span class="normal">146</span>
<span class="normal">147</span>
<span class="normal">148</span>
<span class="normal">149</span>
<span class="normal">150</span>
<span class="normal">151</span>
<span class="normal">152</span>
<span class="normal">153</span>
<span class="normal">154</span>
<span class="normal">155</span>
<span class="normal">156</span>
<span class="normal">157</span>
<span class="normal">158</span>
<span class="normal">159</span>
<span class="normal">160</span>
<span class="normal">161</span>
<span class="normal">162</span>
<span class="normal">163</span>
<span class="normal">164</span>
<span class="normal">165</span>
<span class="normal">166</span>
<span class="normal">167</span>
<span class="normal">168</span>
<span class="normal">169</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-119"><span class="k">class</span><span class="w"> </span><span class="nc">STTModel</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABC</span><span class="p">):</span>
</span><span id="__span-0-120"><span class="w"> </span><span class="sd">&quot;&quot;&quot;A speech-to-text model that can convert audio input into text.&quot;&quot;&quot;</span>
</span><span id="__span-0-121">
</span><span id="__span-0-122"> <span class="nd">@property</span>
</span><span id="__span-0-123"> <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-124"> <span class="k">def</span><span class="w"> </span><span class="nf">model_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="__span-0-125"><span class="w"> </span><span class="sd">&quot;&quot;&quot;The name of the STT model.&quot;&quot;&quot;</span>
</span><span id="__span-0-126"> <span class="k">pass</span>
</span><span id="__span-0-127">
</span><span id="__span-0-128"> <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-129"> <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">transcribe</span><span class="p">(</span>
</span><span id="__span-0-130"> <span class="bp">self</span><span class="p">,</span>
</span><span id="__span-0-131"> <span class="nb">input</span><span class="p">:</span> <span class="n">AudioInput</span><span class="p">,</span>
</span><span id="__span-0-132"> <span class="n">settings</span><span class="p">:</span> <span class="n">STTModelSettings</span><span class="p">,</span>
</span><span id="__span-0-133"> <span class="n">trace_include_sensitive_data</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
</span><span id="__span-0-134"> <span class="n">trace_include_sensitive_audio_data</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
</span><span id="__span-0-135"> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="__span-0-136"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Given an audio input, produces a text transcription.</span>
</span><span id="__span-0-137">
</span><span id="__span-0-138"><span class="sd"> Args:</span>
</span><span id="__span-0-139"><span class="sd"> input: The audio input to transcribe.</span>
</span><span id="__span-0-140"><span class="sd"> settings: The settings to use for the transcription.</span>
</span><span id="__span-0-141"><span class="sd"> trace_include_sensitive_data: Whether to include sensitive data in traces.</span>
</span><span id="__span-0-142"><span class="sd"> trace_include_sensitive_audio_data: Whether to include sensitive audio data in traces.</span>
</span><span id="__span-0-143">
</span><span id="__span-0-144"><span class="sd"> Returns:</span>
</span><span id="__span-0-145"><span class="sd"> The text transcription of the audio input.</span>
</span><span id="__span-0-146"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-147"> <span class="k">pass</span>
</span><span id="__span-0-148">
</span><span id="__span-0-149"> <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-150"> <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">create_session</span><span class="p">(</span>
</span><span id="__span-0-151"> <span class="bp">self</span><span class="p">,</span>
</span><span id="__span-0-152"> <span class="nb">input</span><span class="p">:</span> <span class="n">StreamedAudioInput</span><span class="p">,</span>
</span><span id="__span-0-153"> <span class="n">settings</span><span class="p">:</span> <span class="n">STTModelSettings</span><span class="p">,</span>
</span><span id="__span-0-154"> <span class="n">trace_include_sensitive_data</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
</span><span id="__span-0-155"> <span class="n">trace_include_sensitive_audio_data</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
</span><span id="__span-0-156"> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">StreamedTranscriptionSession</span><span class="p">:</span>
</span><span id="__span-0-157"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Creates a new transcription session, which you can push audio to, and receive a stream</span>
</span><span id="__span-0-158"><span class="sd"> of text transcriptions.</span>
</span><span id="__span-0-159">
</span><span id="__span-0-160"><span class="sd"> Args:</span>
</span><span id="__span-0-161"><span class="sd"> input: The audio input to transcribe.</span>
</span><span id="__span-0-162"><span class="sd"> settings: The settings to use for the transcription.</span>
</span><span id="__span-0-163"><span class="sd"> trace_include_sensitive_data: Whether to include sensitive data in traces.</span>
</span><span id="__span-0-164"><span class="sd"> trace_include_sensitive_audio_data: Whether to include sensitive audio data in traces.</span>
</span><span id="__span-0-165">
</span><span id="__span-0-166"><span class="sd"> Returns:</span>
</span><span id="__span-0-167"><span class="sd"> A new transcription session.</span>
</span><span id="__span-0-168"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-169"> <span class="k">pass</span>
</span></code></pre></div></td></tr></table></div>
</details>
<div class="doc doc-children">
<div class="doc doc-object doc-attribute">
<h4 id="cai.sdk.agents.voice.model.STTModel.model_name" class="doc doc-heading">
<span class="doc doc-object-name doc-attribute-name">model_name</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
<small class="doc doc-label doc-label-property"><code>property</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="n">model_name</span><span class="p">:</span> <span class="n"><span title="str">str</span></span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The name of the STT model.</p>
</div>
</div>
<div class="doc doc-object doc-function">
<h4 id="cai.sdk.agents.voice.model.STTModel.transcribe" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">transcribe</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="nf">transcribe</span><span class="p">(</span>
</span><span id="__span-0-2"> <span class="nb">input</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="AudioInput
dataclass
(cai.sdk.agents.voice.input.AudioInput)" href="../input/#cai.sdk.agents.voice.input.AudioInput">AudioInput</a></span><span class="p">,</span>
</span><span id="__span-0-3"> <span class="n">settings</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="STTModelSettings
dataclass
(cai.sdk.agents.voice.model.STTModelSettings)" href="#cai.sdk.agents.voice.model.STTModelSettings">STTModelSettings</a></span><span class="p">,</span>
</span><span id="__span-0-4"> <span class="n">trace_include_sensitive_data</span><span class="p">:</span> <span class="n"><span title="bool">bool</span></span><span class="p">,</span>
</span><span id="__span-0-5"> <span class="n">trace_include_sensitive_audio_data</span><span class="p">:</span> <span class="n"><span title="bool">bool</span></span><span class="p">,</span>
</span><span id="__span-0-6"><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="str">str</span></span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Given an audio input, produces a text transcription.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>input</code>
</td>
<td>
<code><a class="autorefs autorefs-internal" title="AudioInput
dataclass
(cai.sdk.agents.voice.input.AudioInput)" href="../input/#cai.sdk.agents.voice.input.AudioInput">AudioInput</a></code>
</td>
<td>
<div class="doc-md-description">
<p>The audio input to transcribe.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>settings</code>
</td>
<td>
<code><a class="autorefs autorefs-internal" title="STTModelSettings
dataclass
(cai.sdk.agents.voice.model.STTModelSettings)" href="#cai.sdk.agents.voice.model.STTModelSettings">STTModelSettings</a></code>
</td>
<td>
<div class="doc-md-description">
<p>The settings to use for the transcription.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>trace_include_sensitive_data</code>
</td>
<td>
<code><span title="bool">bool</span></code>
</td>
<td>
<div class="doc-md-description">
<p>Whether to include sensitive data in traces.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>trace_include_sensitive_audio_data</code>
</td>
<td>
<code><span title="bool">bool</span></code>
</td>
<td>
<div class="doc-md-description">
<p>Whether to include sensitive audio data in traces.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="str">str</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The text transcription of the audio input.</p>
</div>
</td>
</tr>
</tbody>
</table>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">128</span>
<span class="normal">129</span>
<span class="normal">130</span>
<span class="normal">131</span>
<span class="normal">132</span>
<span class="normal">133</span>
<span class="normal">134</span>
<span class="normal">135</span>
<span class="normal">136</span>
<span class="normal">137</span>
<span class="normal">138</span>
<span class="normal">139</span>
<span class="normal">140</span>
<span class="normal">141</span>
<span class="normal">142</span>
<span class="normal">143</span>
<span class="normal">144</span>
<span class="normal">145</span>
<span class="normal">146</span>
<span class="normal">147</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-128"><span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-129"><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">transcribe</span><span class="p">(</span>
</span><span id="__span-0-130"> <span class="bp">self</span><span class="p">,</span>
</span><span id="__span-0-131"> <span class="nb">input</span><span class="p">:</span> <span class="n">AudioInput</span><span class="p">,</span>
</span><span id="__span-0-132"> <span class="n">settings</span><span class="p">:</span> <span class="n">STTModelSettings</span><span class="p">,</span>
</span><span id="__span-0-133"> <span class="n">trace_include_sensitive_data</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
</span><span id="__span-0-134"> <span class="n">trace_include_sensitive_audio_data</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
</span><span id="__span-0-135"><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="__span-0-136"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Given an audio input, produces a text transcription.</span>
</span><span id="__span-0-137">
</span><span id="__span-0-138"><span class="sd"> Args:</span>
</span><span id="__span-0-139"><span class="sd"> input: The audio input to transcribe.</span>
</span><span id="__span-0-140"><span class="sd"> settings: The settings to use for the transcription.</span>
</span><span id="__span-0-141"><span class="sd"> trace_include_sensitive_data: Whether to include sensitive data in traces.</span>
</span><span id="__span-0-142"><span class="sd"> trace_include_sensitive_audio_data: Whether to include sensitive audio data in traces.</span>
</span><span id="__span-0-143">
</span><span id="__span-0-144"><span class="sd"> Returns:</span>
</span><span id="__span-0-145"><span class="sd"> The text transcription of the audio input.</span>
</span><span id="__span-0-146"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-147"> <span class="k">pass</span>
</span></code></pre></div></td></tr></table></div>
</details>
</div>
</div>
<div class="doc doc-object doc-function">
<h4 id="cai.sdk.agents.voice.model.STTModel.create_session" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">create_session</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="nf">create_session</span><span class="p">(</span>
</span><span id="__span-0-2"> <span class="nb">input</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="StreamedAudioInput (cai.sdk.agents.voice.input.StreamedAudioInput)" href="../input/#cai.sdk.agents.voice.input.StreamedAudioInput">StreamedAudioInput</a></span><span class="p">,</span>
</span><span id="__span-0-3"> <span class="n">settings</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="STTModelSettings
dataclass
(cai.sdk.agents.voice.model.STTModelSettings)" href="#cai.sdk.agents.voice.model.STTModelSettings">STTModelSettings</a></span><span class="p">,</span>
</span><span id="__span-0-4"> <span class="n">trace_include_sensitive_data</span><span class="p">:</span> <span class="n"><span title="bool">bool</span></span><span class="p">,</span>
</span><span id="__span-0-5"> <span class="n">trace_include_sensitive_audio_data</span><span class="p">:</span> <span class="n"><span title="bool">bool</span></span><span class="p">,</span>
</span><span id="__span-0-6"><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><a class="autorefs autorefs-internal" title="StreamedTranscriptionSession (cai.sdk.agents.voice.model.StreamedTranscriptionSession)" href="#cai.sdk.agents.voice.model.StreamedTranscriptionSession">StreamedTranscriptionSession</a></span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Creates a new transcription session, which you can push audio to, and receive a stream
of text transcriptions.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>input</code>
</td>
<td>
<code><a class="autorefs autorefs-internal" title="StreamedAudioInput (cai.sdk.agents.voice.input.StreamedAudioInput)" href="../input/#cai.sdk.agents.voice.input.StreamedAudioInput">StreamedAudioInput</a></code>
</td>
<td>
<div class="doc-md-description">
<p>The audio input to transcribe.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>settings</code>
</td>
<td>
<code><a class="autorefs autorefs-internal" title="STTModelSettings
dataclass
(cai.sdk.agents.voice.model.STTModelSettings)" href="#cai.sdk.agents.voice.model.STTModelSettings">STTModelSettings</a></code>
</td>
<td>
<div class="doc-md-description">
<p>The settings to use for the transcription.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>trace_include_sensitive_data</code>
</td>
<td>
<code><span title="bool">bool</span></code>
</td>
<td>
<div class="doc-md-description">
<p>Whether to include sensitive data in traces.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>trace_include_sensitive_audio_data</code>
</td>
<td>
<code><span title="bool">bool</span></code>
</td>
<td>
<div class="doc-md-description">
<p>Whether to include sensitive audio data in traces.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="StreamedTranscriptionSession (cai.sdk.agents.voice.model.StreamedTranscriptionSession)" href="#cai.sdk.agents.voice.model.StreamedTranscriptionSession">StreamedTranscriptionSession</a></code>
</td>
<td>
<div class="doc-md-description">
<p>A new transcription session.</p>
</div>
</td>
</tr>
</tbody>
</table>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">149</span>
<span class="normal">150</span>
<span class="normal">151</span>
<span class="normal">152</span>
<span class="normal">153</span>
<span class="normal">154</span>
<span class="normal">155</span>
<span class="normal">156</span>
<span class="normal">157</span>
<span class="normal">158</span>
<span class="normal">159</span>
<span class="normal">160</span>
<span class="normal">161</span>
<span class="normal">162</span>
<span class="normal">163</span>
<span class="normal">164</span>
<span class="normal">165</span>
<span class="normal">166</span>
<span class="normal">167</span>
<span class="normal">168</span>
<span class="normal">169</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-149"><span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-150"><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">create_session</span><span class="p">(</span>
</span><span id="__span-0-151"> <span class="bp">self</span><span class="p">,</span>
</span><span id="__span-0-152"> <span class="nb">input</span><span class="p">:</span> <span class="n">StreamedAudioInput</span><span class="p">,</span>
</span><span id="__span-0-153"> <span class="n">settings</span><span class="p">:</span> <span class="n">STTModelSettings</span><span class="p">,</span>
</span><span id="__span-0-154"> <span class="n">trace_include_sensitive_data</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
</span><span id="__span-0-155"> <span class="n">trace_include_sensitive_audio_data</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
</span><span id="__span-0-156"><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">StreamedTranscriptionSession</span><span class="p">:</span>
</span><span id="__span-0-157"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Creates a new transcription session, which you can push audio to, and receive a stream</span>
</span><span id="__span-0-158"><span class="sd"> of text transcriptions.</span>
</span><span id="__span-0-159">
</span><span id="__span-0-160"><span class="sd"> Args:</span>
</span><span id="__span-0-161"><span class="sd"> input: The audio input to transcribe.</span>
</span><span id="__span-0-162"><span class="sd"> settings: The settings to use for the transcription.</span>
</span><span id="__span-0-163"><span class="sd"> trace_include_sensitive_data: Whether to include sensitive data in traces.</span>
</span><span id="__span-0-164"><span class="sd"> trace_include_sensitive_audio_data: Whether to include sensitive audio data in traces.</span>
</span><span id="__span-0-165">
</span><span id="__span-0-166"><span class="sd"> Returns:</span>
</span><span id="__span-0-167"><span class="sd"> A new transcription session.</span>
</span><span id="__span-0-168"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-169"> <span class="k">pass</span>
</span></code></pre></div></td></tr></table></div>
</details>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h3 id="cai.sdk.agents.voice.model.VoiceModelProvider" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">VoiceModelProvider</span>
</h3>
<div class="doc doc-contents ">
<p class="doc doc-class-bases">
Bases: <code><span title="abc.ABC">ABC</span></code></p>
<p>The base interface for a voice model provider.</p>
<p>A model provider is responsible for creating speech-to-text and text-to-speech models, given a
name.</p>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">172</span>
<span class="normal">173</span>
<span class="normal">174</span>
<span class="normal">175</span>
<span class="normal">176</span>
<span class="normal">177</span>
<span class="normal">178</span>
<span class="normal">179</span>
<span class="normal">180</span>
<span class="normal">181</span>
<span class="normal">182</span>
<span class="normal">183</span>
<span class="normal">184</span>
<span class="normal">185</span>
<span class="normal">186</span>
<span class="normal">187</span>
<span class="normal">188</span>
<span class="normal">189</span>
<span class="normal">190</span>
<span class="normal">191</span>
<span class="normal">192</span>
<span class="normal">193</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-172"><span class="k">class</span><span class="w"> </span><span class="nc">VoiceModelProvider</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABC</span><span class="p">):</span>
</span><span id="__span-0-173"><span class="w"> </span><span class="sd">&quot;&quot;&quot;The base interface for a voice model provider.</span>
</span><span id="__span-0-174">
</span><span id="__span-0-175"><span class="sd"> A model provider is responsible for creating speech-to-text and text-to-speech models, given a</span>
</span><span id="__span-0-176"><span class="sd"> name.</span>
</span><span id="__span-0-177"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-178">
</span><span id="__span-0-179"> <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-180"> <span class="k">def</span><span class="w"> </span><span class="nf">get_stt_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">STTModel</span><span class="p">:</span>
</span><span id="__span-0-181"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Get a speech-to-text model by name.</span>
</span><span id="__span-0-182">
</span><span id="__span-0-183"><span class="sd"> Args:</span>
</span><span id="__span-0-184"><span class="sd"> model_name: The name of the model to get.</span>
</span><span id="__span-0-185">
</span><span id="__span-0-186"><span class="sd"> Returns:</span>
</span><span id="__span-0-187"><span class="sd"> The speech-to-text model.</span>
</span><span id="__span-0-188"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-189"> <span class="k">pass</span>
</span><span id="__span-0-190">
</span><span id="__span-0-191"> <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-192"> <span class="k">def</span><span class="w"> </span><span class="nf">get_tts_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">TTSModel</span><span class="p">:</span>
</span><span id="__span-0-193"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Get a text-to-speech model by name.&quot;&quot;&quot;</span>
</span></code></pre></div></td></tr></table></div>
</details>
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h4 id="cai.sdk.agents.voice.model.VoiceModelProvider.get_stt_model" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_stt_model</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="nf">get_stt_model</span><span class="p">(</span><span class="n">model_name</span><span class="p">:</span> <span class="n"><span title="str">str</span></span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><a class="autorefs autorefs-internal" title="STTModel (cai.sdk.agents.voice.model.STTModel)" href="#cai.sdk.agents.voice.model.STTModel">STTModel</a></span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Get a speech-to-text model by name.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>model_name</code>
</td>
<td>
<code><span title="str">str</span> | None</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the model to get.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="STTModel (cai.sdk.agents.voice.model.STTModel)" href="#cai.sdk.agents.voice.model.STTModel">STTModel</a></code>
</td>
<td>
<div class="doc-md-description">
<p>The speech-to-text model.</p>
</div>
</td>
</tr>
</tbody>
</table>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">179</span>
<span class="normal">180</span>
<span class="normal">181</span>
<span class="normal">182</span>
<span class="normal">183</span>
<span class="normal">184</span>
<span class="normal">185</span>
<span class="normal">186</span>
<span class="normal">187</span>
<span class="normal">188</span>
<span class="normal">189</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-179"><span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-180"><span class="k">def</span><span class="w"> </span><span class="nf">get_stt_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">STTModel</span><span class="p">:</span>
</span><span id="__span-0-181"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Get a speech-to-text model by name.</span>
</span><span id="__span-0-182">
</span><span id="__span-0-183"><span class="sd"> Args:</span>
</span><span id="__span-0-184"><span class="sd"> model_name: The name of the model to get.</span>
</span><span id="__span-0-185">
</span><span id="__span-0-186"><span class="sd"> Returns:</span>
</span><span id="__span-0-187"><span class="sd"> The speech-to-text model.</span>
</span><span id="__span-0-188"><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="__span-0-189"> <span class="k">pass</span>
</span></code></pre></div></td></tr></table></div>
</details>
</div>
</div>
<div class="doc doc-object doc-function">
<h4 id="cai.sdk.agents.voice.model.VoiceModelProvider.get_tts_model" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_tts_model</span>
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
</span>
</h4>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><span class="nf">get_tts_model</span><span class="p">(</span><span class="n">model_name</span><span class="p">:</span> <span class="n"><span title="str">str</span></span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><a class="autorefs autorefs-internal" title="TTSModel (cai.sdk.agents.voice.model.TTSModel)" href="#cai.sdk.agents.voice.model.TTSModel">TTSModel</a></span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Get a text-to-speech model by name.</p>
<details class="quote">
<summary>Source code in <code>src/cai/sdk/agents/voice/model.py</code></summary>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">191</span>
<span class="normal">192</span>
<span class="normal">193</span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-191"><span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
</span><span id="__span-0-192"><span class="k">def</span><span class="w"> </span><span class="nf">get_tts_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">TTSModel</span><span class="p">:</span>
</span><span id="__span-0-193"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Get a text-to-speech model by name.&quot;&quot;&quot;</span>
</span></code></pre></div></td></tr></table></div>
</details>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy", "content.code.select", "navigation.path", "navigation.sections", "navigation.expand", "content.code.annotate"], "search": "../../../assets/javascripts/workers/search.f8cc74c7.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../../../assets/javascripts/bundle.c8b220af.min.js"></script>
</body>
</html>