Saltar al contenido principal

Crea tu propia app para reSpeaker Clip con transcripción, diarización y resumen usando el SDK de Python

Introducción

reSpeaker STT Web transforma el reSpeaker Clip en un asistente de voz y de reuniones inteligente con IA, conectando hardware de audio embebido con tecnologías modernas web y de IA en la nube. Usando BLE o Wi‑Fi, sincroniza continuamente las grabaciones desde el dispositivo y las procesa mediante potentes canalizaciones de IA de voz y lenguaje. Con flujos de trabajo dedicados para transcripción de voz, diarización de hablantes y resúmenes de reuniones generados por IA, los usuarios pueden convertir conversaciones en información estructurada y accionable. Desarrollado con Python y una arquitectura modular, el proyecto proporciona una base flexible para que desarrolladores e ingenieros embebidos creen aplicaciones de voz e IA de próxima generación con el reSpeaker Clip.

pir

Cómo funciona

  1. Conéctate al Clip por BLE (predeterminado) o WiFi.
  2. Elige una pestaña y pulsa Iniciar. El audio se transmite desde el dispositivo en segundo plano mientras graba (sincronización continua, igual que la herramienta original clip-web). La pestaña desde la que iniciaste decide la canalización que se ejecuta sobre esta grabación.
  3. Detén la grabación. Una vez que termina la sincronización final, la app:
    • codifica el audio combinado a .ogg (Opus),
    • lo convierte a un .wav mono de 16 kHz (mediante PyAV, no se necesita instalación separada de ffmpeg),
    • Pestaña Transcription: envía el .wav a Groq y recibe texto plano de vuelta.
    • Pestaña Diarization: envía el .wav a Speechmatics con diarization: "speaker", obtiene la transcripción JSON a nivel de palabra y la agrupa en turnos de hablante (S1, S2, ...).
    • Pestaña Summary: envía el .wav a Groq para transcripción y luego pasa la transcripción a la API de chat de Groq (openai/gpt-oss-20b) para generar minutas de reunión estructuradas (título, puntos clave, tareas, decisiones).
    • envía el resultado al navegador a través del WebSocket existente.
  4. Cada pestaña tiene su propia lista de "Recordings" (filtrada por la canalización bajo la cual se grabó la sesión), con reproducción y un botón Process/Re-run por grabación.

Claves de API

Cada pestaña tiene su propia tarjeta de Settings: clave de Groq en las pestañas Transcription y Summary (compartida, se configura una vez y la usan ambas), clave de Speechmatics en la pestaña Diarization. Nada está codificado de forma fija ni se sube al repositorio. Las claves viven en memoria durante la vida del proceso del servidor. Marca "Remember on this machine" para guardarlas también en app/settings.local.json (incluido en .gitignore) para que sobrevivan a un reinicio.

  • Groq: obtén una clave en https://console.groq.com — se usa tanto para transcripción (whisper-large-v3-turbo, llamada síncrona única y rápida) como para resumen (openai/gpt-oss-20b chat completions).
  • Speechmatics: obtén una clave en https://portal.speechmatics.com — usa la API REST por lotes con diarization: "speaker" (enviar → sondear → obtener transcripción JSON → agrupar en turnos de hablante), punto de operación enhanced por defecto. Consulta Batch diarization en su documentación.

Estructura del proyecto

respeaker-stt-web/
├── clip/ # vendored Clip SDK (BLE/WiFi device control)
├── app/
│ ├── main.py # FastAPI app: device control + recording + pipeline orchestration
│ ├── 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() — plain text
│ │ └── speechmatics_provider.py # transcribe() + diarize() — speaker turns
│ └── static/
│ └── index.html # UI — three tabs, each with recording controls, settings, results
├── recordings/ # synced audio + meta.json + transcript.json per session (gitignored)
└── requirements.txt

Requisitos

  • Python 3.10+
  • No se necesita instalación separada de ffmpeg: la conversión a WAV usa PyAV (av en PyPI), que incluye sus propias bibliotecas de códecs integradas, también en Windows
  • Un dispositivo reSpeaker Clip emparejado (BLE) para la grabación real; esta parte no se puede probar sin el hardware

Configuración

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

Luego abre http://localhost:5000.

Para transporte por WiFi en lugar de BLE:

python app/main.py --transport wifi --wifi-host 192.168.4.1 --wifi-port 8089

Descripción general de la interfaz

Transcription

Añade tu clave de API de Groq. Pulsa el botón de grabación y, cuando quieras detenerla, pulsa stop.

pir

Diarization

Añade tu clave de API de Speechmatics. Pulsa el botón de grabación y, cuando quieras detenerla, pulsa stop.

pir

Summary

Añade tu clave de API de Groq. Pulsa el botón de grabación y, cuando quieras detenerla, pulsa stop.

pir

Soporte técnico y debate sobre el producto

Gracias por elegir nuestros productos. Estamos aquí para ofrecerte distintos tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.

Loading Comments...