loudkit
Servidor MCP local de texto para fala: 28 vozes em 10 idiomas, além de perfis de voz clonados, com saída em WAV/FLAC/MP3/Opus. Funciona no dispositivo via stdio, sem chave de API.
Documentação
loudkit
Síntese de voz com som natural que roda no seu próprio hardware.
Vinte e oito vozes em dez idiomas, clonagem de voz a partir de cerca de dez segundos de áudio e SDKs nativos para Python, Swift, Go, Rust e TypeScript. Baixe o modelo uma vez e rode offline, sem conta, telemetria ou cobrança de uso.
loudkit é o motor de fala dentro do LoudReader, um aplicativo de leitura que fala artigos, PDFs e livros no dispositivo. O motor está aqui sob Apache-2.0 para quem quiser construir diretamente com ele.
Ouça as vozes | Experimente no navegador | Abra no Colab | Modelo | Documentação
Ouça uma voz em um comando
pip install "loudkit[torch,audio,hub]"
loudkit speak --voice joe "Hello from loudkit." --play
A primeira execução baixa o modelo de 747 MB e as 28 vozes; depois disso, roda
offline. --play usa o player do sistema; adicione -o hello.wav para manter o arquivo.
Todas as outras vozes funcionam da mesma forma: --voice kathleen, --voice dave.
O mesmo a partir do Python
import loudkit as lk
engine = lk.load("loudreader/loudr-1")
voice = engine.voice("joe")
engine.synthesize("Hello from loudkit.", voice, seed=7).save("hello.wav")
engine.voices() lista os 28 nomes. synthesize aceita texto de qualquer
extensão, e engine.stream(...) entrega o mesmo áudio frase por frase
para que a reprodução possa começar cedo. Todas as 28 vozes, incluindo Henry, Oliver, Oscar e
Sophie, estão incluídas nos downloads de ambos os modelos e são carregadas pelo nome.
Começando é a página para ler em seguida.
O mesmo em Swift, Go, Rust e TypeScript
Cada porta carrega o modelo pelo nome, busca e verifica na primeira chamada e roda offline depois disso. Os trechos precisam da versão 0.1.1 de cada pacote.
Swift (CoreML, macOS 14 ou iOS 17). Adicione
.package(url: "https://github.com/loudreader/loudkit", from: "0.1.1") a
Package.swift. Guia.
import LoudKit
let engine = try await Engine.load("loudreader/loudr-1")
let voice = try engine.voice(named: "joe")
try engine.synthesize("Hello from loudkit.", voice: voice, seed: 7).saveWav("hello.wav")
Go (ONNX Runtime). go get github.com/loudreader/loudkit/go@v0.1.1.
Guia.
eng, err := loudkit.Load("loudreader/loudr-1")
if err != nil { log.Fatal(err) }
defer eng.Close()
v, err := eng.Voice("joe")
if err != nil { log.Fatal(err) }
res, err := eng.Synthesize("Hello from loudkit.", v, loudkit.Options{Seed: 7})
if err != nil { log.Fatal(err) }
if err := res.SaveWav("hello.wav"); err != nil { log.Fatal(err) }
Rust (ONNX Runtime). cargo add loudkit@0.1.1.
Guia.
use loudkit::{Engine, Options};
let mut engine = Engine::load("loudreader/loudr-1")?;
let voice = engine.voice("joe")?;
let options = Options { seed: 7, ..Default::default() };
engine.synthesize("Hello from loudkit.", &voice, &options)?.save_wav("hello.wav")?;
TypeScript (ONNX Runtime, Node 20). npm install loudkit@0.1.1.
Guia.
import { Engine } from "loudkit";
const engine = await Engine.load("loudreader/loudr-1");
const voice = engine.voice("joe");
(await engine.synthesize("Hello from loudkit.", voice, { seed: 7 })).saveWav("hello.wav");
await engine.close();
Go e Rust precisam de libonnxruntime na máquina (brew install onnxruntime,
ou uma compilação dos lançamentos do ONNX Runtime); os guias indicam onde cada
porta procura por ele. O mesmo texto, voz e semente geram os mesmos tokens de fala em todos
os cinco idiomas.
Dois modelos
loudreader/loudr-1 é o padrão e roda em todos os backends e em todos os
idiomas. loudreader/loudr-1-turbo é mais rápido, com um pequeno custo em
naturalidade, e na versão 0.1.1 roda nos cinco SDKs. A string passada
para load é toda a escolha:
Escolhendo um modelo.
Vozes
A galeria de vozes reproduz todas as 28 vozes ao lado da gravação da qual cada uma foi treinada. Inglês, espanhol, francês, alemão, italiano, polonês, português, holandês, sueco e dinamarquês — dez vozes em inglês e duas para cada outro idioma. VOICES.md registra a fonte, a licença e a base de consentimento de cada uma; elas vêm de gravações doadas para tecnologia de fala ou de corpora CC0 e CC-BY.
Avaliamos o inglês de ouvido e não falamos os outros nove idiomas bem o suficiente para julgá-los. Se você fala, por favor ouça e nos diga o que soa errado.
Clone uma voz
A partir de uma gravação sua ou com permissão de uso, cinco a dez segundos de um único falante:
pip install "loudkit[torch,audio,enroll,hub]"
loudkit clone my-recording.wav --checkpoint loudreader/loudr-1 --name my-voice --language en
loudkit speak --voice voices/my-voice.safetensors "Now in a cloned voice." -o cloned.wav
O resultado é um perfil portátil de cerca de 150 KB, não outra cópia do
modelo. Em Python, o mesmo caminho é lk.enroll(...); toda porta tem enroll.
Veja Clonando uma voz
e Uso responsável.
Velocidade medida
| caminho | hardware | loudr-1 | loudr-1-turbo |
|---|---|---|---|
| motor PyTorch dividido* | Apple M3 Pro | 3.29x | 5.77x |
| Swift, gerador nativo mais renderizador CoreML | Apple M3 Pro | 2.49x | 3.44x |
| ONNX Runtime, provedor de CPU | Apple M3 Pro | 1.14x | 1.59x |
| PyTorch com gráficos CUDA | RTX 3090 | 8.55x | 13.05x |
| PyTorch com gráficos CUDA | Jetson Orin Nano | 1.85x | 2.50x |
* "Dividido" descreve a colocação do dispositivo, não um modelo ou checkpoint diferente. O gerador de tokens roda na CPU enquanto o renderizador de mel e vocoder roda na GPU da Apple via MPS. Janelas adjacentes podem se sobrepor entre os dois dispositivos.
Mais alto é mais rápido, e 1.0x significa tempo real. Cada linha foi medida na versão 0.1.1 (2026-09-06, ambos os modelos): as linhas da Apple em um laptop em uso comum, as linhas da NVIDIA nas peças nomeadas, com a mesma passagem, voz e semente. As linhas A100, L4 e T4 estão na página de benchmark.
Para cargas de trabalho em lote, o gerador de tokens atinge 16.7x de throughput agregado no lote 1 e 57.3x no lote 64 na RTX 3090 com loudr-1, e 42.0x a 155.0x com loudr-1-turbo. O maior resultado medido é 223.6x, turbo em um A100 no lote 64 (85.3x com loudr-1), medido na versão 0.1.1. São números de throughput apenas do gerador, não latência de solicitação única ou RTF de ponta a ponta. Comandos completos, hardware e ressalvas estão em Benchmarks.
Integrações
Para um processo que mantém um motor aquecido em vez de pagar o custo de carga por chamada. Os contratos estão em Servidor e agentes.
loudkit serve: um servidor HTTP com rotas próprias do loudkit e um/v1/audio/speechcompatível com OpenAI, com streaming via Server-Sent Events. Agentes que falam a API de fala da OpenAI, entre eles Hermes Agent e OpenClaw, conectam-se apenas com configuração.loudkit serve --grpc: o mesmo motor por trás de um esquema tipado com backpressure.loudkit serve --mcp: um servidor MCP em stdio para hosts de agentes (pré-visualização).- Um módulo Speech Dispatcher para leitores de tela Linux, em
integrations/. - Imagens Docker e compose para o servidor.
WAVs salvos do Python e as respostas do servidor carregam uma nota legível por máquina
sobre como o áudio foi feito, nomeando o modelo, a voz, a semente e o backend e
carregando uma soma de verificação que liga a nota ao som; as portas Go, Rust, JS e Swift
escrevem PCM simples. loudkit escreve essa nota e loudkit verify a lê.
Não são C2PA Content Credentials: nada assina e nenhuma ferramenta C2PA lê.
Escopo
loudkit é uma caixa de ferramentas de inferência, não uma plataforma de fala hospedada. Não fornece contas, cobrança, multi-inquilinos, treinamento de modelo ou controle de emoção. O servidor local espera que você forneça qualquer autenticação voltada ao público, limites de taxa e TLS. Não ajudará com personificação não divulgada, contorno de autenticação de voz ou remoção da nota legível por máquina do áudio gerado. SUPPORTED.md declara o limite.
Documentação
O índice de documentação lista as doze páginas que um usuário precisa: começando, uma página por idioma, escolhendo um modelo, clonagem, texto longo e streaming, servidores, solução de problemas e os dois cartões de modelo. O cartão de modelo cobre linhagem, limites e o que cada download contém.
Licença
O código e o lançamento loudr-1 são
Apache-2.0. O
tokenizador e o codificador de falante mantêm sua licença MIT upstream do Chatterbox.
NOTICE lista cada
componente upstream e licença.