> ## Documentation Index
> Fetch the complete documentation index at: https://docs.camb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Baseten

> Use Camb.ai MARS models with your own Baseten deployment

## Overview

The Camb.ai SDK supports using **Baseten** as a TTS provider, allowing you to run MARS models on your own Baseten infrastructure for enhanced control and scalability.

Deployment Link: [https://app.baseten.co/deploy/mars8-flash](https://app.baseten.co/deploy/mars8-flash)

### Key Features

* **Self-hosted Infrastructure**: Run MARS models on your own Baseten deployment
* **Voice Cloning**: Requires reference audio for voice cloning capabilities
* **Streaming Support**: Real-time audio streaming
* **Full SDK Integration**: Works seamlessly with both Python and TypeScript SDKs

***

## Prerequisites

* A Baseten account with MARS model deployed
* Your Baseten API key
* Your Baseten model URL (mars\_pro\_url)
* A reference audio file for voice cloning

***

## Installation

<CodeGroup>
  ```bash Python theme={null}
  pip install camb-sdk
  ```

  ```bash TypeScript theme={null}
  npm install @camb-ai/sdk
  ```
</CodeGroup>

## Usage

<CodeGroup>
  ```python Python theme={null}
  import base64
  from camb.client import CambAI, save_stream_to_file

  client = CambAI(
      tts_provider="baseten",
      provider_params={
          "api_key": "YOUR_BASETEN_API_KEY",
          "mars_pro_url": "https://model-xxxxxx.api.baseten.co/environments/production/predict"
      }
  )

  def main():
      response = client.text_to_speech.tts(
          text="Hello World and my dear friends",
          language="en-us",
          speech_model="mars-pro",
          request_options={
              "additional_body_parameters": {
                  "reference_audio": base64.b64encode(open("audio.wav", "rb").read()).decode('utf-8'),
                  "reference_language": "en-us"  # required
              },
              "timeout_in_seconds": 300
          }
      )
      save_stream_to_file(response, "tts_output.mp3")
      print("Success! Audio saved to tts_output.mp3")

  if __name__ == "__main__":
      main()
  ```

  ```javascript TypeScript theme={null}
  import { CambClient, saveStreamToFile } from '@camb-ai/sdk';
  import * as fs from 'fs';

  // Initialize client with Baseten provider
  const client = new CambClient({
      ttsProvider: 'baseten',
      providerParams: {
          api_key: process.env.BASETEN_API_KEY || 'YOUR_BASETEN_API_KEY',
          mars_pro_url: process.env.BASETEN_URL || 'YOUR_BASETEN_MARS_PRO_URL'
      }
  });

  async function main() {
      try {
          // Read reference audio file (you need to provide this)
          const referenceAudioPath = process.env.REFERENCE_AUDIO_PATH || 'reference.wav';

          if (!fs.existsSync(referenceAudioPath)) {
              console.error(`Reference audio file not found: ${referenceAudioPath}`);
              console.log('Please provide a reference audio file or set REFERENCE_AUDIO_PATH environment variable');
              return;
          }

          const referenceAudio = fs.readFileSync(referenceAudioPath).toString('base64');

          console.log('Generating speech with Baseten provider...');
          const response = await client.textToSpeech.tts({
              text: 'Hello World and my dear friends',
              language: 'en-us',
              speech_model: 'mars-pro',
              output_configuration: {
                  format: 'wav'
              },
              additional_body_parameters: {
                  reference_audio: referenceAudio,
                  reference_language: 'en-us'  // required
              }
          });

          const outputFile = 'baseten_output.wav';
          await saveStreamToFile(response, outputFile);
          console.log(`✓ Audio generated with Baseten provider and saved to ${outputFile}`);

      } catch (error) {
          console.error('Error:', error.message);
          if (error.body) {
              console.error('Details:', error.body);
          }
      }
  }

  main();
  ```
</CodeGroup>

***

## Configuration

### Required Parameters

| Parameter            | Description                                          |
| -------------------- | ---------------------------------------------------- |
| `api_key`            | Your Baseten API key                                 |
| `mars_pro_url`       | Your Baseten MARS model endpoint URL                 |
| `reference_audio`    | Base64-encoded reference audio for voice cloning     |
| `reference_language` | Language code of the reference audio (e.g., `en-us`) |

### Optional Parameters

| Parameter            | Description                   | Default    |
| -------------------- | ----------------------------- | ---------- |
| `speech_model`       | MARS model variant            | `mars-pro` |
| `language`           | Target language for synthesis | `en-us`    |
| `output_format`      | Audio output format           | `mp3`      |
| `timeout_in_seconds` | Request timeout               | -          |

***

## Resources

* [Baseten Documentation](https://docs.baseten.co)
* [Camb.ai Python SDK](https://github.com/camb-ai/cambai-python-sdk)
* [Camb.ai TypeScript SDK](https://github.com/camb-ai/cambai-node-sdk)
