Crie seu próprio app para reSpeaker Clip com Live STT, Transcrição, Diarização e Resumo usando o SDK Python
Introdução
reSpeaker STT Web transforma o reSpeaker Clip em um assistente de voz e de reuniões inteligente com IA, conectando hardware de áudio embarcado com tecnologias modernas de IA na web e na nuvem. Usando BLE ou Wi‑Fi, ele sincroniza continuamente as gravações do dispositivo e as processa por meio de poderosos pipelines de IA de fala e linguagem. Ele também adiciona uma aba Live STT em tempo real que transmite o áudio do microfone do Clip via BLE (modo RTC) e o transcreve para texto enquanto você fala.
Com fluxos de trabalho dedicados para fala‑para‑texto em tempo real, transcrição de fala, diarização de locutor e resumos de reunião gerados por IA, os usuários podem transformar conversas em informações estruturadas e acionáveis — instantaneamente ou depois. Construído em Python e com uma arquitetura modular, o projeto oferece uma base flexível para que desenvolvedores e engenheiros embarcados criem a próxima geração de aplicativos de voz e IA com o reSpeaker Clip.

Como funciona
O app tem quatro abas. A aba Live STT é em tempo real; as outras três gravam no cartão SD e processam depois que você parar.
Live STT (em tempo real, apenas BLE):
- Conecte ao Clip via BLE (varredura automática ou faça a varredura e escolha um dispositivo específico).
- Pressione Start Streaming. O backend envia
AT+START=RTC(sessão ao vivo, nada é gravado no cartão SD) e depoisAT+DOWNLOAD=<session>para iniciar o stream. - O Clip envia um pacote Opus de 20 ms por quadro via BLE (característica File Data).
- O backend decodifica cada pacote para PCM, executa um VAD em camadas (WebRTC + limiar de energia adaptativo) e só envia enunciados de fala completos para o Groq — silêncio nunca é enviado.
- As transcrições são enviadas ao vivo para o navegador por um WebSocket como linhas de texto; um indicador
listening/SPEAKINGmostra o estado do VAD. - Pressione Stop para descarregar o enunciado final e encerrar o stream (
AT+STOP).
Abas de gravar‑e‑processar (BLE ou WiFi):
- Conecte ao Clip via BLE (padrão) ou WiFi.
- Escolha uma aba e clique em Start. O áudio é transmitido do dispositivo em segundo plano enquanto ele grava (sincronização contínua — igual à ferramenta
clip-weboriginal). A aba de onde você iniciou define o pipeline que será executado nessa gravação. - Pare a gravação. Quando a sincronização final terminar, o app:
- codifica o áudio mesclado para
.ogg(Opus), - converte isso para um
.wavmono de 16 kHz (via PyAV — sem necessidade de instalar ffmpeg separadamente), - Aba Transcription: envia o
.wavpara o Groq e recebe texto simples de volta. - Aba Diarization: envia o
.wavpara o Speechmatics comdiarization: "speaker", busca a transcrição JSON em nível de palavra e a agrupa em turnos de fala (S1,S2, ...). - Aba Summary: envia o
.wavpara o Groq para transcrição e depois envia a transcrição para a API de chat do Groq (openai/gpt-oss-20b) para gerar atas de reunião estruturadas (título, pontos principais, itens de ação, decisões). - envia o resultado para o navegador pelo WebSocket existente.
- codifica o áudio mesclado para
- Cada aba tem sua própria lista de "Recordings" (filtrada pelo pipeline sob o qual a sessão foi gravada), com reprodução e um botão Process/Re-run por gravação.
Sessões de Live STT nunca são armazenadas no cartão SD, portanto não aparecem nas listas de Recordings — a transcrição é o resultado.
Chaves de API
Cada aba tem seu próprio cartão de Settings — chave Groq nas abas Live STT, Transcription e Summary (compartilhada — defina uma vez, utilizável pelas três), chave Speechmatics na aba Diarization. Nada é codificado em hard nem versionado. As chaves ficam na memória durante a vida do processo do servidor. Marque "Remember on this machine" para também persistir em app/settings.local.json (ignorado pelo git), para que sobrevivam a uma reinicialização.
- Groq: obtenha uma chave em https://console.groq.com — usada para Live STT (
whisper-large-v3-turbo, chamadas por enunciado), transcrição (whisper-large-v3-turbo) e sumarização (compleções de chatopenai/gpt-oss-20b). - Speechmatics: obtenha uma chave em https://portal.speechmatics.com — usa a API REST em lote com
diarization: "speaker"(enviar → consultar → buscar transcrição JSON → agrupar em turnos de fala), ponto de operaçãoenhancedpor padrão. Veja Batch diarization na documentação deles.
Estrutura do projeto
respeaker-stt-clip-rtc/
├── clip/ # vendored Clip SDK (BLE/WiFi device control, RTC stream callbacks)
├── app/
│ ├── main.py # FastAPI app: device control + recording + live STT + pipelines
│ ├── stream.py # RTCStreamManager: BLE RTC stream -> decode -> VAD -> Groq -> WebSocket
│ ├── opus_decode.py # PyAV raw-Opus -> int16 PCM decoder (48 kHz, 20 ms frames)
│ ├── vad.py # StreamVAD: WebRTC VAD AND adaptive energy gate + hangover/pre-roll
│ ├── demo_sample_packets.json # bundled Opus packets for no-hardware demo mode
│ ├── audio_convert.py # PyAV-based conversion to 16kHz mono WAV
│ ├── config.py # runtime settings (per-provider API keys)
│ ├── llm/
│ │ └── groq_summarizer.py # Groq chat summarization via openai/gpt-oss-20b
│ ├── stt/
│ │ ├── base.py # STTProvider interface
│ │ ├── groq_provider.py # transcribe() / transcribe_bytes() — plain text
│ │ └── speechmatics_provider.py # transcribe() + diarize() — speaker turns
│ └── static/
│ └── index.html # UI — Live STT + three record tabs, settings, results
├── reference/web/ # original browser-only Web Bluetooth streaming reference
├── docs/ # project documentation
└── requirements.txt
Cada gravação sincronizada recebe um meta.json (gravado no início da gravação, registra a qual pipeline a sessão pertence) e, depois de processada, um transcript.json. A saída de Live STT é transmitida ao vivo e não é persistida em disco.
Requisitos
- Python 3.10+
- Não é necessário instalar ffmpeg separadamente — a conversão para WAV usa PyAV (
avno PyPI), que traz suas próprias bibliotecas de codec empacotadas, inclusive no Windows webrtcvad-wheelspara a camada de VAD WebRTC (reverte automaticamente para o limiar de energia adaptativo se não conseguir ser instalado)- Um dispositivo reSpeaker Clip pareado (BLE) para a gravação real — esta parte não pode ser exercitada sem o hardware
- Para a aba Live STT: um Clip executando firmware com suporte a streaming ao vivo RTC (
AT+START=RTC) e transporte BLE (streaming RTC é apenas via BLE)
Configuração
git clone https://github.com/KasunThushara/clip-sdk-python-usage.git && cd clip-sdk-python-usage
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python app/main.py
Depois abra http://localhost:5000.
Para transporte via WiFi em vez de BLE (apenas abas de gravação — Live STT requer BLE):
python app/main.py --transport wifi --wifi-host 192.168.4.1 --wifi-port 8089
Visão geral da interface
Live STT (streaming RTC)

