Habr AI→ original

Repka-Pi 4 recebe síntese de fala local com Piper e FastAPI, sem GPU e com inicialização automática

Foi montado para a Repka-Pi 4 um sintetizador de fala local baseado em Piper e FastAPI. O sistema funciona sem GPU, aceita requisições HTTP de clientes…

Processado por IA de Habr AI; editado por Hamidun News
Repka-Pi 4 recebe síntese de fala local com Piper e FastAPI, sem GPU e com inicialização automática
Fonte: Habr AI. Colagem: Hamidun News.
◐ Ouvir artigo

A Repka-Pi 4 demonstrou um cenário funcional para síntese de fala local usando o mecanismo de rede neural Piper. Mesmo em um computador de placa única com 2 GB de RAM e sem GPU, a placa pode sintetizar texto via HTTP, iniciar automaticamente quando o sistema é inicializado e servir dispositivos externos.

Por que isso é interessante

A história aqui não é sobre mais uma API em nuvem, mas sobre levar TTS diretamente para um computador local compacto. O autor mostra que um computador de placa única moderno já consegue lidar não apenas com scripts simples, mas também com síntese de fala em russo de qualidade aceitável. Para cenários onde privacidade, autonomia e operação sem internet são importantes, isso é crítico: dispositivos de casa inteligente, quiosques de voz, brinquedos, assistentes locais e bancos de testes educacionais podem falar por si mesmos, sem enviar texto para serviços externos.

É particularmente importante contrastar duas abordagens. O leve eSpeak NG requer praticamente nenhum recurso e inicia imediatamente, mas soa muito mecânico. O Piper, por outro lado, usa um modelo de rede neural em formato ONNX e oferece uma voz muito mais natural, mesmo sem um acelerador gráfico. Isso torna a Repka-Pi 4 não apenas uma placa para experimentos, mas uma base para interfaces reais onde a síntese precisa ser inteligível e tolerável ao ouvido, não apenas formalmente funcional.

Do que a solução consiste

O esquema prático é montado a partir de componentes abertos que podem ser implantados localmente. Como opção básica, o autor usa eSpeak NG, e para som de qualidade superior — Piper TTS. O Piper é instalado através de um ambiente Python, após o qual um modelo de voz em russo é carregado na placa. Depois disso, a síntese pode ser iniciada pela linha de comando ou diretamente de Python, passando texto para um fluxo e enviando imediatamente o áudio para reprodução.

"Esta é a voz de um robô dos anos 80" — é assim que o artigo descreve o resultado do eSpeak NG comparado ao

Piper.

  • eSpeak NG — a opção mais leve para placas com restrições rigorosas de recursos.
  • Piper TTS — síntese de rede neural baseada em VITS e ONNX com fala notavelmente mais natural.
  • Servidor FastAPI — interface HTTP para clientes externos que enviam texto para síntese.
  • Fila e thread separada — um mecanismo que impede o bloqueio do cliente até que a síntese seja concluída.
  • Serviço systemd — inicialização automática do TTS após ligar a placa.

O artigo discute separadamente dois modos de operação do Piper: através da gravação de arquivo WAV e através de saída de streaming sem arquivo intermediário. A segunda opção é particularmente útil para cenários embarcados porque elimina operações desnecessárias de disco e acelera o caminho do texto para o som. O autor também mostra como usar aplay e sounddevice, e observa que avisos sobre subutilização de buffer de áudio ou falta de GPU na Repka-Pi 4 não impedem alcançar um resultado adequado para uso prático.

Como o servidor funciona

A parte-chave do projeto é um servidor de síntese de fala baseado em FastAPI. Ele é executado na própria Repka-Pi 4, escuta solicitações HTTP e recebe texto pela rota POST /say. Depois disso, o servidor não faz o cliente esperar até que toda a frase seja sintetizada. Em vez disso, a tarefa é colocada em uma fila, e uma thread de fundo separada lida com a chamada do Piper, montagem do fluxo PCM e saída de áudio através do sounddevice. Para sistemas de automação, isso é mais conveniente do que uma chamada síncrona, que travaria toda a lógica do dispositivo.

Existe também uma rota de serviço GET /status: através dela você pode verificar se o servidor está livre, se a reprodução está acontecendo no momento e quantas tarefas já estão na fila. O modelo é carregado uma vez quando a aplicação é iniciada, portanto não precisa ser inicializado a cada requisição. Para operação contínua, um arquivo de unidade systemd é fornecido: ele inicia o serviço após a inicialização do sistema, ativa a reinicialização em falhas e permite visualizar logs através do journalctl. De acordo com a descrição do autor, o atraso antes do início da síntese varia de um a vários segundos e depende do comprimento do texto.

O que isso significa

O valor prático deste caso de uso é que uma interface de voz local não requer mais hardware caro ou conectividade constante com a nuvem. A Repka-Pi 4 já pode ser usada em automações residenciais, terminais, robôs e projetos educacionais, e com o surgimento de placas mais poderosas, devemos esperar TTS offline mais rápido, uma combinação de síntese com reconhecimento de fala e assistentes em russo verdadeiramente funcionais trabalhando inteiramente no dispositivo. Para o mercado DIY em russo, este é um exemplo raro de como um stack pronto pode ser rapidamente transferido de um artigo para um protótipo funcional.

ZK
Hamidun News
Notícias de AI sem ruído. Seleção editorial diária de mais de 400 fontes. Produto de Zhemal Khamidun, Head of AI na Alpina Digital.

Quer parar de ler sobre IA e começar a usar?

AI News é um feed curado de notícias de IA. A Hamidun Academy ensina você a usar IA no trabalho.

O que você acha?
Carregando comentários…