Aprenda

Texto para fala em Python: salve áudio em WAV

Rene, Kabir Goel 
Texto para fala em Python: salve áudio em WAV

Para converter texto em fala em Python, envie uma transcrição a um modelo e salve o áudio retornado. Este guia usa o SDK Python da Cartesia para gerar um WAV com Sonic.

Você precisa de Python 3.9 ou superior, internet e uma conta Cartesia com acesso à API. O exemplo usa o SDK 4.2.0.1 Ele chama uma API hospedada, então o texto sai da máquina. Para síntese offline, use um mecanismo local.

Instale o SDK Python

Crie um ambiente virtual no diretório do projeto:

python -m venv .venv

No macOS ou Linux, ative-o com:

source .venv/bin/activate

No Windows PowerShell, use:

.venv\Scripts\Activate.ps1

Instale a versão usada no guia:

python -m pip install "cartesia==4.2.0"

Se seu sistema usa python3 em vez de python, use esse comando para criar o ambiente. Fixar a versão mantém os nomes dos métodos estáveis. Ao atualizar, confira as notas de versão do SDK.

Configure a chave de API

Crie uma chave no Cartesia Playground com as permissões necessárias para gerar fala. Defina-a no terminal em que executará Python.

No macOS ou Linux:

export CARTESIA_API_KEY="your-api-key"

No Windows PowerShell:

$env:CARTESIA_API_KEY = "your-api-key"

Substitua your-api-key pela sua chave. Trate-a como uma senha. Não a envie ao Git, a um notebook público ou ao código do navegador. Em produção, armazene-a no gerenciador de segredos do servidor. Se for exposta, revogue-a e crie outra.

Gere e salve um WAV

Salve este código como speak.py:

import os
from pathlib import Path

from cartesia import Cartesia

api_key = os.environ.get("CARTESIA_API_KEY")
if not api_key:
    raise SystemExit("Set CARTESIA_API_KEY before running this script.")

output_path = Path("hello.wav")

with Cartesia(api_key=api_key) as client:
    response = client.tts.generate(
        model_id="sonic-latest",
        transcript="Hello from Python. Your first audio file is ready.",
        voice="e07c00bc-4134-4eae-9ea4-1a55fb45746b",
        output_format={
            "container": "wav",
            "encoding": "pcm_f32le",
            "sample_rate": 44100,
        },
    )
    response.write_to_file(output_path)

print(f"Saved audio to {output_path.resolve()}")

Execute no mesmo terminal:

python speak.py

Após uma solicitação bem-sucedida, abra hello.wav em um reprodutor compatível com WAV PCM de ponto flutuante. O script imprime o caminho completo, evitando dúvida sobre o diretório. Ele salva, mas não reproduz automaticamente. Executá-lo novamente sobrescreve hello.wav e faz outra solicitação à API.

A solicitação segue o exemplo publicado do SDK.1 O ID de voz vem dessa referência. Você pode trocá-lo por um ID disponível na sua conta.

Escolha voz, modelo e formato

transcript é o texto que Sonic deve falar. Comece com uma frase antes de enviar um documento longo. Use texto que você pode enviar à API e evite registrar transcrições privadas nos logs.

voice seleciona a voz. Teste uma frase no gerador de voz e use o ID escolhido na solicitação. Nome de exibição não é ID. Para vozes clonadas, confirme que tem permissão da pessoa.

O exemplo usa sonic-latest, como a referência do SDK. Um alias pode mudar independentemente do SDK instalado. Para testes reproduzíveis em produção, escolha um ID específico compatível na documentação de modelos e registre-o com o ID da voz e o texto.

O formato de saída descreve o arquivo:

CampoValor no exemploSignificado
containerwavColoca o áudio em um WAV com cabeçalho.
encodingpcm_f32leArmazena amostras PCM de ponto flutuante de 32 bits, little-endian.
sample_rate44100Usa 44,100 amostras por segundo.

PCM bruto não tem cabeçalho WAV. Renomeá-lo para .wav não o transforma em WAV. Para enviar áudio à telefonia ou a outro serviço, confira contêiner, codificação e taxa de amostragem exigidos antes de gerar.

Resolva erros comuns

SintomaO que verificar
ModuleNotFoundError: No module named 'cartesia'Ative o ambiente em que instalou o SDK. Execute python -m pip show cartesia com o mesmo interpretador do script.
Set CARTESIA_API_KEY before running this script.Defina a variável no terminal atual e execute novamente. Editor ou notebook podem usar outro ambiente.
Erro de autenticação ou permissãoConfirme que a chave está ativa, pertence à conta certa e tem as permissões necessárias. Nunca a inclua no relatório de erro.
Erro de modelo, voz ou formatoConfira a referência atual e a disponibilidade da voz na conta. Copie os IDs exatamente.
Erro de limite de taxaConfira os limites e reduza a concorrência. Evite um ciclo de novas tentativas imediatas.
AttributeError envolvendo generateConfira a versão instalada. Exemplos antigos podem usar client.tts.bytes. Este guia usa client.tts.generate na versão 4.2.0.
O arquivo existe, mas não reproduzConfirme container="wav", suporte do reprodutor a PCM de ponto flutuante e que o arquivo não está vazio.

Ao pedir ajuda, informe versões de Python e SDK, código de status e ID da solicitação retornado. Remova antes chaves e texto privado.

Quando usar streaming

Salvar WAV é útil para narração, locução e testes de integração. Uma aplicação conversacional pode precisar reproduzir antes de a resposta completa ficar pronta ou receber texto conforme o LLM o gera.

Nesse caso, instale o suporte WebSocket no mesmo ambiente:

python -m pip install "cartesia[websockets]==4.2.0"

Comece pelo exemplo de entrada em streaming via WebSocket.1 Você também precisará de reprodução, buffers e tratamento de interrupções. Gravar os segmentos recebidos em disco não faz a aplicação falar em tempo real.

Quando o exemplo curto funcionar, use uma frase da sua aplicação. Ouça nomes, números e abreviações antes de gerar um lote maior. Confira os preços da API e guarde os IDs de modelo e voz com os resultados.

Notas de rodapé

  1. Cartesia, SDK Python 4.2.0 no PyPI e referência de uso do SDK, consultados em 13 de setembro de 2026. ↩ ↩2 ↩3

Perguntas frequentes

Como converter texto em fala com Python?

Instale o SDK Python da Cartesia, defina CARTESIA_API_KEY no ambiente e chame client.tts.generate com transcrição, modelo, voz e formato. Use response.write_to_file para salvar o áudio. Este guia usa o SDK 4.2.0.

Este exemplo funciona offline?

Não. O SDK envia a transcrição à API da Cartesia e exige internet e acesso à API. O WAV salvo pode ser reproduzido offline. Se o texto precisa permanecer na máquina, escolha um mecanismo local.

O SDK Python da Cartesia é gratuito?

Instalar o SDK não dá geração ilimitada. O uso da API segue o plano e os limites da conta. Confira os preços atuais antes de executar um lote de solicitações.

Posso transmitir fala em vez de salvar um arquivo?

Sim. O SDK aceita respostas em streaming e entrada por WebSocket. Salvar um WAV completo é um primeiro teste simples, mas não implementa reprodução em tempo real. Para texto incremental, instale cartesia[websockets] e veja o exemplo WebSocket.