O cartão do dispositivo na parte superior é compartilhado entre todas as abas — faça a varredura por Clips próximos, escolha o seu na lista suspensa e então pressione Connect. Se Connect falhar com um erro de pareamento BLE no Windows, use Re-pair & Connect para limpar o vínculo obsoleto.
- Adicione sua chave de API Groq no cartão de configurações de Live STT.
- Conecte ao Clip (varredura automática BLE ou um dispositivo que você escolheu após a varredura).
- Pressione Start Streaming. Fale — cada enunciado (fala seguida de silêncio) é transcrito e aparece na caixa de transcrição em tempo real. O indicador mostra
listening/SPEAKING. - Ajuste os controles deslizantes de agressividade do WebRTC VAD (0–3) e limiar de energia (dB) para calibrar quão agressivamente o silêncio é rejeitado.
- Pressione Stop para descarregar qualquer enunciado pendente e encerrar o stream.
Sem hardware à mão? Marque Demo (no device) — pacotes Opus incluídos são reproduzidos pelo mesmo pipeline de decodificação → VAD → Groq, para que você possa verificar as chaves e o ajuste primeiro.
Transcription
Adicione sua chave de API Groq. Pressione o botão de gravação e, quando quiser parar, pressione stop.

Diarization
Adicione sua chave de API Speechmatics. Pressione o botão de gravação e, quando quiser parar, pressione stop.

Summary
Adicione sua chave de API Groq. Pressione o botão de gravação e, quando quiser parar, pressione stop.

Suporte técnico e discussão sobre o produto
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes formas de suporte e garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.