deepgram/deepgram-rust-sdk · Archived

deepgram-rust-text-to-speech

Use when implementing Deepgram text-to-speech in the Rust SDK, including Aura model selection, speak feature flags, output file or byte-stream handling, and real crate APIs under speak::options and Speak.

First seen May 31, 2026

Installation

$ npx skills add deepgram/deepgram-rust-sdk --skill deepgram-rust-text-to-speech

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from deepgram/deepgram-rust-sdk.

npx skills add deepgram/deepgram-rust-sdk

Browse all from deepgram/deepgram-rust-sdk

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 66
License LICENSE
Default branch main
Open issues 14
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,079 B
  • docs SUMMARY.md 240 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 7 installs

SKILL.md

Using Deepgram Text-to-Speech (Rust SDK)

Use this skill when generating audio from text with the Rust SDK's Speak surface.

When to use this product

  • Converting text into audio files with speaktofile(...).
  • Streaming TTS bytes with speaktostream(...).
  • Selecting Aura voices and output encodings with speak::options::Options.

Authentication

For a TTS-only install:

[dependencies]
deepgram = { version = "0.10.0", default-features = false, features = ["speak"] }
tokio = { version = "1", features = ["full"] }
futures = "0.3"
# Only add `bytes = "1"` if you need to name `bytes::Bytes` in your own signatures.
# The code below relies on type inference and does not import bytes directly.
let dg = deepgram::Deepgram::new(std::env::var("DEEPGRAM_API_KEY")?)?;
  • API keys use Authorization: Token <api_key>.
  • The crate does not expose a TTS WebSocket client today; the supported Rust surface is REST returning a saved file or a stream of bytes.

Quick start

Quick start: save audio to a file

use std::{path::Path, time::Instant};

use deepgram::{
    speak::options::{Container, Encoding, Model, Options},
    Deepgram,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let api_key = std::env::var("DEEPGRAM_API_KEY")?;
    let dg = Deepgram::new(&api_key)?;

    let options = Options::builder()
        .model(Model::AuraAsteriaEn)
        .encoding(Encoding::Linear16)
        .sample_rate(16000)
        .container(Container::Wav)
        .build();

    let start = Instant::now();
    dg.text_to_speech()
        .speak_to_file("Hello from Rust.", &options, Path::new("output.wav"))
        .await?;

    println!("Time to download audio: {:.2?}", start.elapsed());
    Ok(())
}

Quick start: stream response bytes

use deepgram::{
    speak::options::{Container, Encoding, Model, Options},
    Deepgram,
};
use futures::stream::StreamExt;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let api_key = std::env::var("DEEPGRAM_API_KEY")?;
    let dg = Deepgram::new(&api_key)?;

    let options = Options::builder()
        .model(Model::AuraAsteriaEn)
        .encoding(Encoding::Linear16)
        .sample_rate(16000)
        .container(Container::Wav)
        .build();

    let mut stream = dg
        .text_to_speech()
        .speak_to_stream("Hello from Rust.", &options)
        .await?;

    while let Some(chunk) = stream.next().await {
        println!("received {} bytes", chunk.len());
    }

    Ok(())
}

Key parameters

  • Entrypoints: Deepgram::texttospeech(), Speak::speaktofile(...), Speak::speaktostream(...).
  • TTS Options builder fields: model, encoding, samplerate, container, bitrate.
  • Model enum lives in deepgram::speak::options::Model and includes voices such as AuraAsteriaEn, AuraLunaEn, AuraOrionEn, plus CustomId(String).
  • speaktostream(...) returns impl Stream<Item = bytes::Bytes>.

API reference (layered)

  1. In-repo

- README.md - src/speak/rest.rs - src/speak/options.rs - examples/speak/rest/texttospeechtofile.rs - examples/speak/rest/texttospeechtostream.rs

  1. OpenAPI

- Raw spec: https://developers.deepgram.com/openapi.yaml - Endpoint reference: https://developers.deepgram.com/reference/text-to-speech/speak-request

  1. AsyncAPI

- Rust SDK support: not implemented in this crate - Raw spec if you need unsupported WS TTS: https://developers.deepgram.com/asyncapi.yaml

  1. Context7

- /llmstxt/developersdeepgramllms_txt

  1. Product docs

- https://developers.deepgram.com/docs/text-to-speech - https://developers.deepgram.com/docs/tts-rest

Gotchas

  1. This crate is REST-only for TTS. There is no supported Rust WebSocket TTS surface in src/speak/ today.
  2. Pick encoding/container pairs deliberately. For raw output use Container::None; for .wav output use Container::Wav.
  3. speaktostream(...) still uses the REST endpoint. It streams HTTP response bytes; it is not the separate TTS WebSocket API.
  4. Use API keys with Token. Do not send API keys as Bearer.

Example files in this repo

  • examples/speak/rest/texttospeechtofile.rs
  • examples/speak/rest/texttospeechtostream.rs

Central product skills

For cross-language Deepgram product knowledge — the consolidated API reference, documentation finder, focused runnable recipes, third-party integration examples, and MCP setup — install the central skills:

npx skills add deepgram/skills

This SDK ships language-idiomatic code skills; deepgram/skills ships cross-language product knowledge (see api, docs, recipes, examples, starters, setup-mcp).